GWT против Flex против? [закрыто]

Когда вы используете арифметический оператор, операнды проходят через два преобразования.

Целочисленные акции: если int может представлять все значения типа, то операнд продвигается до int. Это относится как к short, так и к unsigned short на большинстве платформ. Преобразование, выполняемое на этом этапе, выполняется на каждом операнде индивидуально, независимо от другого операнда. (Есть больше правил, но это тот, который применяется.)

Обычные арифметические преобразования: если вы сравниваете unsigned int с signed int, так как ни один из них не включает весь диапазон другого, и оба имеют одинаковый ранг, то оба они преобразуются в тип unsigned. Это преобразование выполняется после изучения типа обоих операндов.

Очевидно, что «обычные арифметические преобразования» не всегда применяются, если не существует двух операндов. Вот почему существуют два набора правил. Например, один из них - это то, что операторы сдвига << и >> не выполняют обычных арифметических преобразований, поскольку тип результата должен зависеть только от левого операнда (поэтому, если вы видите кого-то типа x << 5U, тогда U означает «ненужное»).

Разбивка: предположим, что типичная система с 32-битным int и 16-битным коротким.

int a = -1;         // "signed" is implied
unsigned b = 2;     // "int" is implied
if (a < b)
    puts("a < b");  // not printed
else
    puts("a >= b"); // printed
  1. Сначала поддерживаются два операнда. Поскольку оба являются int или unsigned int, промо-акции не выполняются.
  2. Затем два операнда преобразуются в один и тот же тип. Поскольку int не может представлять все возможные значения unsigned, а unsigned не может представлять все возможные значения int, нет очевидного выбора. В этом случае оба преобразователя преобразуются в unsigned.
  3. При преобразовании из подписанного в unsigned 232 повторно добавляется к значению с подписью до тех пор, пока оно не окажется в диапазоне значения без знака.
  4. Таким образом, сравнение становится if (4294967295u < 2u), что является ложным.

Теперь попробуем это с помощью short:

short c = -1;          // "signed" is implied
unsigned short d = 2;
if (c < d)
    puts("c < d");     // printed
else
    puts("c >= d");    // not printed
  1. Во-первых, продвигаются два операнда. Поскольку оба они могут быть точно представлены int, они продвигаются до int.
  2. Затем они преобразуются в один и тот же тип. Но они уже одного типа, int, поэтому ничего не сделано.
  3. Таким образом, сравнение становится if (-1 < 2), что верно.

Написание хорошего кода : Есть простой способ поймать эти «gotchas» в вашем коде. Просто всегда компиляция с включенными предупреждениями и исправление предупреждений. Я предпочитаю писать такой код:

int x = ...;
unsigned y = ...;
if (x < 0 || (unsigned) x < y)
    ...;

Вы должны следить за тем, чтобы любой код, который вы пишете, не запускался в другой подписанный vs. unsigned gotcha: signed overflow. Например, следующий код:

int x = ..., y = ...;
if (x + 100 < y + 100)
    ...;
unsigned a = ..., b = ...;
if (a + 100 < b + 100)
    ...;

Некоторые популярные компиляторы оптимизируют (x + 100 < y + 100) до (x < y), но это история за другой день.

Сноска: обратите внимание, что если для int подразумевается signed, short, long и long long, это НЕ подразумевается для char. Вместо этого это зависит от платформы.

37
задан Limbic System 8 January 2009 в 19:56
поделиться

11 ответов

