Почну з того, що я є великим шанувальником GWT, але так, є багато підводних каменів, але більшість, якщо не все, що нам вдалося подолати:
Проблема: тривалість компіляції триває, оскільки ваш проект зростає, а також збільшується кількість часу, необхідного для його складання. Я чув про повідомлення 20-ти хвилинних компіляцій, але мої в середньому близько 1 хвилини.
Рішення: розділіть свій код на окремі модулі та скажіть мурашці будувати його лише тоді, коли він змінений. Також під час розробки ви можете значно прискорити компіляцію разів, лише створивши для одного браузера. Це можна зробити, ввівши це у свій .gwt.xml файл:
<set-property name="user.agent" value="gecko1_8" />
Де gecko1_8 - це Firefox 2+, тобто 6 - IE тощо.
Проблема: Розміщений режим дуже повільний (принаймні на OS X) і не наближається до відповідності змін "наживо", які ви отримуєте, коли ви редагуєте такі речі, як сторінки JSP або Rails, і натискаєте оновити у своєму браузері.
Рішення: Ви можете надати хостинговому режиму більше пам’яті (я зазвичай отримав 512 мільйонів), але він все ще повільний, я виявив, що як тільки ви отримаєте достатньо хороший вміст з 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 досить компактний.