Теперь с GWT 2, каковы преимущества перед калиткой и тому подобным?

Помимо аргумента в пользу простоты Wicket (то есть Wicket - это более простая система, IMHO) и отзывчивости GWT на клиенте (состояние на стороне клиента GWT и JavaScript - потенциально сложный код на стороне клиента) и большего потенциала GWT для масштабирования, что является аргументом в пользу используете GWT поверх Wicket?

Лично я много занимался разработкой Wicket, но только бегло взглянул на GWT очень давно.


person Antony Stubbs    schedule 29.07.2009    source источник


Ответы (9)


В основном преимущества заключаются в том, что GWT - это инструмент для создания клиента на основе javascript, поэтому он лучше всего подходит, если вам нужен клиент на основе javascript.

Wicket сосредотачивается на сервере, и, хотя он позволяет довольно легко встраивать javascript в страницы без состояния, обработка состояния на стороне сервера является более естественным подходом.

Надо заметить, что архитектуры очень разные.

С GWT ваша архитектура превращается в клиент-сервер, толстый клиент в браузере, который обращается к «процедурам» (службам) на сервер, отправляя и получая данные.

В Wicket (и других серверных компонентных фреймворках, таких как JSF и Tapestry) архитектура является более «традиционной» трехуровневой, а отправляемые и получаемые данные - страницы или фрагменты страниц, а не чистые данные.

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

Люди склонны сосредотачиваться на том, «что проще в использовании» (что полностью субъективно, в зависимости от вашего опыта) или «что красивее и имеет больше компонентов», но не следует недооценивать архитектурные различия, которые влияют на ваш подход. необходимо учитывать такие аспекты, как безопасность и масштабируемость.

person tetsuo    schedule 02.10.2009
comment
Я думаю, что одна из распространенных проблем заключается в том, что люди принимают во внимание масштабируемость, но переоценивают свои требования к веб-уровню и упускают из виду его аспекты безопасности. По крайней мере, на моем опыте. - person Eelco; 12.09.2010
comment
Я согласен, большинство людей просто не знают, как обращаться с безопасностью, и верят, что это волшебным образом «случится» где-нибудь с некоторой конфигурацией. Что касается масштабируемости, я думаю, что обе технологии одинаково хорошо справятся с масштабируемостью, не связанной с facebook, но подходы будут разными. И использование неправильного подхода приведет к столь же уродливым проблемам. - person tetsuo; 29.09.2010
comment
Забавно, как со временем изменилось определение традиционного. Много лет назад это означало бы подход клиент-сервер (толстый клиент). До этого это был тупой терминал-сервер (тонкий клиент). Теперь, когда мы вернулись к толстым клиентам с JavaScript, мне интересно, как будет выглядеть следующая архитектура тонких клиентов. - person David Harkness; 12.10.2011

Я участвовал в проекте на основе GWT в течение последних нескольких месяцев. Я был частью команды разработчиков Wicket в течение многих лет, с нетерпением ждал перемен и многого ожидал от GWT (который я всегда рекламировал как еще одну отличную среду Java).

Честно говоря, я разочарован, когда дело доходит до работы с GWT. Я чувствую - фактически вся моя команда - что продуктивность сильно пострадала. Теоретически GWT отличный. Но если учесть причуды и ограничения фреймворка, посредственные сообщения об ошибках (особенно когда дело доходит до ошибок сериализации), длительное время компиляции (где-то от 3 до 10 минут, а наш проект еще даже не такой большой), тот факт, что, когда все сказано и сделано, вам все равно нужно протестировать для всех браузеров и найти настройки и обходные пути, тот факт, что он производит огромную начальную загрузку (почти МБ, которую мы постепенно сокращаем, но с большим усилий) и т. д., я считаю, что с Wicket намного проще и быстрее работать.

Я не ненавижу работать с GWT. Он по-прежнему намного лучше, чем большинство фреймворков Java. Просто я ожидал намного большего от работы с ним; Я даже ожидал, что он будет лучше, чем Wicket. Но, в конце концов, это не имхо. Будем надеяться, что GWT 2.0 улучшит многие вещи, и, надеюсь, вскоре будут исправлены некоторые особенности плагина Eclipse.

person Eelco    schedule 31.01.2010
comment
Имея некоторый (в основном косвенный) опыт работы с GWT 2.0 и UiBinder, я могу подтвердить, что все стало лучше. Я все еще чувствую, что вам нужно много встроенного кода, чтобы делать то, что не сложно сделать с помощью прямого JavaScript. - person Eelco; 12.09.2010