Я только мягко знаком с Flex, но много лет работал с GWT. Мы должны были принять очень похожее решение несколько лет назад (Flash по сравнению с GWT), но по разным причинам. В конце мы видели много преимуществ GWT по Flash (Многие из которых относятся к Flex):

  • Не у всех наших клиентов есть флэш-память, числа проникновения от Adobe бесполезны, Вам нужно Ваше собственное (который мы имеем) видеть то, что на самом деле имеют Ваши клиенты. В корпоративном и образовательные рынки проникновение на самом деле намного ниже, чем высокие 90-е, которые заключает в кавычки Adobe.

  • GWT является действительно перекрестным браузером и совместимой платформой (Linux, Mac, Windows, Android, iPhone, и т.д., и т.д.), тогда как флэш-память никогда не будет. Вы не можете заботиться об этом, но мы сделали.

  • Flex является proprietry Adobe Technology, тогда как GWT полностью с открытым исходным кодом и настраиваемый

  • , GWT интегрируется с DOM и всем остальным на Вашей странице, намного легче, чем флэш-память и Flex делают.

  • GWT кодируется в Java, и все мы знаем, что Java чрезвычайно хорошо

Обращается к Вашим отдельным моментам:

*  futureproof

Ничто не действительно соответствует требованиям завтрашнего дня, но я чувствую, что и GWT и Flex довольно соответствовали бы требованиям завтрашнего дня. Возможно, GWT крошечный бит больше, потому что это - открытый исходный код.

* works on all major browsers

GWT работает в Firefox (и весь браузер геккона), Safari (и все браузеры WebKit), IE и Opera. Flex работает во всех браузерах, но только если Flash поддерживается, таким образом, я сказал бы, что GWT преуспевает там.

* fast & responsive user experience

На платформах, где это поддерживается, Flex собирается уничтожить мертвых GWT для пользовательского опыта. Вы просто не можете конкурировать с флэш-памятью когда дело доходит до гладкости и гладкости.

* code should be unit testable

Оба - легко единица, тестируемая

* code must be maintainable

, Когда кодировано хорошо, оба удобны в сопровождении

* speed & ease of development

пока Ваше знакомое с ними, я сказал бы, что это - большая часть множества.

* supports vector graphics of some sort (SVG a plus)

я не могу говорить за Flex, но GWT поддерживает векторную графику через SVG через сторонние библиотеки.

