Имеет ли смысл использовать Google Web Toolkit (GWT) в качестве полномасштабного веб-фреймворка Java?

StackOverflow https://stackoverflow.com/questions/744515

Вопрос

Меня интересует возможность того, что GWT мог бы послужить основой для всего моего уровня презентации.

Мне было бы интересно узнать, пробовал ли кто-нибудь это успешно - или безуспешно - и мог бы убедить или разубедить меня в этом.

Это было полезно?

Решение

Я работал с GWT около года назад.В то время это казалось отличной идеей, но с рядом оговорок:

  • У меня были проблемы с некоторыми частями API, которые, вероятно, были связаны с тем фактом, что вы пишете код так, как если бы вы использовали Java, хотя на самом деле вы пишете для отдельно скомпилированной среды, которая действует как Java, поэтому вы делаете некоторые неверные предположения (в данном случае передавая вложенные значения во внешний интерфейс).Я думаю, что был еще один вариант: переписать мои ant-скрипты для использования 32-битной JVM для компиляции gwt.
  • Я потратил немного времени, пытаясь настроить внешний вид — мы так и не развернули законченный проект, поэтому я не уверен, сколько работы потребовалось бы, чтобы выйти на профессиональный уровень, но казалось (логично), что так и будет. сравнимо с настройкой интерфейса Swing.возможно, визуально немного более громоздким, чем HTML.
  • Поскольку в конечном продукте ajax настолько скрыт от вас, у меня были некоторые опасения по поводу того, что я могу сделать, если производительность будет низкой.

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

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

Другие советы

Вы упомянули, что GWT будет обрабатывать уровень представления.Вы бы тоже использовали бизнес-уровень на Java?Если это так, я хотел бы указать вам на Инструментарий IT Mill, это делает именно это:Это набор инструментов, который использует GWT для рендеринга компонентов графического пользовательского интерфейса, что позволяет вам создавать свои приложения полностью на Java.Я думаю, что он пытается ввести термин «RIA, управляемый сервером».

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

Отказ от ответственности:Я работаю в IT Mill, хотя это не имеет значения для моего мнения.

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

В общем, у GWT есть (обычные?) проблемы молодых технологий.Тем не менее, некоторые вещи действительно упрощаются, например, Ajaxifying, как вы его назвали.

Мы сделали это для очень большого проекта, и пока вы знаете его ограничения, сильные и слабые стороны, он отлично работает.Как ни странно, презентация была наименьшей из наших проблем, поскольку мы просто вырезали из нее шкуру, как и любую другую HTML-страницу, с помощью CSS.Проект был запущен и работал безупречно, поэтому у меня нет претензий.

Подводные камни, которые я обнаружил при этом, вы можете найти здесь:

Самые большие подводные камни GWT?

Мы разработали большое приложение HR Portal, весь уровень представления которого выполнен в GWT.Бэкэнд — Spring.Все работает очень хорошо, и пользовательский интерфейс был очень хорошо принят пользователями.Очень важно, что нам легко добавлять новые функции и поддерживать приложение.Я думаю, что было бы гораздо сложнее сделать что-то сопоставимое и поддерживаемое с использованием библиотек Javascript.

Вам нужна какая-то клиентская платформа, иначе вам придется ее написать (как это сделали мы!):Наше приложение построено на Портлеты GWT (бесплатный и с открытым исходным кодом).

Мы используем фрагменты HTML для оформления приложения для различных развертываний, а макет каждой «страницы» хранится в XML-файле.

Некоторая полезная информация об этом есть в этом рэйбл-видео: http://raibledesigns.com/rd/entry/my_drunk_on_software_interview

GWT сам по себе - это библиотека для улучшения пользовательского интерфейса, а не фреймворк.Если вы используете его с Google App Engine, то у вас есть базовый фреймворк.(Это совсем другая история, и пока я рассматривал ее, я решил не включать это в нашу архитектуру).

Это отличная библиотека, мы сделали с ней несколько впечатляющих вещей.Однако, поскольку это библиотека, она хороша настолько, насколько это позволяет ваша архитектура.

Насколько я понимаю, у ANT нет проблем с 64-битным компилятором.

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler" dir="${dir.GWTCompile}"> <-- dir.GWTCompile - это каталог, содержащий GWT --> <classpath> путь к классу </classpath> <jvmarg value="-${gwt.maxMem}" /> <arg value="@{gwt.baseModule}" /> <arg value="DEBUG" /> <arg value="-strict" /> </java>

Что касается сгенерированного кода, то все это есть в вашей war, если вы хотите просмотреть его.(Это также открытый исходный код, так что вы можете посмотреть на него там.)

Что делает GWT в процессе компиляции:Он создает несколько копий библиотек JS для разных наборов браузеров (одна из причин, по которой компиляция может занять несколько минут), вы можете добавлять / удалять их по мере необходимости.Это уменьшает объем JS-пакета, который необходимо загрузить, и увеличивает скорость, поскольку в нем не обязательно должны быть эти неприятные if (EI) this else if (FF) that.Однако, когда вы выполняете локальную отладку (по крайней мере, в eclipse), вам не нужно ждать, позволяя оставить это для сервера сборки (или когда вам нужно вручную создавать и развертывать (неандертальцы)).

Обратная сторона GWT.Поскольку это клиентская часть javascript (почти чисто), вы не можете использовать ее для вещей, которые ее не поддерживают, или для поддержки одной из версий.Таким образом, для таких устройств, как iPad и iPhone, вы можете столкнуться с некоторыми проблемами, если не используете дополнительные библиотеки, предназначенные для устранения этих пробелов (например, mgwt).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top