GWT для крупномасштабных приложений

Я слышал, что Google Web Toolkit не очень хорош для веб-сайтов с более чем 5 страницами и обычным макетом. Это правда? У нас есть как минимум 100 подстраниц и общий макет, определенный в CSS. Сегодня использовали PHP, но мы перейдем на фронт Java либо Spring MVC, либо GWT. Мы используем некоторый jQuery AJAX и другие компоненты jQuery, такие как jqGrid. У нас также есть несколько фильмов в формате .swf и фьюжн-чарты. Будет ли выбор Spring в сочетании с GWT хорошим выбором или Spring MVC с библиотекой jQuery - лучший выбор для нас?


person user1312568    schedule 04.04.2012    source источник
comment
Откуда вы узнали, что GWT не подходит для веб-сайтов с более чем 5 страницами и общим макетом? Кроме того, GWT предназначен не для сайтов, а для приложений, если это поможет вам сделать выбор.   -  person Thomas Broyer    schedule 04.04.2012


Ответы (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 выглядит более предпочтительным выбором.

person domax    schedule 04.04.2012

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

  • ваша команда ненавидит / не любит JS (и не может создать ничего сложного с JS только потому, что они ненавидят JS)
  • ваша команда имеет большой опыт работы с Java
  • ваша команда понимает, как работает весь этот браузер (HTTP, JS, DOM, CSS и т. д.)
  • в этом проекте будет много логики, работающей на стороне клиента

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

Выбор зависит от вашей команды и проекта, над которым вы работаете. Если ваша команда не понимает, какие преимущества GWT принесет проекту, вам не следует использовать GWT.

person jusio    schedule 04.04.2012

Наше приложение корпоративного уровня использует оба, и мы вполне довольны результатами. GWT - это мощный инструментарий, который на порядки сокращает время разработки. Тем не менее, все еще есть вещи, с которыми GWT либо не справляется слишком хорошо, либо просто не подходит (и это нормально ... поэтому Spring MVC живет поблизости). У нас есть GWT-RPC, напрямую обращающийся к службам Spring, и он работает невероятно хорошо.

Но наш проект - это настоящее веб-приложение, а не веб-сайт. Мы используем унифицированный дизайн, охватывающий все «страницы» (использование DockLayoutPanel и замена только center делает это очень простым).

ИМО, кто бы ни сказал вам, что GWT не подходит для единообразного дизайна на многочисленных «страницах», чокнутый ...

person Chris Cashwell    schedule 04.04.2012

Я думаю, любое утверждение о том, что GWT (или любой другой метод) сокращает время разработки на порядок, уже было опровергнуто Фредериком Бруксом в те времена, когда в моде были подплечники и синтезатор Яна Хаммера: http://en.wikipedia.org/wiki/No_Silver_Bullet.

А если серьезно, если вы занимаетесь PHP-магазином, переход на 100% Java был бы огромным вложением, и к нему нельзя относиться легкомысленно.

person Jasper Sprengers    schedule 04.04.2012
comment
Я не согласен с тем, что Брукс опровергает идею снижения времени разработки GWT. Его комментарий заключался в том, что не существует единой разработки ни в технологии, ни в технике управления, которая сама по себе обещает хотя бы на порядок улучшение производительности, надежности и простоты в течение десятилетия. Он сказал, что в 1989 году, заявив, что в течение десятилетия такого развития не произойдет. Прошло более двух десятилетий, поэтому его заявление было правдой и GWT предлагает именно то, чего, по его словам, не произойдет. - person Chris Cashwell; 04.04.2012
comment
Я считаю, что его слова означают, что ни одна технология не приводит к десятикратному увеличению производительности в течение десятилетия после ее широкого распространения; не то чтобы изобретательность человечества внезапно совершила гигантский скачок через десять лет. Сочетание технологий может помочь. Но действительно ли GWT сам по себе действительно сделал вас в десять раз более продуктивным? Я не говорю, что не может. Я люблю GWT, но чудес он не творит. - person Jasper Sprengers; 04.04.2012
comment
Чудеса? Нет. Повышение производительности в ›1 раз, да. По крайней мере, я потратил на 100% меньше времени на создание специального кода, учитывающего особенности платформы / браузера. GWT справляется с этим, создавая несколько перестановок, по одной для каждого (статистически значимого) браузера, эффективно устраняя время, затрачиваемое на планирование и реакцию на то, как разные браузеры реагируют на один и тот же код. - person Chris Cashwell; 09.04.2012
comment
Я согласен. Я помню, как еще в 2000 году мне приходилось иметь дело с сводящими с ума различиями между IE3 и Netscape 4. С тех пор дела, безусловно, улучшились. - person Jasper Sprengers; 09.04.2012

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

Но это не настоящая проблема, потому что вы в основном будете использовать режим разработки с мгновенным обновлением кода, и у вас может быть специальный модуль компиляции с сокращенным набором браузера и языка (даже один язык и один браузер => одна перестановка, если ты хочешь).

Итак, в моем случае, используя Jenkins, мы каждую ночь производили полную сборку большой целевой задачи, развертывая ее на платформе QA, чтобы команда QA тестировала каждую комбинацию языков браузера. И при каждой фиксации сокращенная сборка (в нашем случае 1 браузер и 2 языка) развертывалась на платформе проверки разработки.

GWT - отличный инструмент для больших приложений. ;)

person Nicocube    schedule 04.04.2012
comment
GWT Super Dev Mode на этот раз сократился до 4-6 секунд на обновление. Вполне управляемо. - person Joseph Lust; 12.03.2014