Я слышал, что Google Web Toolkit не очень хорош для веб-сайтов с более чем 5 страницами и обычным макетом. Это правда? У нас есть как минимум 100 подстраниц и общий макет, определенный в CSS. Сегодня использовали PHP, но мы перейдем на фронт Java либо Spring MVC, либо GWT. Мы используем некоторый jQuery AJAX и другие компоненты jQuery, такие как jqGrid. У нас также есть несколько фильмов в формате .swf и фьюжн-чарты. Будет ли выбор Spring в сочетании с GWT хорошим выбором или Spring MVC с библиотекой jQuery - лучший выбор для нас?
GWT для крупномасштабных приложений
Ответы (5)
Сейчас это неправда. В более ранних версиях GWT действительно были проблемы с масштабируемостью (например, проблемы с размером JS-кода в IE - http://code.google.com/p/google-web-toolkit/issues/detail?id=1440), но начиная с GWT 2.0 здесь нет ограничений.
Более того, последние версии GWT поддерживают функциональность для разделения проектов на части, которые могут загружаться динамически, когда они необходимы. См. https://developers.google.com/web-toolkit/doc/latest/DevGuideCodeSplitting, чтобы узнать, как это работает.
Учтите также, что, поскольку Spring - это Java, у вас есть возможность разделять классы между серверной и клиентской стороной. Плюс у Java очень хорошая поддержка в IDE - вам будут доступны все виды рефакторинга (это не так удобно, если вы используете jQuery).
Так что Spring + GWT выглядит более предпочтительным выбором.
GWT - не универсальный фреймворк для создания любого веб-приложения с нуля. Это очень полезно, когда у вас много сложной логики на стороне клиента (редактирование изображений, совместная работа в реальном времени, рисование диаграмм, игры, построение сложных отчетов и т. Д.). Но все это можно сделать без GWT. GWT можно использовать, когда:
- ваша команда ненавидит / не любит JS (и не может создать ничего сложного с JS только потому, что они ненавидят JS)
- ваша команда имеет большой опыт работы с Java
- ваша команда понимает, как работает весь этот браузер (HTTP, JS, DOM, CSS и т. д.)
- в этом проекте будет много логики, работающей на стороне клиента
Я видел довольно много крупных проектов, полностью построенных с помощью GWT. Некоторым из них никогда не следует использовать GWT, потому что у них не было причин использовать его таким образом. Для большинства проектов достаточно использовать GWT только для какой-то части приложения.
Выбор зависит от вашей команды и проекта, над которым вы работаете. Если ваша команда не понимает, какие преимущества GWT принесет проекту, вам не следует использовать GWT.
Наше приложение корпоративного уровня использует оба, и мы вполне довольны результатами. GWT - это мощный инструментарий, который на порядки сокращает время разработки. Тем не менее, все еще есть вещи, с которыми GWT либо не справляется слишком хорошо, либо просто не подходит (и это нормально ... поэтому Spring MVC живет поблизости). У нас есть GWT-RPC, напрямую обращающийся к службам Spring, и он работает невероятно хорошо.
Но наш проект - это настоящее веб-приложение, а не веб-сайт. Мы используем унифицированный дизайн, охватывающий все «страницы» (использование DockLayoutPanel
и замена только center
делает это очень простым).
ИМО, кто бы ни сказал вам, что GWT не подходит для единообразного дизайна на многочисленных «страницах», чокнутый ...
Я думаю, любое утверждение о том, что GWT (или любой другой метод) сокращает время разработки на порядок, уже было опровергнуто Фредериком Бруксом в те времена, когда в моде были подплечники и синтезатор Яна Хаммера: http://en.wikipedia.org/wiki/No_Silver_Bullet.
А если серьезно, если вы занимаетесь PHP-магазином, переход на 100% Java был бы огромным вложением, и к нему нельзя относиться легкомысленно.
По моему опыту работы с GWT, мой единственный плохой опыт был с медленной компиляцией GWT из-за большого количества перестановок. Наше приложение должно было поддерживать более 20 языков, что в результате умножения на 6 для конкретных браузеров привело к 120 перестановкам, которые показали ужасную производительность.
Но это не настоящая проблема, потому что вы в основном будете использовать режим разработки с мгновенным обновлением кода, и у вас может быть специальный модуль компиляции с сокращенным набором браузера и языка (даже один язык и один браузер => одна перестановка, если ты хочешь).
Итак, в моем случае, используя Jenkins, мы каждую ночь производили полную сборку большой целевой задачи, развертывая ее на платформе QA, чтобы команда QA тестировала каждую комбинацию языков браузера. И при каждой фиксации сокращенная сборка (в нашем случае 1 браузер и 2 языка) развертывалась на платформе проверки разработки.
GWT - отличный инструмент для больших приложений. ;)