32
ответ дан rustyshelf 8 January 2009 в 19:56
поделиться
  • 1
    @Chuck: Rational псевдоним для Ratio Integer, и (%) возвраты Ratio из любого типа его операнды, таким образом применение его к два Integer должно произвести Rational (если I' m неправильно понимающий). Моя проблема состояла в том, что я давал его Int и производил Ratio Int (который является действительно не Rational). – Wyzard 18 July 2010 в 22:50

Sun недавно запустил новую технологию под названием JavaFX для этих видов УСТЬЕВ РЕКИ. Можно хотеть проверить его (javafx.com). Это, предполагают для работы Java 5 или лучше но это не будет определенно иметь вида клиентского проникновения, которое делает Flash. Я думаю однако, учитывая Ваши требования для тестирования, что эта технология не может быть соответствующей в это время.

кроме того, я думаю, что Troy Gilbert совершил ошибку в своем сообщении. А именно, он, кажется, указывает, что приложение GWT будет работать (клиентом) в Java. Я почти уверен, что приложение GWT записано сначала в Java, и затем GWT скомпилирует это в библиотеку JavaScript, которую выполняет клиент.

2
ответ дан Hayden Jones 8 January 2009 в 19:56
поделиться
  • 1
    На моей машине это печатает: 1273221858765: верный... 1273221859140: истинные 1273221859156: keepRunning является ложью, Столь же ожидаемой. Там пути состоят в том, чтобы на самом деле вызвать проблему видимости? То, что я ищу, является отрывком, который на самом деле показывает проблему и не имеет ее только в теории. – Joe23 7 May 2010 в 08:48

Я не знаком с GWT, но я очень знаком с Flex. Даже при том, что GWT основан на Java (и он кажется, что Вы - в основном магазин Java), я рекомендовал бы Flex на основе Ваших перечисленных интересов:

  • Futureproof - полномочия Flash YouTube и огромный процент мультимедиа в сети... они встроили его в игровые приставки, и Intel встраивает его в абонентские установки. Это будет здесь в течение долгого, долгого времени, и Adobe всегда поддерживал 100% назад совместимость с их Flash player.

  • Работы над всеми главными браузерами - да. И с Flash Player 10, который включает системы Linux также. И с очень минимальными администраторскими головными болями (путь меньше, чем Java, по-моему).

  • Быстрый & быстро реагирующий пользовательский опыт - да, хотя Java может быть быстрее в некоторых сценариях. Flash оптимизирован для векторного рендеринга, поэтому так как это - Ваша цель, это может быть, дают Вам лучшую производительность, чем Java.

  • Код должен быть тестируемой единицей - да, видеть FlexUnit.

  • Код должен быть удобным в сопровождении - определенно. AS3 является серьезным языком, не игрушечным языком сценариев. Это будет очень знакомо пользователям C# или Java.

  • Скорость & простота разработки - для того, что Вы делаете, Вы будете в состоянии найти десятки примеров точно, что Вы описали: изменение масштаба и панорамирование Google Maps - как векторные изображения. Ядро времени выполнения является хорошо разработанным графическим механизмом, так создание приложения интерактивных график является своей естественной тяжелой работой.

  • какая-то векторная графика Поддержек (SVG плюс) - очевидно, Flash делает это исходно. SVG поддерживается на этапе компиляции (можно скомпилировать в SVG, но Вы не можете проанализировать SVG во времени выполнения). Существуют наборы инструментальных средств, доступные, это преобразует SVG в SWF для Вас во времени выполнения.

[только 110] причина я видел бы использование GWT, должен будет сохранить Ваш Java магазина на сервере и клиенте..., но с другой стороны, Вы ищете лучшую технологию для задания, правильно? В этом случае я сказал бы, что Flash (и, в частности, платформа Flex) подходит лучше всего для того, что Вы желаете выполнить.

15
ответ дан Troy Gilbert 8 January 2009 в 19:56
поделиться
  • 1
    @Wyzard: можно преобразовать сюда использование fromIntegral снова... It' s довольно универсальный. – Dario 19 July 2010 в 11:43

Я смещаюсь к Flex, так как я делал разработку Flash/Flex с 2000. Я думаю для ответа на вопрос, хотя, он действительно сводится к уровню интерактивности и сложности, Вы хотите достигнуть.

Flex собирается позволить Вам сделать вещи, которые были бы почти невозможны в среде JavaScript (Ajax ASP.NET, jQuery, GWT), такой как простая 3-я графика. Создание сложной интерактивности действительно тривиально в Flex. Также это очень быстро и может обработать много анимированных объектов за один раз. Flex может связаться беспрепятственно с.NET или Java с помощью веб-сервисов. Оборотная сторона использования Flex - то, что похоже на встраиваемое приложение на Вашем веб-сайте, а не чем-то, что тесно интегрируется.

, Если бы Вы собираетесь придерживаться подхода JavaScript, обычно я предложил бы использовать что-то агностик языка как jQuery. Но так как у Вас уже есть опыт GWT, который может работать хорошо на Ваш проект. Оборотная сторона - то, что GWT в конце является все еще JavaScript, таким образом, Вы собираетесь быть ограниченными скоростью и интерактивностью того, что возможно в браузере.

2
ответ дан DavGarcia 8 January 2009 в 19:56
поделиться

В то время как iPhone и Android не поддерживают флэш-память ВСЕ ЖЕ, необходимо также отметить, что Google создает приложения, предназначенные для мобильного телефона. Они делают это, потому что экран на мобильных устройствах значительно меньше тогда типичный ноутбук/рабочий стол. Поэтому отсутствие поддержки флэш-памяти является надуманным вопросом, так как целевое приложение обеспечивает лучший пользовательский опыт.

0
ответ дан 8 January 2009 в 19:56
поделиться
  • 1
    Это даже не близко подходит к ответу на мой вопрос. – Joe23 7 May 2010 в 08:27

Я знаю, что Вы спросили о GWT по сравнению с Flex, но если у Вас есть мнение по окончательному решению, необходимо серьезно рассмотреть, переехать ли от Ajax и ASP.NET. Несмотря на то, что заявляют Adobe, Microsoft и Sun, УСТЬЯ РЕКИ (Богатые интернет-приложения) еще не готовы к показываемому в прайм-тайм опыту браузера кроме ограниченной формы (как видеоплееры).

А полноценное приложение, записанное для браузера, в собственной технологии браузера , собирается дать самый лучший опыт пользователю, а также имеет большинство ресурсов разработки, доступных для поддержания его.

ASP.NET не идет никуда. Ни один не Java или Flex. Но для чистой досягаемости, самого лучшего пользовательского опыта и пригодности для обслуживания (из-за там того, чтобы просто быть намного более доступными доступными ресурсами программирования) Вы не можете победить собственное приложение на базе браузера.

ASP.NET MVC чисто веб-и очень Ajaxy. Вы могли бы проверить его. Это подобно Ruby on Rails (без направляющих), и разработчики (даже devs в новинку для ASP.NET) вполне взяты с ним.

-1
ответ дан CLaRGe 8 January 2009 в 19:56
поделиться
  • 1
    Конечно, это - замечательная книга, и я считал его. То, что я задавался вопросом, было, если возможно на самом деле , демонстрируют такие проблемы. Это могло помочь убедить людей, которые не читают книги о параллелизме Java. Вероятно, мой вопрос должен был быть более точным. – Joe23 7 May 2010 в 08:42

Моя компания сталкивалась с тем же решением приблизительно один год назад. Вы услышали о GXT http://extjs.com/products/gxt/? Мы в конечном счете выбрали GXT. Как разработчик.NET, делая переход от.NET до GXT было большим. Мы разработали общекорпоративную программу управления с GXT/GWT. Оборотные стороны - то, что GXT разрабатывается намного меньшей командой по сравнению с Flex, и сообщество не рядом как большое. Однако это обеспечивает впечатляющий опыт в браузере. Проверьте его.

0
ответ дан JP Richardson 8 January 2009 в 19:56
поделиться
  • 1
    Но та книга настоятельно рекомендована так или иначе при выполнении параллельного программирования в Java. – Jesper 7 May 2010 в 08:33

Еще один момент, который необходимо отметить, - то, что ни iPhone, ни Android в настоящее время не поддерживают Flash. Намного больше людей ожидает получать доступ к веб-приложениям по своим телефонам.

8
ответ дан 9 January 2009 в 05:56
поделиться
  • 1
    Здорово! Большое спасибо. Этот пример будет работать над моим Windows Laptop и над Солярисом 10 с клиентом-vm, но сбои (т.е. работает навсегда) на Солярисе с сервером-vm и на 64-разрядном Linux. Точно, что я искал. Лучшая вещь, что на Солярисе, переключающемся между - client/-сервер делает ее или всегда перестали работать или всегда работают. Это должно убедительно доказать точку зрения в представлении.:) – Joe23 7 May 2010 в 21:17

