Мы строим малые (~ 2K классы Java) для средних (~ 6K) корпоративных систем на регулярной основе с использованием GWT, начиная с версии 1.3. Я понимаю, что на общедоступном сайте, имеющем тысячу кликов в секунду, нужно решать другой набор проблем, но я постараюсь рассказать о наших самых больших проблемах в GWT 1.x и о том, как GWT 2.0 подходит к этому.
Утечки памяти в браузере Утечки в IE6 с GWT огромны, утечки в IE7 можно компенсировать периодическим обновлением страниц, IE8 обещает некоторую стабильность в этой области, но пока не получила широкого распространения на предприятии. И да, даже действительный код GWT без собственных вызовов JS в некоторых случаях приводит к утечке памяти. Особенно, когда пользовательский интерфейс сложен, и вы делаете много вызовов Panel.clear (). На данный момент нет полезных инструментов для определения реальной причины утечки. Если вы не знаете, как взломать сам браузер.
Производительность рендеринга Вы должны очень тщательно писать код пользовательского интерфейса, особенно при создании часто используемых пользовательских виджетов. Глубокие знания JavaScript, CSS и DOM все еще необходимы. В интернете много материалов на эту тему. Вам нужно знать, как и когда переходить с уровня виджета GWT на прямые манипуляции с DOM.
Размер загружаемого контента до версии 2.0 было невозможно разделить модуль на разные загружаемые фрагменты без встроенной «жесткой» навигации в приложении. Но это очистит контекст JavaScript и потребует перезагрузки окна.
Разработчики пользовательского интерфейса Mind Shift Опытные разработчики пользовательского интерфейса просто не знают Java и ООП. Опытные Java-разработчики не знают CSS, JS, HTML и не любят создавать пользовательский интерфейс. Пользовательский интерфейс Binder идет в правильном направлении.
Мы выполнили миграцию 1.3 -> 1.5 -> 1.7, и это всегда была просто перекомпиляция и пара CSS-исправлений. GWT 2.0 удаляет много устаревшего кода и исходных подходов (структура проекта, GWTShell) и может быть сложным для быстрой миграции. Но все функции выглядят многообещающе, и хорошо, что Google в какой-то момент отбросил устаревший код. Хотя я не уверен в стабильности 2.0, поскольку мы еще не использовали ее в реальных проектах.
Надеюсь, это поможет.