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

в 12:08, , рубрики: Google Web Toolkit, GWT, java, Веб-разработка, метки: ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: schroeder


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js