- PVSM.RU - https://www.pvsm.ru -
Добрый день дамы и господа,
Эта статья предназначена в первую очередь начинающим и навряд ли принесет какую либо пользу людям былым. Но было бы неплохо, если бы люди с опытом привели бы парочку полезных ссылок в комментариях.
Итак, знакомство я советую начать с демо [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
Нажмите здесь для печати.