GWT 2.0 + GXT (Ext GWT) + Maven


1. GWT (Google Web Toolkit, произноситься: /’gwit/). На момент написания поста текущая версия  – 2.0.3.  Загрузить можно с официальной страницы GWT – http://code.google.com/intl/ru/webtoolkit/download.html.

Вкратце механизм работы GWT можно описать так.  Исходный код пишется на Java, затем он транслируется в JavaScript,  в результате получаются несколько версий программ для разных браузеров (Firefox, IE, Safari, Google Chrome, Opera 9.0). Полученный JavaScript код неплохо оптимизирован – название переменных и методов сокращенны, убраны комментарии и лишние пробелы. В итоге получается его естественная обфускация.  (Пример кусочка полученного кода: function Y7(a){W7();LE(a);a.Vb=NOc;return a} ).

После выхода версии  GWT 2.0 появилась возможность разбивать полученный JavaScript код (runAsync)  на отдельные файлы, которые затем загружаются асинхронно по мере надобности.  Так уменьшается размер первоначального скрипта и как следствие время загрузки и запуска приложения.

Подробное описание есть на официальном сайте GWT.

2. Maven.  Это инструмент для автоматической сборки проектов. Maven постоянно сравнивают с ant-ом.  В чем заключаются основные отличия между этими двумя системами есть вопрос философский. С практической точки зрения maven по сравнению с ant’ом дает более удобный способ подключения сторонних библиотек. Достаточно добавить в pom.xml информацию об используемой библиотеке и в том случае, если она есть в главном репозитории, то будет без дополнительных усилий скачена, установлена и добавлена в пути для компиляции.

Для ленивых во многих IDE существует возможность поиска необходимых библиотек. Например, как это делается в NetBeans:

  • Выбираем maven проект
  • Открываем пункт Library, затем открываем контекстное меню .
  • Выбираем пункт “Add Dependency…“.
  • В отображенном диалоге можем указать в поле Query название библиотеки или просто название класса (Например “c3p0” или “StringUtils”).
  • Просматриваем  и выбираем из списка необходимую библиотеку, выбираем версию.

Таким образом отпадает необходимость искать в гугле сайт этой библиотеки,  искать на ней раздел для скачивания, распаковывать архив, вытаскивать из него jar-файлы, подключать и прописывать их в ant‘овском build.xml.

Для совсем ленивых можно добавить библиотеку прямо при редактировании исходного кода. Например, если в тексте программы написать название класса то по нажатию [Alt + Enter] отобразится подсказка ” Search Dependency at Maven Repository …”, а затем диалог для поиска.

Можно провести приблизительную аналогию с линуксоидным миром.  Maven это как apt или yum, а  ant это как rpm или build. В первом случае вам достаточно вбить apt-get install название-библиотеки и система сама найдет, скачает и установит необходимый файл. Справедливости ради следует упомянуть проект ivy – расширение к ant‘у, предназначенное для управления зависимостями (project dependency).

3. Ext GWT , он же GXT.

Сначала появился Ext JS –  знаменитый фреймворк на JavaScript, который обладает богатым набором виджетов для создания пользовательского интерфейса.  Это чисто JavaScript-овое решение (также как например jQuery), то есть не требуется никакой компиляции из Java-классов в JavaScript как в GWT.

Во время его развития и популяризации компания Google анонсировала выход своего GWT, о котором было сказано выше.  После того как GWT стал набирать популярность начали выходить различные сторонние библиотеки  связующие GWT с  другими технологиями.  Одной из таких библиотек была GWT-Ext (не путать с ExtGWT !) – по сути просто обертка над Ext JS для связки с GWT.  По началу она была достаточно востребована, так как позволяла использовать всю мощь GWT и силу интерфейсных решений Ext JS одновременно. С эволюционной точки зрения эта библиотека (GWT-Ext) являлась промежуточным звеном.  На данный момент развитие проекта закрыто и его создатели рекомендуют использовать другой продукт – SmartGWT.

На мой взгляд, одной из причин закрытия проекта был выпуск непосредственно самими создателями Ext JS библиотеки Ext GWT (он же GXT).  Она была реализована полностью на чистом GWT и не является прослойкой между javascript-овыми файлами Ext JS и GWT. Из моего личного опыта, GXT (Ext GWT)  использовать намного удобней и приятней чем GWT-Ext, т.к. он работает быстрее и более предсказуем в поведении.  Проект постоянно развиваются, выходят новые версии, исправляются ошибки, появляются новые виджеты.  На данный момент существует версия Ext GWT SDK 2.1.1 которая совместима с GWT 2.0.

Инструкцию по установки и работе в связке с maven‘ом можно прочитать здесь:  http://www.extjs.com/learn/Tutorial:GWT_GXT_and_Maven_howto .  Инструкция написано неплохо – подробно, четко и последовательно.  Требуется только соблюдать очередность действий и быть аккуратным.

Если Вы работаете в NetBeans’е, то для запуска проекта  под встроенным Jetty-сервером в девелоперском режиме необходимо запустить задачу mvn gwt:run. Для этого выбираем проект (Ctrl+1) , вызываем контекстное меню (Shift+F10), затем Custom->Goals… В поле “Goals” нужно указать gwt:run.

Можно запустить в режиме отладки (дебага) –  mvn gwt:debug.  Программа будет в состояние ожидания (suspend) до подключения дебагара. В NetBeans для запуска необходимо выбрать меню  Debug -> Attach Debuger…

В целом связка maven + gwt + gxt образует неплохой каркас для работы над проектами в котором требуется “веб-два-нольный”  и богатый пользовательский интерфейс.

Любое использование либо копирование материалов или подборки материалов сайта, элементов дизайна и оформления допускается лишь с разрешения правообладателя и только со ссылкой на источник: programador.ru

Телеграм канал: @prgrmdr
Почта для связи: vit [at] programmisty.com