Я был частью проекта, который использовал GWT, и мне это понравилось, тем более что Java - мой основной язык программирования выбор. Я не использовал Flex, поэтому я только даю вам информацию о том, что я испытал с GWT. Чтобы прокомментировать некоторые ваши требования

* будущее - GWT существует уже несколько лет и постоянно поддерживается Google.

* работает во всех основных браузерах - Если вы использовали GWT, кросс-браузерное программирование никогда не было намного проще. GWT сделает это за вас!

* код должен проверяться модулем - да, вы можете выполнить модульное тестирование GWT, его также легко отладить GWT.

* скорость и простота разработки - Ajax сделан намного менее сложным благодаря GWT. Уже одно это может ускорить ваше развитие RIA.

Помимо этого, я просто должен сказать, что я люблю их группу Google! Он очень активен, и вы можете найти множество людей, которые могут помочь вам в случае, если вы застряли с чем-то.

3
ответ дан 27 November 2019 в 04:47
поделиться

Я использовал оба технологии в течение некоторого времени.

Будут в будущем - оба они будут успешны, я думаю, но каждая технология будет предпочтительна в разных ситуациях. Например, Flex в крупных (в основном интрасетах) предприятиях с желаемым рабочим столом, как UI (Flex можно использовать в верхней части любой серверной платформы (JVM, .NET, PHP, Ruby, ColdFusion)). В противном случае GWT в противном случае будет доминирующим в малом до среднего приложения с традиционной JVM Backend (Tomcat + Spring и т. Д.)

