Каковы основные недостатки при использовании Google Web Toolkit (GWT) - PullRequest
7 голосов
/ 19 февраля 2011

После долгих дебатов между многими системами RIA / Ajax мы остановились на GWT. Когда вы читаете об этом, этот фреймворк выглядит так, чтобы делать все хорошо и легко. Но, как и у любых технологий, всегда есть обратная сторона, и мы учим их трудным путем.

Каковы основные недостатки или проблемы при использовании Google Web Toolkit (GWT)?

(например: поддержка кнопок «Назад» и «Вперед», медленное время отклика, расположение макетов, ошибки JavaScrit и т. Д.)

Пока что из ответа я получил следующее:

  • Много кода для простого пользовательского интерфейса
  • Медленная компиляция

Спасибо

Ответы [ 5 ]

14 голосов
/ 20 февраля 2011

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

  1. Как уже говорили другие, компиляция JavaScript идет медленно.Моему приложению требуется около 4 минут для процессора Core i7, 8 ГБ памяти.Общий размер сгенерированного JavaScript составляет около 5 МБ.Но благодаря режиму разработки, компиляция в JavaScript не требуется часто.

  2. GWT RPC чрезвычайно медленный в режиме разработки.Это в 100 раз медленнее, чем в режиме хостинга.Это была довольно большая проблема для нас.Мы решили отказаться от GWT только по этой причине.Причиной такой вялой производительности GWT RPC в режиме dev является сериализация.Сериализация типов, отличных от String, невероятно медленная в режиме разработки.Мы реализовали нашу собственную сериализацию, она почти в 30 раз быстрее встроенной сериализации GWT.

  3. Утверждение, что для написания приложения GWT требуется только знание Java, является всего лишь иллюзией.У вас должна быть достоверная информация о CSS и DOM.Если вы этого не сделаете, вы потратите слишком много времени на отладку пользовательского интерфейса.

  4. Следует учитывать, что вы можете использовать только небольшое подмножество JDK для реализации приложений GWT.Отражение недоступно;Вы должны использовать сторонние библиотеки, такие как GWT ENT , или написать свой собственный генератор для отражения.

  5. Еще одна оговорка, которую следует учитывать, - это размер сгенерированного JavaScript компилятором GWT.Большинство приложений GWT состоят из одной веб-страницы, в отличие от многостраничных традиционных веб-приложений.Поэтому загрузка приложения требует значительного времени.Хотя это может быть смягчено с помощью многомодульного подхода и разделения кода, использование этих методов не всегда простое.

  6. Все обращения к серверу являются асинхронными.Вы должны адаптироваться к написанию асинхронного кода.И недостатком асинхронного кода является то, что он более сложный и менее читаемый, чем эквивалентный синхронный код.

8 голосов
/ 21 февраля 2011

Вот мои наблюдения о падениях:

  • крутая кривая обучения, если кто-то хочет эффективно использовать GWT в больших приложениях , из-за огромного количества соглашений высокого уровня, связанных с GWT.
  • асинхронные запросы требуют разного подхода, когда речь идет о разработке всего приложения
  • длительное время компиляции, это не влияет на режим разработки в такой степени, как полная сборка (все перестановки для всех браузеров и языков компилируются, что может занять часы для больших проектов). JRebel может немного снизить требования перезапусков режима разработки.
  • проблемы с модульным тестированием - GWTTestCase запускается так долго, что его нельзя использовать для модульного тестирования. Однако благодаря GWTTestSuite он может хорошо работать для интеграционного тестирования. Благодаря поддержанию чистоты MVP также возможно модульное тестирование логики Presenter путем насмешки над дисплеями (см. Мой ответ).
  • требуется некоторый опыт, чтобы решить, должна ли конкретная логика быть реализована на стороне клиента (скомпилированной для JS) или на стороне сервера.
  • и, конечно, есть небольшие ошибки, особенно в новых функциях, таких как Editors и RequestFactory. Они обычно решаются быстро с новыми выпусками, однако это может раздражать, когда вы сталкиваетесь с некоторой проблемой GWT. В любом случае последнее падение относится к любой среде Java, которую я использовал до сих пор. ;)
  • отсутствие отражения на стороне клиента, которое можно устранить с помощью Deffered Binding и Generators , но это еще одно соглашение для изучения.

Если бы я начал новый проект GWT, я бы:

  • добавить зависимость от библиотеки Google GIN (к сожалению, в настоящее время она не работает с GWT 2.2, но скоро должна быть совместима).
  • дизайн общего макета с LayoutPanels
  • структура приложения «поток» согласно концепции мест и видов деятельности.
  • поместить все места в отдельный модуль GWT (общие ссылки для навигации)
  • помещает каждое действие в собственный модуль GWT (это может помочь в разделении кода приложения позже)
  • обрабатывает Activity как клейкий код, которому поставщики View и Presenter вводят GIN
  • объекты проектных данных для совместимости с RequestFactory
  • создать все редакторы данных с учетом UiBinder, MVP и среды Editors
  • используйте RequestFactory в Presenters, а также в Activity (для получения начальных данных, которые должны быть показаны).
  • внедрить в GIN каждый идентифицированный общий компонент, такой как стандартный формат даты и т. Д.

Инструмент spring roo может генерировать много кода на основе GWT для стандартных элементов приложения.

2 голосов
/ 19 февраля 2011

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

2 голосов
/ 19 февраля 2011

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

Мне просто не понравился код, фаза тестирования компиляции становилась все медленнее и медленнее со временем.

Еще один вопрос на SO о компиляторе: Как ускорить компилятор gwt?

0 голосов
/ 02 мая 2011

как поклонник Рождества ... Я предпочитаю JQuery, а не GWT, потому что легко анимировать или выполнять завершенные задачи без написания большого количества классов ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...