Несколько нечестно сравнивать GWT с калиткой (или аналогичным образом), поскольку на самом деле они происходят из двух разных лагерей. Первый представляет собой структуру для создания интерфейсных приложений JavaScript, а второй - классическую структуру веб-приложений Java.

Таким образом, приведенные ниже пункты - это не столько GWT и калитка, сколько общий список, который был составлен, когда мы решили использовать GWT для расширенного веб-приложения JavaScript / AJAX:

  • скрывает недостатки JavaScript и кроссбраузерной поддержки, позволяя разрабатывать на Java и автоматически компилировать в специфичный для браузера вариант JavaScript (это не полностью верно из-за Закона дырявых абстракций, но это основная причина почему GWT был создан в первую очередь - см. Наслаждаясь ограничениями);
  • Многие Java-разработчики предпочитают Java, когда речь идет о продвинутом пользовательском интерфейсе JavaScript / AJAX;
  • Среда разработки и инструменты Java полностью поддерживаются: плагин Eclipse, отладчик, рефакторинг, размещенный режим в Eclipse;
  • Тесты JUnit поддерживаются как с фиктивными объектами, так и в размещенном режиме;
  • Чистая интеграция с серверной частью Java (GWT-RPC);
  • Относительно богатый набор виджетов пользовательского интерфейса с единообразным внешним видом;
  • Доступность сторонних виджетов, фреймворков, шаблонов и примеров (все еще ограничено и с длинным списком желаний);
  • Поддержка Google способствует как более широкому принятию / популярности, так и быстрому продвижению фреймворка;
  • зрелая структура с 1.6+ и предстоящими выпусками 2.0: (шина событий, обработчики событий, архитектура графического интерфейса пользователя с шаблоном MVP, оптимизация компилятора и т. д.).
person topchef    schedule 15.08.2009

Одним из преимуществ Wicket перед GWT является то, что Wicket может справиться с ситуацией, когда вы хотите предоставить запасной вариант для клиентов, у которых не включен Javascript. GWT полностью поддерживает Javascript, Wicket позволяет изящно деградировать.

person Nathan Hughes    schedule 29.04.2010

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

Вместе с CSS они образуют мощную пару.


Другими словами, вы можете по большей части забыть о Javascript и HTML.

Является ли это преимуществом или нет, в основном зависит от ваших навыков и требований. У нас были такие же дебаты внутри компании, и в конце концов одна команда выбрала Wicket, а другая - GWT.

person Robert Munteanu    schedule 29.07.2009
comment
Вы могли бы привести почти тот же аргумент в пользу кодирования в Wicket ..? - person Tim; 30.07.2009
comment
Нет, не смогли. Можете ли вы писать многофункциональные клиентские приложения в Wicket без Javascript? - person Robert Munteanu; 30.07.2009

Я могу придумать несколько причин, по которым GWT является лучшим выбором, чем Wicket, для типичных бизнес-веб-приложений:

  1. GWT от Google. Это может быть несправедливо, но наличие у инструмента крупной и уважаемой компании-разработчика программного обеспечения является огромным преимуществом (безопаснее делать ставки на него, больше книг и онлайн-ресурсов, больше сторонней поддержки, лучше поддержка IDE, ...).
  2. Серверные веб-фреймворки, такие как Wicket, устарели. Современные веб-браузеры очень мощные и становятся все более эффективными, поэтому современная веб-платформа должна помочь вам воспользоваться этим.
  3. Кодирование непосредственно в HTML и Javascript никогда не может быть таким продуктивным, как кодирование на Java (по крайней мере, по моему опыту). Также есть лучшие инструменты для Java-кода (отладчики, статический анализ, модульное тестирование и покрытие кода и т. Д.).