работает на всех основных браузерах - оба не проблематичны таким образом. FLEX ABSOLUTLY Отлично, когда плагин Flash установлен, не нужно решить любую совместимость кросс-браузера (конечно ... браузера пассивна, когда Flash приложение работает :). Я помню, что у нас были незначительные проблемы с GWT и Tradional Dealblebiker IE6, но ничего не ужасно ...

Быстро и ответственный пользовательский опыт - оба являются вершинами в их категории. FLEX Думаю абсолютно вершину всех решений RIA (возможно, Silverlight, Java FX может быть только конкурентами в Richnest), особенно интегрирован с ЖК-дисплеями с простыми функциями, такими как управление данными, реальные наборы данных сервера и т. Д. GWT является одним из верхней части в категории Ajax Framework. Само более богатые и сложные пользовательские пользователи, тем больше причин использования у вас есть. Intepreet JavaScript в любом случае не может быть быстрее и отзывчивым, а затем скомпилирован ActionScript / SWF.

Код должен быть тестируемым единице - да, они очень реализуются.

Код должен быть поддержан - как отлично, поддержание ActionScript сопоставим с Java (GWT), если вы используете хорошую IDE, например, Flex Builder.

Скорость и простота развития - как идеально, если вы знаете свой персонал. Все зависит от вашего фона. Для типичных Java Curve разработчиков Curve для Flex будет, вероятно, немного сложнее (вам нужно изучить новый долку / время выполнения и, вероятно, новую IDE или, по крайней мере, новое плагин Eclipse IDE :). Некоторые знания Flash - это +, но не требуется, и обычно, как правило, с конкретными задачами, такими как создание собственных компонентов и т. Д.

поддерживает векторную графику (SVG a Plus) - нет проблем, которые я не помню, у меня не слишком много опыта С этим, но я посмотрю на это в будущем, когда FXG будет Finnalized.

Расходы на разработку и развертывание - здесь пробил победитель. Gwt Был разработан Flex, чтобы получить прибыль. Хотя Self - OpenSource, лучшие инструменты (Flex Builder, новый Flash Builder / Catalyst) & Frameworks (LCDS) являются коммерческими и не дешевы. Посмотрите на ЛКД на CPU Pracelist, и вы узнаете, о чем я говорю. С GWT большинство из качественных инструментов / рамки являются оперативными или свободными или свободными. Кроме некоторых продвинутых компонентов, таких как Ext GWT и SmartGwt EE. Очевидно, что вы можете жить без них.

2
ответ дан 27 November 2019 в 04:47
поделиться

Это действительно вопрос яблок / апельсинов. С GWT вы получаете чистоту написания всего на Java. По иронии судьбы, конечный результат никогда не будет похож ни на что, кроме веб-сайта.

С Flex вы можете написать что-нибудь, похожее на приложение. И, что, пожалуй, самое главное, с Flex нет НИЧЕГО, чего нельзя делать программно - ни функционально, ни графически.

Если вы разрабатываете приложения для определенной пользовательской базы, Flex - лучший вариант. Если вы создаете массовую социальную сеть на основе чего угодно, GWT определенно лучший выбор.

1
ответ дан 27 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: