Начну с того, что я большой поклонник GWT, но да, есть много подводных камней, но большинство, если не все, мы смогли преодолеть:
Проблема: Длительное время компиляции, так как ваш проект растет, увеличивается количество времени, необходимое для его компиляции. Я слышал о сообщениях о 20-минутных компиляциях, но у меня в среднем около 1 минуты.
Решение: разделите ваш код на отдельные модули и скажите, что ant будет создавать его только после его изменения. Кроме того, во время разработки вы можете значительно сократить время компиляции, создавая только один браузер. Вы можете сделать это, поместив это в свой файл .gwt.xml:
<set-property name="user.agent" value="gecko1_8" />
Где gecko1_8 - это Firefox 2+, т.е. 6 - это IE и т. Д.
Проблема: режим размещения очень медленный (по крайней мере в OS X) и не приближается к соответствию «живым» изменениям, которые вы получаете, когда редактируете такие вещи, как страницы JSP или Rails, и нажимаете кнопку «Обновить» в своем браузере.
Решение: Вы можете предоставить хост-режиму больше памяти (как правило, у меня есть для 512M), но он все еще медленный, я обнаружил, что как только вы освоитесь с GWT, вы перестанете его использовать. Вы вносите большой кусок изменений, затем компилируете только для одного браузера (как правило, на 20 с лишним), а затем просто нажимаете обновить в своем браузере.
Обновление: с GWT 2.0+ это больше не проблема, потому что вы используете новый «Режим разработки». По сути, это означает, что вы можете запускать код непосредственно в выбранном вами браузере, поэтому не теряйте скорость, плюс вы можете поджечь / проверить его и т. Д.
http://code.google.com/p/google-web-toolkit/wiki/UsingOOPHM
Проблема: GWT-код - это Java, и его менталитет отличается от разметки HTML-страницы, что затрудняет принятие HTML-дизайна и превращение его в GWT.
Решение. Опять же, вы привыкли к этому, но, к сожалению, преобразование дизайна HTML в дизайн GWT всегда будет медленнее, чем преобразование дизайна HTML в страницу JSP.
Проблема: GWT нужно немного подумать, и он еще не стал мейнстримом. Это означает, что большинству разработчиков, которые присоединяются к вашей команде или поддерживают ваш код, придется изучать его с нуля.
Решение: еще неизвестно, будет ли GWT работать, но если вы контролируете, кого вы нанимаете, то вы всегда можете выбрать людей, которые знают GWT или хотят изучать его.
Проблема: GWT - кувалда по сравнению с чем-то вроде jquery или просто javascript. Чтобы это произошло, требуется гораздо больше настроек, чем просто включение файла JS.
Решение: Используйте библиотеки, такие как jquery, для небольших, простых задач, которые подходят для них. Используйте GWT, если вы хотите создать что-то действительно сложное в AJAX или когда вам нужно передавать свои данные назад и вперед через механизм RPC.
Проблема: иногда, чтобы заполнить страницу GWT, вам нужно сделать серверный вызов при первой загрузке страницы. Это может раздражать, когда пользователь сидит и смотрит символ загрузки, пока вы выбираете нужные данные.
Решение: в случае JSP-страницы ваша страница уже была обработана сервером до того, как она стала HTML, поэтому вы можете сделать все свои вызовы GWT и предварительно загрузить их на страницу для мгновенной загрузки. Смотрите здесь для деталей:
Ускорьте загрузку страницы, предварительно сериализовав свои звонки GWT
У меня никогда не было проблем с CSS-стилем моих виджетов, из коробки, по индивидуальному заказу или иным образом, так что я не знаю, что вы подразумеваете под этой ловушкой?
Что касается производительности, я всегда обнаруживал, что однажды скомпилированный GWT-код работает быстро, и AJAX-вызовы почти всегда меньше, чем при обновлении всей страницы, но на самом деле это не уникально для GWT, хотя собственные RPC-пакеты вы получаете, если используете JAVA довольно компактны.