person Rogério    schedule 15.08.2009
comment
Я не согласен с «огромным» преимуществом GWT. Есть много крупных компаний, которые выпускают дрянные фреймворки (как, например, в случае с JSF). Конечно, Google в целом вносит хорошие фреймворки, но, в конце концов, важнее, кто на самом деле работал над этим, а не компания, на которую они работали. - person Eelco; 01.02.2010
comment
На самом деле, читая два других пункта, я подозреваю, что вы мало что знаете о Wicket и о том, для чего он предназначен. - person Eelco; 01.02.2010
comment
Серверные веб-фреймворки, такие как Wicket, устарели. Вы когда-нибудь пробовали создать веб-приложение RESTful с HTML 4 и JavaScript (написанным с помощью GWT или нет)? HTML 5 изменит некоторые вещи, которые сделают его проще (или в некоторых случаях возможным). Wicket избавит вас от многих проблем. - person deamon; 12.06.2010
comment
GWT от Google. Это может быть несправедливо, но наличие за инструментом крупной и уважаемой компании-разработчика программного обеспечения - огромное преимущество. Я не понимаю этого? Wicket от Apache, вы знаете, люди, которые предоставили нам HTTP-сервер Apache, возможно, наиболее часто используемый веб-сервер? Не говоря уже о некоторых других продуктах, таких как Tomcat, Ant, Maven, log4j, Apache Commons, и это лишь некоторые из них. - person Sandman; 08.02.2011
comment
Почему серверные фреймворки устарели? Можете ли вы каким-либо образом подтвердить это заявление? - person Jesse; 12.10.2012
comment
Потому что серверные фреймворки не были разработаны с учетом современной платформы веб-браузеров. Они предполагают, что большая часть кода пользовательского интерфейса выполняется на сервере, а не в браузере. В прошлом это имело смысл, поскольку движки JavaScript и HTML в браузерах были намного более ограниченными и медленными, чем сегодня, не говоря уже о проблемах совместимости, которые сейчас в основном решены. Я хочу сказать, что в современном веб-приложении весь код пользовательского интерфейса может и должен выполняться в браузере, а не на сервере. - person Rogério; 15.10.2012

Гениальность GWT заключается в том, что вы работаете исключительно с java. Они отлично поработали с RPC, сделав его почти прозрачным для программиста. Часто вам кажется, что кодирование больше похоже на настольное приложение, а не на приложение с действительно определенной клиентской и серверной стороной.

person Nick    schedule 17.08.2009
comment
Это очень похоже на цели калитки. - person ireddick; 04.09.2009
comment
Да, это именно то, что вы чувствуете при написании приложений с помощью Wicket - все знакомство и простота написания настольных приложений. Преимущество Wicket над GWT IMHO заключается в том, что, как и в мире разработки настольных компьютеров, привязка пользовательского интерфейса к объектам модели предметной области в Wicket достигается с помощью стандартных вызовов методов и ссылок на объекты. В GWT при привязке пользовательского интерфейса к объектам модели предметной области вы должны лечь в постель с очень странным партнером по кровати: «маршалинг объектов» - это нормально, если вам нравится делать что-то сложным. - person Volksman; 11.02.2011

Я новичок в GWT, но после некоторого исследования я обнаружил, что GWT «подходит» для моего нового проекта веб-приложения, поскольку он ориентирован на клиента, что заставляет меня чувствовать себя как кодирующее настольное приложение. Сегодня у нас есть высокопроизводительный клиент, готовый для запуска приложения на стороне клиента. Мое приложение может быть выполнено исключительно на Java, а Java-класс ООП дает возможность создать нашу собственную готовую к использованию структуру для нашей команды.

person Wutikrai    schedule 03.07.2013

Я нахожу несколько других преимуществ калитки перед GWT.

  1. GWT не будет работать с браузером, в котором отключен javascript. (хотя это бывает редко). Wicket всегда возвращается к обычным HTTP-запросам, если javascript недоступен.
  2. Приложения GWT - это одностраничные приложения, что затрудняет создание закладок и использование вкладок браузера. С помощью калитки вы можете создать одностраничное приложение или многостраничное приложение. Вы можете сделать страницы закладками, если хотите.
  3. В GWT не всегда легко создавать собственные компоненты. В калитке, поскольку вы работаете с необработанными html, css и даже javascript, создание пользовательских компонентов очень гибко. Вы даже можете очень легко обернуть существующий компонент jquery или dojo.
  4. Поскольку GWT включает компиляцию java в javascript, вы можете использовать только те классы java, которые были эмулированы компилятором GWT. Это может быть ограничением. Wicket - это фреймворк на стороне сервера, и вы можете использовать всю Java, которую хотите.
  5. Работать с CSS и веб-дизайнерами намного проще с калиткой, чем с GWT.
person joshua    schedule 12.10.2011
comment
Wicket не всегда возвращается к обычному HTTP, если Javascript недоступен. Только компоненты, предназначенные для отката. - person Jesse; 12.10.2012