Я думаю, это действительно зависит от того, какой веб-сайт вы хотите создать.
GWT, вероятно, лучше всего подходит для так называемых SOUI (сервис-ориентированный пользовательский интерфейс) и SOFEA (сервис-ориентированная интерфейсная архитектура).
В веб-приложениях GWT у вас есть одна HTML-страница хоста, которая обслуживается вашим бэкэндом, и весь рабочий процесс пользовательского интерфейса и синхронизация потоков выполняются на стороне клиента GWT.
Поэтому, если вы хотите создать приложение, похожее на десктоп, GWT, вероятно, является вашим лучшим выбором, потому что это отличный инструментарий, который позволяет разрабатывать сложные приложения, подобные десктопу, и предоставляет все преимущества разработки JAVA (тестирование, рефакторинг и т. Д.).
Для "традиционных" веб-сайтов web 2.0ish GWT может быть не лучшим выбором, потому что у него действительно несколько большая кривая обучения, чем у JS-фреймворков (jQuery, dojo и т. Д.).
Кроме того, эти веб-сайты имеют несколько страниц, и Javascript используется для улучшения пользовательского интерфейса, и не для того, чтобы полностью взять на себя синхронизацию потоков, а просто для того, чтобы сделать страницу более интерактивной. Для этих веб-сайтов у вас обычно есть хороший бэкэнд (Grails, Spring MVC), который заботится о синхронизации потоков, а инфраструктура JS просто отвечает за то, чтобы сделать пользовательский интерфейс более интерактивным и за некоторые изменения пользовательского интерфейса.
Примером такого рода веб-сайтов является stackoverflow. Если вы нажмете на ссылку, она загрузит новую страницу HTML. Если вы нажмете на ссылку «Входящие», она будет использовать jQuery, чтобы открыть всплывающее окно, получить ваши уведомления и отобразить их.
Google Closure, вероятно, ближе к jQuery, чем к GWT. Я думаю, что самая большая точка продажи Google Closure - это HTML-шаблоны на стороне клиента и на стороне сервера. У меня нет большого опыта работы с Google Closure, но он активно используется Google для своих веб-приложений.
Поскольку я работал в основном с GWT, вот список преимуществ и недостатков, которые я могу придумать в отношении GWT:
Преимущества :
- Надежный инструментарий
- Средства разработки (тестирование, рефакторинг, затмение, отладка в реальном времени)
- Кросс-браузерная совместимость из коробки (с некоторыми оговорками)
- Наличие сторонних библиотек (сериализация DTO, инфраструктуры MVP и т. Д.)
- Только клиентский код загружается на клиент (с помощью JS-фреймворков вы загружаете весь фреймворк, даже если вы используете только одну конкретную функцию)
- GWT-RPC и RequestFactory для связи с бэкэндом JAVA (не нужно сериализовать или десериализовать себя).
Недостатки :
- Большая кривая обучения
- Может не подходить для небольших улучшений пользовательского интерфейса
- Компиляция может занять некоторое время, если база кода велика и должны поддерживаться разные браузеры и языки
- Сгенерированный Javascript может стать большим в сложных приложениях (решение: разделение кода)
В качестве дополнительного примечания: с каждой новой версией GWT недостатки становятся меньше проблемой, поскольку каждая новая версия GWT улучшает время компиляции и размер кода. GWT 2.5 должен иметь действительно хорошие улучшения в этой области.
Подводя итог: если вы хотите разработать настольный компьютер, такой как интерактивное веб-приложение, я думаю, что GWT, вероятно, ваш лучший выбор.
Однако, если вы хотите разработать более традиционный веб-сайт "Web 2.0ish", лучше использовать jQuery / Google Closure.