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

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

    Эта статья предназначена в первую очередь начинающим и навряд ли принесет какую либо пользу людям бывалым. Но было бы неплохо, если бы люди с опытом привели бы парочку полезных ссылок в комментариях.
    Итак, знакомство я советую начать с демо. Тогда вы сможете себе представить, а что 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 многопоточность в этом смысле не реализована(пока).

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

    Подробнее
    Реклама

    Комментарии 10

      +1
      Из существенных отличий от Java еще можно упомянуть отсутствие Reflection.
        0
        Вернее, там есть свои костыли для этого, но это не Java Reflection.
        +1
        В компанию к SmartGWT, GWT-Ext и GXT хочется еще добавить Vaadin
          +1
          За компанию пойдет. Но на сколько я понял, vaadin очень сильно отличается. Он не UI фреймворк, а самодостаточная платформа для построения серверориентированных (во сказал-то :) )приложений.
            0
            Да Вы правы, именно им он и является, использует GWT только для отрисовки UI в браузере, а вся логика выполняется на сервере, что в плане безопасности намного лучше. Конечно он имеет хоть и другую концепцию, но используется в схожих задачах.
              –1
              И работает ужасно медленно, на каждый чих пользователя вынуждает обращаться к серверу без возможности переложить хоть что-либо на клиента.
                0
                Господа минусяторы видимо не компетентны, ага
                Поясню — любой, вы слышите, любой пользовательский экшн с вьюхами тутже организует запрос на сервер — ведь вся логика на сервере!!!
                А теперь представьте хотя бы пару десятков онлайн пользователей… никаких ресурсов не хватит.
                GWT RPC решает.
          0
          Очень важные вещи:

          1. Метод clone() не объявлен у Object эмулируемого GWT => из коробки вы не сможете использовать объекты переопределяющие clone()
          Решение я писал здесь: code.google.com/p/google-web-toolkit/issues/detail?id=5068#c1

          2. Неэмулированные GWT классы можно определелить самому (если известно, что нет явного использования методов, то их можно оставлять пустыми или выкидывать AssertionError)
            –1
            А в чем смысл статьи-то вообще? Сказать начинающим, что есть пара библиотек типа GWT?

            P.S. Статья ни о чем…
              0
              Для начинающих не помешалобы изучение начать c tutorial и showcase.
              Еще можно почитать blog.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое