GWT приложение за 30 минут

    Буквально на днях вышла новая (пока нестабильная) версия Spring-Roo одной из основных фич которой является поддержка генерации пользовательского интерфейса на GWT.

    Мне стало интересно, сегодня поэксперементировал, под катом перевод моего блога (для тех кому лень читать на английском) с описанием как сделать GWT приложение менее чем за 30 минут. Надеюсь хабровчанам это покажется интересным и полезным.
    image

    О чем речь


    Spring-Framework — один из самых популярных framework-ов для Java. Я думаю практически каждый кто писал web-приложения на Java сталкивался с ним;
    Spring-Roo — утилита для быстрой генерации проекта: entity-классы для работы с базой, типовой CRUD, ряд других типовых задач. Я так понимаю, идея растет из Ruby-On-Rail — но могу ошибаться
    GWT — библиотека для создания современных web-приложений с активным использованием ajax. Разработана Google и все больше и больше набирает популярность

    Для начала нам потребуется JDK 1.6 (какая неожиданность!) и Apache Maven. Я надеюсь у людей, интересующихся GWT и Spring эти продукты ставятся сразу же после установки операционной системы.

    Качаем последнюю версию Spring-Roo 1.1M1 с сайта Spring Source

    Качаем скрипт для roo: clinic.roo — это почти такой же clinic.roo что идет в примерах, но только адаптированный для использования GWT:
    * Закоментированы enum-ы — они видимо не поддерживаются пока-что;
    * Boolean поле изменено с примитива на java.lang.Boolean (так же приводило к ошибке компиляции — видимо пока-что не поддерживается)
    * Ссылка один-ко-многим (в виде коллекции Set) — закоментирована — не поддерживается пока при генерации GWT
    * Calendar заменен на Date;
    * Закоментирован код генерирующий пользовательский интерфейс на Spring-MVC
    * И включена генерация интерфейса на GWT (команда gwt setup)

    Запускаем этот скрипт:
    # roo
    roo> script --file clinic.roo
    roo> exit

    Ждем некотое время пока roo сгенерит для нас исходные коды проекта. В итоге мы имеем практически стандартный проект использующий maven для сборки.

    Запустим его:

    # mvn gwt:run


    Тут придется какое-то время подождать, потому как во время сборки будут закачаны все необходимые библиотеки (а их достаточно много). Повторные сборки будут проходить значительно быстрей.
    image

    Скопируем предложеный URL и откроем его в браузере
    image

    Ваше GWT приложение готово!

    Выводы


    Spring-Roo — идея хорошая, но его интеграция с GWT пока сыровата — многие вещи не работают.
    Но использовать его для (например) изучения и быстрого старта — вполне возможно — в чем он вам, я надеюсь, и поможет

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 19

      +1
      Но использовать его для (например) изучения и быстрого старта — вполне возможно

      Про быстрый старт вы надеюсь пошутили? :)
        +2
        Почему пошутили? Roo генерит классный, эталлонный код веб приложения, со всеми фичами типа i18n.
        Строить на Roo сложные приложения возможнои не стоит, но для простых интерфейсов и для ознакомления — самое то.
          +1
          мне код который roo сгенерил понравился именно с точки зрения ознакомления — узнал много нового про spring и hibernate, про AOP вообще молчу
            +1
            ага. именно для ознакомления руу очень крут.
            +1
            А аспекты вы куда дели? :) В roo напихано существенно больше технологий чем может пригодиться в обычной жизни.
              0
              ну я аспектами никогда не пользовался — просто наверное потому что не умею :)
              и в этом плане руу хороший пример использования и туториал
                0
                Просто для простого приложения добавление аспектов приводит только к его усложнению. Наиболее простая связка с моей точки зрения для вебприложений в спринге, это все же JPA + Spring MVC. Ну и все же Hibernate при этом использовать не стоит, большинству хватит и того что дает JPA.
                0
                Аспекты удобно применять для управления уровнями изоляции транзакций. Правда не в курсе что там в roo делается с помощью аспектов.
                  0
                  Еще это можно делать аннотациями.
            +3
            И почему как только я начинаю разрабатывать свой велосипед, так тут же объявляется новый классный готовый:-)
              +1
              Главное, чтобы он не появился после окончания разработки своего велосипеда.
              А то потом только и остается, что убеждать себя — что он зато с блекджеком и шлюхами.
              0
              а можно вживую пощупать, то что получилось? а то картинки это конечно интересно, но…

              выше делали замечание, что «Строить на Roo сложные приложения возможнои не стоит, но для простых интерфейсов и для ознакомления — самое то.», а вот почему не сказали (((
                0
                Как у любой другой конструктор, Roo хорош для «стандартных» задач, но с его помощью не получиться сгенерить приложение решающее что-то нестандартное.
                Хотя — в результате работы Roo — вы получаете вполне стандартный проект основанный на maven — и дальше его можно «пилить» руками без использования Roo

                Пощупать — к сожалению сейчас никуда не могу выложить — но — с точки зрения «конечного пользователя» — там щупать особо и нечего — простейший CRUD — все-таки данный пример больше инетересен с точки зрения изучения кода, который получился при генерации.
                0
                с т.з. генерации кода и ускорения разработки, на мой взгляд, хорош Grails. Имеются и плагины для GWT,
                а Roo у SpringSource как-то медленно развивается
                  0
                  у меня так и не получилось запустить на линуксе — проблемы с gwt плагином
                  а mvn tomcat:run и mvn jetty:run валятся на ошибке про закольцованный индекс

                  на винде gwt:run завелось, но работало по сути только под firefox (и то не все сущности получалось редактировать. в частности не работали животные и прием)
                  как ни странно на хроме тоже наблюдались проблемы (скорей всего связанные с плагином)

                  ну собсно от М1 сильно много ждать не приходится
                  зря только гугл со спрингсорсом раструбили о поддержке gwt — она еще очень сырая
                    0
                    У меня получилось на Ubuntu завести пример. Но, не работают точно такие же вещи, как и у вас на винде. Плюс еще не понравилась скорость выполнения
                    0
                    Как-то пробовал этот roo. Как по мне так — генерит совершенно бредовый код. Любой нормальный программист при имении достаточного опыта должен уметь решить стандартно-типовую задачу с минимальными усилиями.
                      0
                      чаще всего такая задача решается копи-пастом с предыдущего проекта и подгонкой под текущий. Практически у каждого я думаю есть набор болванок «веб-проект на спринге», «веб-проект на jsf & ejb» — и прочее.

                      roo генерит такую-же болванку — но да — достаточно навороченную — одни аспекты чего стоят
                      +1
                      Самая классная фишка Roo, которую упустили и автор, и комментаторы — это то, что даже после изменения проекта БЕЗ использования Roo, войдя снова в Roo Shell, вы увидите, что все ваши изменения были учтены. Лично мне это сносит крышу.

                      Плюс Roo Shell — это очень круто и удобно. Контекстно-зависимый выбор возможных вариантов по Табу, например.

                      Only users with full accounts can post comments. Log in, please.