- PVSM.RU - https://www.pvsm.ru -

GWT.Начинающим на заметку

Добрый день дамы и господа,

Эта статья предназначена в первую очередь начинающим и навряд ли принесет какую либо пользу людям былым. Но было бы неплохо, если бы люди с опытом привели бы парочку полезных ссылок в комментариях.
Итак, знакомство я советую начать с демо [1]. Тогда вы сможете себе представить, а что GWT вообще может и какие виджеты доступны прямо из коробки. GWT безусловно весьма сильный Фреймворк, но его чуть ли не самая главная беда заключается как раз в том, что этих самых виджетов не так уж и много. Но эта не беда, т.к. есть много различных библиотек, которые эту проблему решают. Особый расцвет пришелся на время 2-3 года назад, когда много чего в GWT просто не было и явных фаворитов среди сторонних библиотек тоже не было заметно. Сейчас ситуация довольно сильно изменилась. Поэтому если вам нужен какой нибудь продвинутый виджет, то советую обратить внимание на SmartGWT и Ext-GWT.

SmartGWT имеет целую кучу виджетов на все случаи жизни. Смотрите сами [2]. Обратите внимание на таблицы, что еще можно желать? Если вам все таки чего то не хватает, то виджет вы можете допилить. У библиотеки есть весьма живой форум [3], если у вас возникла проблема, ищите там. Я находил ответы на все мои вопросы. Не найдете, спрашивайте сами, обычно отвечают весьма оперативно. У библиотеки есть даже своя IDE, правда я ей не пользовался. О том что библиотека весьма популярна говорит и тот факт, что в плагине WindowBuilder к Эклипсе есть возможность накликать GUI из виджетов SmartGWT. У библиотеки есть большой, на мой взгляд, недостаток: вы напишите маленькую программку с одной единственной таблицей и размер этой программки станет сразу под 2 мегабайта. Т.е. написать сайт на SmartGWT конечно получится, но кто будет ждать пока он загрузится? Именно поэтому я написал этот сайт [4] на «чистом» GWT. Но для разных вебморд для банков данных и сервисов, которыми пользуются в основном по локалке, эта библиотека первый кандидат на рассмотрение.
Если по какой то причине SmartGWT вас не устроила, обратите внимание на GWT-Ext [5] и GXT [6]. С ними я не работал, так что ничего сказать не могу, но выглядит не плохо.

Если же вы решили таки обойтись «чистым» GWT я рекомендую вам посмотреть вот это [7]. Кроме того посмотрите на вот эти интересные демки [8]. Когда я это увидел я был просто в восторге, это же jQuery для GWT! Теперь можно делать весьма приятные анимационные эффекты буквально парой строчек.

Ну а под конец несколько моментов, которые полезно знать.

На сервере не обязательно должна крутится ява. Там может быть практически все что угодно, в том числе и PHP. А может и вообще ничего не быть, если страница не «разговаривает» сервером. Вот посмотрите: раз [9], два [10]. Эту штуку я сделал для предмета «E-Learning». Страницы полностью статические, в том смысле, что после загрузки сервер им не нужен.

Из GWT можно вызывать функции написанные на чистом JavaScripte. Делается это элементарно, пишите, что функция нативная и пишите там JavaScript. Здесь [11] это весьма подробно объяснено.

Это значит, что вы можете использовать в своем GWT проекте любую чисто JavaScript‘овскую библиотеку( вот тут правда я не очень уверен, если что поправьте). Если вы хотите вытащить из JavaScripta значение какой либо переменной посмотрите в сторону класса Dictionary [12].

Можно и наоборот, написать логику на GWT, а потом вызывать ее в JavaScripte. Здесь [13] описано как это делается.

Как то я даже находил в сети маленькую библиотеку, которая автоматизирует этот процесс.
Практически у каждого виджета есть статичный метод wrap(). Например если у вас есть див на статичной странице и вы хотите динамично изменять его содержимое, то вы просто пишите:

Label label = Label.wrap(DOM.getElementById("A"));
label.setText("new Text");

где «А» это id вашего дива. Просто, не так ли?

Не все явовские классы имеют свои аналоги в GWT. Например класс Thread использовать не получится, что понятно, т.к. в JavaScripte многопоточность в этом смысле не реализована(пока).

Ваши дополнения интересных библиотек и фичь приветствуются!

Автор: schroeder


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/4802

Ссылки в тексте:

[1] демо: http://gwt.google.com/samples/Showcase/Showcase.html#!CwCheckBox

[2] сами: http://www.smartclient.com/smartgwt/showcase/

[3] форум: http://forums.smartclient.com/

[4] сайт: http://3d-port.com

[5] GWT-Ext: http://www.gwt-ext.com/demo/

[6] GXT: http://www.sencha.com/examples/#overview

[7] это: http://code.google.com/p/gwtquery/

[8] демки: http://code.google.com/p/gwtquery-plugins/

[9] раз: http://alexey-schroder.de/elearn/Halbaddierer/index.html

[10] два: http://alexey-schroder.de/elearn/2-MUX/index.html

[11] Здесь: http://code.google.com/p/google-web-toolkit-doc-1-4/wiki/DevGuideJavaScriptFromJava

[12] Dictionary: http://google-web-toolkit.googlecode.com/svn/javadoc/1.4/com/google/gwt/i18n/client/Dictionary.html

[13] Здесь: http://code.google.com/p/google-web-toolkit-doc-1-4/wiki/DevGuideJavaFromJavaScript