gwt java что это

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(). Например если у вас есть див на статичной странице и вы хотите динамично изменять его содержимое, то вы просто пишите:

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

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

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

Источник

Введение в GWT

[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Что такое GWT?

Написание веб-приложений с использованием технологии AJAX (Асинхронный JavaScript и XML) для браузеров может оказаться очень утомительным занятием, которое требует глубокого знания как JavaScript, так и множества несоответствий различных браузеров. Google Web Toolkit (GWT) это Фреймворк с открытым исходным кодом, который позволяет Java разработчикам легко разрабатывать веб-приложения на AJAX без углубленного изучения JavaScript и браузерной разработки.

GWT предоставляет разработчику специальное Java API и позволяет разрабатывать компонентно-ориентированные графические пользовательские интерфейсы (GUI), избегая работы с JavaScript и абстрагируясь от протокола HTTP и DOM моделей, лежащих в основе браузеров. Все это достигается использованием GWT компилятора, который не генерирует Java байт-код, точнее он генерирует JavaScript! GWT компилятор берет клиентский Java код и генерирует JavaScript. Скомпилированное GWT приложение состоит из фрагментов HTML, XML и JavaScript. Если вы хотите, чтобы ваше веб-приложение соединялось с веб-сервером, GWT и здесь вам поможет. В арсенале GWT есть Remote Procedure Call (RPC) – механизм удаленного вызова процедур, который осуществляет простой обмен Java-объектами между клиентом и сервером в обе стороны.

GWT также позволяет разработчикам эффективно тестировать и отлаживать приложения без необходимости преобразования приложений в JavaScript и развертывания их на веб-сервере. GWT позволяет приложениям быть запущена в так называемом «Хостинг режиме»(“Hosted Mode”). В «Хостинг режиме» JVM исполняет код вашего GWT приложения в виде Java байт-кода внутри встроенного браузера. Запуск GWT приложений в «Хостинг режиме» делает отладку вашего GWT приложения очень простой. После того, как Вы проверили ваши GWT приложений в «Хостинг режиме», вы можете скомпилировать исходный код Java в JavaScript и развернуть ваше приложение. GWT приложения, которые были развернуты, называются запущенными в «Веб-режиме»(“Web Mode”).

Итак, короче говоря, вы пишите клиентскую и серверную части своего приложения на Java, и тогда GWT компилятор превратит ваши клиентские Java классы в совместимые с браузером JavaScript и HTML. После чего вы можете развернуть эти JavaScript и HTML на ваших веб-серверах, так что конечные пользователи будут видеть только веб-версию вашего приложения, в то время как классы серверной стороны могут быть развернуты на Tomcat или на любом сервлет-контейнере по вашему выбору.

Справочные материалы

Для получения дополнительной информации о GWT, получения ресурсов, инструментов, библиотек, которые вы можете использовать в ваших проектах, посетите Неофициальную страницу Google Wiki посвещенную GWT. На ней содержится список плагинов, которые доступны для различных IDE, присутствуют множество виджетов / GWT компонентов, которые можно использовать в ваших проектах. Страница также содержит ссылки на такие проекты, как MyGWT и GWT-EXT, которые позволяют произвести интеграцию с EXT JavaScript библиотеками. Вы можете также найти ссылки на библиотеку журналов GWT (GWT log library), drag-and-drop библиотеку (drag and drop library) и музыкальную библиотеку GWT (GWT sound library).

Читайте также:  что делать если джунгарский хомяк чешется

GWT Primer – вещи, которые необходимо знать перед началом работы


Поддержка браузеров GWT

По состоянию на GWT версии 1.4, GWT поддерживае следующие браузеры:

GWT Компилятор

В GWT компилятор преобразует исходный код Java в JavaScript. В GWT компилятор поддерживает большую часть возможностей языка Java и эмулирует их в Java Runtime Library.

Языковая поддержка

По состоянию на GWT версии 1.4, GWT компилятор может компилировать исходный код, совместимый с J2SE 1.4.2 или старше.

Эмуляция Библиотек времени выполнения (Runtime Library Emulation)

GWT предоставляет библиотеку эмулирующую JRE. Эта библиотека НЕ эмулирует все J2SE и J2EE классы. GWT эмулятор JRE поддерживает только некоторые классы из java.lang и java.util пакетов. Узнать, какие классы поддерживаются, можно в JRE Emulation Reference Manual.

Регулярные выражения Java не полностью поддерживается в GWT. Если вы собираетесь использовать регулярные выражения в GWT приложениях, нужно, чтобы вы использовали только тот синтаксис Java регулярных выражений, который используется в JavaScript.

GWT эмулятор JRE не поддерживает Java сериализации. Ему в замен, однако, в GWT имеется RPC средства, которые обеспечивают автоматическую сериализацию объектов. Эти RPC средства позволяют коду на стороне клиента создать удаленный метод для передачи сериализованных объектов в качестве параметров.

Клиентский код

GWT веб-приложения состоят из двух отдельных частей. Часть вашего приложения, которое отправляется по сети к пользователю, где оно работает, как JavaScript внутри веб-браузера, называется клиентской код. При написании клиентского кода важно иметь в виду, что этот код будет в конечном итоге превращаться в JavaScript. Поэтому убедитесь, что используете библиотеки и языковыхе конструкции, которые могут быть переведены на javascript.

Серверный код

Часть вашего приложения, которое работает на сервере, называется серверный код. Вашему GWT приложению, для взаимодействия с сервером, возможно, потребуется, например, загрузить или сохранить часть данных. Для того чтобы сделать это, приложение делает запрос к клиентскому коду (в браузере) с RPC механизма GWT. Пока обрабатывается RPC запрос, серверный код начинает выполняться выполняется. В GWT, компиляция клиентского кода не зависит от серверного кода. Как результат, на стороне сервера код не имеет каких-либо ограничений, которые налагаются на стороне клиента. В результате ваш серверный код не имеет, каких либо ограничений которые налогаются на клиентскую часть и следовательно вы свободны в выборе технологии кото he. Вы будете использовать в вашем серверном коде.

Отложенное связывание (Deferred Binding)

Отложенное связывание является одним из ключевых элементов. Оно позволяет GWT производить хорошо оптимизированный код JavaScript. Как вы видели ранее, GWT компилятор не поддерживает Java Reflection или динамическую загрузку классов (также называемую динамическим связыванием). Это происходит потому, что JavaScript среда, в которой GWT приложение будет запущенно, не поддерживает его. Ввиду невозможности динамичного связывания в GWT, вместо него используется так называемые отложенное связывание (deffered binding). Отложенное связывание похоже на динамическую загрузку классов. В то время как динамическая загрузка класса происходит во время выполнения, отложенное связывание происходит во время компиляции.

Когда GWT компилятор компилирует ваш клиентский код, он определяет различные «особенности браузера», которые должен поддерживать, и генерирует оптимизированный вариант приложения для каждой конкретной конфигурации. Поэтому через некоторое время у вас будут самые различные версии вашего приложения для каждого из поддерживаемых браузеров. Но отложенное связывание это нечто большее, чем просто мультибраузерная поддержка.

Хороший пример того, где отложенное связывание может быть полезным является мульти-языковая поддержка. GWT Компилятор использует отложенное связывание для создания совершенно разных версий вашего приложения для каждого языка. Таким образом, если GWT поддерживает 4-браузера, и вы напишите ваше приложение на 4 языках, GWT будет генерировать 16 различных подстановок вашего приложения во время компиляции. Во время запуска и выполнения, GWT выбирает подходящую версию вашего приложения и показывает его пользователю.

GWT загрузка (Bootstrapping)

Ниже приведен обзор процедуры загрузки для GWT приложений:

Источник

Пишем сайт на GWT: Часть 1

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

На хабре есть не так много статей на тему GWT (Google Web Toolkit) и в большинстве своем написаны они в ключе «какая это бяка, ничего не умеет, ничего не понятно». Кроме того, как показывает мой опыт, большинство программистов о GWT вообще ничего не слышали, а те кто слышал, думают, что больше чем на „Hello World“он не способен. Я постараюсь показать вам, что с помощью этого замечательного Фреймворка можно делать такие вещи, которые большинству JavaScript программистам просто не по зубам.

Перед началом небольшое отступление, т.к. вопрос «а зачем?» обязательно прозвучит. Этот сайт я написал на GWT, т.к. у меня и выбора то не было. С HTML,CSS, PHP и JavaScriptом я знаком(был) весьма поверхностно( как собственно и большинство Java-программистов), а вот идея и желание были. А потому использовал я что имел и получилось вроде весьма не плохо.

Посмотрите на этот сайт. Да это не шедевр, но он показывает, что GWT может все, что может JavaScript и даже больше. Почему больше? Ответ на этот вопрос полностью совпадает с ответом на вопрос: «почему С++ может больше чем Assembler?». На эту тему я предлагаю подискутировать в комментариях. А мы возвращаемся к GWT. Нет ничего лучше( мое стойкое убеждение), чем объяснять что либо на примере, а посему я предлагаю вам препарировать этот сайт.

Итак, начали

Вешаем слушателей на элементы

Итак, любое GWT приложение состоит из как минимум одной HTML-страницы и кучи яваскриптов. Посмотрим на эту самую страничку. Как не сложно догадаться, все самое интересное будет происходить в диве „ content“. Весь хедер и футер сделаны хардкорно, т.е. статически, и по существу к GWT никакого отношения не имеют(выключите JavaScript и поймете о чем я ). Но вот клики на кнопки обрабатывает GWT. Как это сделано? На каждый див(кнопку) вешается слушатель:

Вот и все, вот так просто. Я думаю в этом коде все понятно, может быть только за исключением строки:

Эта строка обязательна, т.к. говорит браузеру, что с этого момента этот элемент реагирует на клик. Если эту строку выкинуть, то слушатель сигнала о событии не получит и ваша логика, соответственно, обработана не будет. Эту мелочь надо просто знать, как собственно, везде и всегда.

Читайте также:  какой можно мясо кормящим матерям

Загрузка статического HTML-файла.

Но не весь контент генерируется на лету. Например центральная страница, это статический HTML. Как это так? Фаербаг вам это подтвердит. Он вам покажет, что на центральной странице грузится startRu.html (или startDE.html, если браузер сказал, что его родной язык- немецкий). Как это сделано?

Некоторые могут сказать «многа букaфф» и я с ними соглашусь. Но с другой стороны каждая строчка предельно ясна и этот код позволяет реагировать на ошибки. После загрузки этой страницы необходимо инициализировать ссылки(Выбрать модель, Положить в корзину и.д.). Инициализация, как вы догадываетесь, происходит точно так же как и у дивов.

Переход между страницами

Обратите внимание как происходит переход между страницами. Старый контент медленно исчезает, а новый так же медленно появляется. Кому то этот эффект может не понравиться и поэтому я просто посмотрел, какое впечатление произведет сайт, если этот эффект отключить. На вкус и цвет, как известно фломастеры разные, но мне на сайт без этого эффекта смотреть было уже не приятно. Итак, как это сделано. В GWT есть класс Animation. Посмотрите примеры в интернете, т.к. код для статьи слишком громоздкий. Но идея в общем такова: я написал класс, который получает получает ссылку на виджет, который должен появится. Ссылка на актуальный виджет, который отображается в данный момент, хранится в статическом поле центрального класса, который выполняет роль склада(паттерн registry). У старого виджета медленно изменяется свойство Opacity с 1 до 0, потом старый виджет заменяется на новый и у него меняем свойство Opacity с 0 до 1. Замена виджетов происходит очень просто:

По этому же принципу появляются все Pop-Upы.

Я думаю для начала хватит.

На этой странице много чего интересного, например сайт запоминает установленный язык, работают кнопки вперед-назад, динамический перевод сайта с русского на немецкий и наоборот(перевод, кстати, при загрузке сайта происходит до того, как вы увидите страницу), один раз подгруженная страница кэшируется(посмотрите, подгружается ли повторно например startRu.html?). Когда вы наведете на маленькие иконки продукта в таблице «купленных» продуктов, вы увидите один маленький фокус. Мелочь, а приятно. Красивые тултипы, которые показывают ошибки при регистрации. Проверка полей на клиенте. Поля, которые принимают только цифры и много чего еще.Попробуйте «купить» один продукт, получите ссылку и посмотрите, что происходит. А вам интересно КАК это происходит?

И все это сделал человек, который не имеет(вернее не имел) практически ни малейшего понятия о HTML,CSS и JavaScript в свободное от работы/учебы/жены/детей время и успевал еще и пиво с друзьями попивать!

Задавайте вопросы, если вам интересно как та или иная фича реализована.

История о том, как я этот сервис пытался продвигать, тоже, кстати, весьма интересна.

А теперь я вам открою истинную цель этого топика. Я ищу людей/инвесторов/компаньонов для этого проекта. Любые идеи, пожелания, конструктивная критика приветствуются.

Источник

Современный GWT, первые шаги

Минимальное руководство для начала разработки современных проектов GWT. С тегами gwt, java, руководство по запуску, интерфейс.

GWT – мощный инструмент, но иногда эта сила может восприниматься как сложность.

Я думаю, что эту сложность можно разделить на две причины; 1. большие проекты сложны, и когда вы пытаетесь объяснить, как решить сложную ситуацию, то само объяснение является сложным. 2. GWT обладает огромной экосистемой, и для каждой проблемы существуют различные решения. Это вынуждает вас принимать сложные решения.

Но, как мы туда попали?

GWT родилась в 2006 году, с тех пор эволюция веб-экосистемы была удивительной, даже внутри самой GWT произошло множество изменений, альтернатив и третьих сторон, которые создали удивительные решения для управления большими клиентскими веб-приложениями.

Вся эта сложность (оправданная только для больших проектов с опытными командами java) и все эти альтернативные архитектурные решения (что на самом деле хорошо) немного сбивают с толку, когда начинаешь с GWT.

Сказал все это, когда я должен использовать GWT? Я думаю, что вы должны использовать GWT в проекте компании только в том случае, если вы соответствуете этим двум пунктам.

Если у вас уже есть многолетний опыт работы с GWT, вы можете использовать его для многих вещей, даже для небольших приложений. Но чтобы оправдать усилия по вступлению, вы должны удовлетворить этим двум пунктам. Но, эх! перед проектом компании вы можете просто изучить его для удовольствия, и я надеюсь, что вы здесь для этого!

Чтобы упростить это руководство, я собираюсь сосредоточиться на стороне клиента. Кроме того, я приму некоторые личные решения, которые, на мой взгляд, являются общими и перспективными. Но помните, GWT – это гораздо больше, чем я объясню здесь!. Это то, что я выбрал:

Кроме того, если вы создадите приложение только для клиента, руководство станет намного меньше, и вы сможете играть с ним проще. Более того, я настоятельно рекомендую вам найти микроигры или микро-приложения, написанные на JS или машинописном языке, и перенести их в GWT. Это довольно хорошее упражнение, чтобы привыкнуть к GWT (это, например, игра-змея, которую я перенес из проекта JS rxsnake-gwt ).

1. Базовый архетип Maven 💩

Во-первых, мы создаем минимальный проект maven. Вы можете следовать этому руководству или выполнить эту команду, если у вас уже установлен maven.

Повторите попытку проверка mvn но на этот раз используйте меню IntelliJ maven. Любой JDK≥11 должен работать, но если у вас возникнут какие-либо проблемы, просто используйте JDK 11.

Я начинаю с этого базового архетипа maven, потому что хочу отметить, что проект GWT использует всю экосистему Java, и он использует аналогичные шаблоны, но применяется к интерфейсной разработке.

2. Подтвердите это 🌈

Во-первых, измените pom.xml чтобы добавить зависимости GWT и плагин GWT Maven, который добавит некоторые полезные цели для компиляции и запуска GWT. Добавьте это в раздел зависимости:

И это в начале, после artifactId и версии элементов:

Это расширит maven, добавив конкретные выполнения GWT в жизненный цикл maven. Так, например, после добавления этого, если вы снова запустите пакет mvn вы заметите, что существуют различные новые шаги, наиболее важным из которых является тот, который запускает компилятор GWT, включая исходный код нашего проекта, и выводит окончательный JS. Обратите внимание, что сейчас это не работает, потому что мы не обновили исходный код java! Есть 2 конфигурации, имя модуля указывает на основной gwt.xml файл (объясненный позже) и модуль пропуска используется, чтобы избежать приятной, но немного “волшебной” утилиты из этого плагина, которая будет генерировать gwt.xml файл для вас, на данный момент я предпочитаю создать его вручную на следующем шаге, поэтому я просто настроил плагин так, чтобы он не создавал этот файл для меня.

Читайте также:  какой медведь самый опасный белый или бурый

Обновите проект IntelliJ, чтобы зависимости загружались и добавлялись в путь к классам проекта.

Я думаю, что код не требует пояснений, но… да, getBodyElement возвращает тело веб-страницы, чтобы мы могли добавить Привет, мир! и посмотрите это на нашей странице.

Наконец, создайте index.html файл в me.public пакете с этим содержимым:

3. Пакет, запуск и отладка 🔥

GWT перенес код в JS, и чтобы увидеть результат, вам нужно будет открыть его в своем браузере. Но сначала вам нужно скомпилировать и упаковать проект. Бежать:

Это создаст необходимые файлы и поместит их в целевую папку проекта. Затем, после успеха, откройте результат на mac, вы можете использовать открыть цель/привет-приложение-ГОЛОВА-СНИМОК/меня. App/index.html в терминале. В противном случае откройте этот файл в своем браузере или перетащите файл в окно браузера. Вы должны увидеть Привет, мир! в вашем браузере.

Это все, что вам нужно для отладки кода GWT. Но, обратите внимание, что вы можете написать много кода на чистой Java, этот код, особенно если вы избегаете конечного уровня пользовательского интерфейса, тривиален для запуска в JVM или для тестирования с помощью JUnit. GWT – это все о совместном использовании и использовании инструментов Java, поэтому, если вы разрабатываете такие инструменты, как, например, пространственный индекс, гораздо проще и быстрее тестировать, запускать и отлаживать его с помощью простой Java. А затем используйте его на стороне клиента.

4. Приправьте это 🌮

И вот тут личный подход становится сумасшедшим. Теперь я собираюсь объяснить, как добавить 2 фунта, “чистую” JS-библиотеку (Elemental 2) и “чистую” Java-библиотеку (RxJava). Я специально выбрал обе библиотеки в качестве противоположных крайних случаев. Используя “чистые” библиотеки JS, вы должны увидеть, как вы можете получить доступ к собственному JS-коду в GWT и насколько он прост и легок. И используя “чистую” Java-библиотеку, вы увидите, что в GWT вы можете использовать классические библиотеки чистой Java в браузере. Но мы не собираемся напрямую зависеть от этих 2 библиотек, вместо этого мы будем использовать этот график зависимостей:

Помните мою рекомендацию; идея с этими 2 библиотеками заключается в том, что вы сможете найти На JS+RxJS проекты и миграция к Ява+RxJava с GWT, используя ваши знания Java! Это потрясающий способ привыкнуть к GWT, и есть много забавных микрореактивных проектов, которые можно улучшить!

Чтобы добавить эти зависимости, обновите pom.xml с:

Затем перейдите к своему App.gwt.xml файл модуля и добавьте эти 2 зависимости:

Теперь обновите содержимое App.java с:

Просто шучу, никакого вывода вообще, только несколько заметок о том, куда вам следует идти дальше. Надеюсь, тебе понравится. GWT – это супер мощный транспилер. Мы даже не говорили о том, как он может управлять ресурсами (JS, CSS, HTML, переводами, изображениями и т. Д.) И встраивать все это в один JS-файл. Он огромен, но даже игнорируя все эти дополнительные утилиты, просто как “простой” транспилер, его более чем достаточно, чтобы быть полезным для всех тех экспертов Java, которые хотят писать код браузера.

Наконец, моя рекомендация по поводу обращения за помощью :

Этих 3 мест должно быть достаточно. Но, если вы хотите найти больше вещей, может быть, какой-нибудь сюрприз, тогда перейдите в удивительный gwt где есть бесконечный список полезных ресурсов GWT, учебник, советы, видео, блоги и многое другое!

Источник

Java вместо javascript (gwt+netbeans)

Когда я увидел gwt и gwt-ext, я подумал, что меня где-то обманули, когда не рассказали об этом раньше. Мучения с отладкой скриптов с использованием ExtJS были долгими, мы использовали Java как серверную платформу, вручную занимались сериазилацией/десереализацией серверных объектов, подгоняли блоки с помощью css и занимались многими другими вещами, отнимавшими кучу времени. Однако, можно все это оставить позади. Теперь можно рисовать красивые экстовые окошки кодом на Java (not js)! GWT — замечательная вещь. Она позволяет нам уйти от написания js-кода, потому что генерирует js-код самостоятельно; и программист может даже его не смотреть, потому что отлаживать его можно тоже в исходниках на Java!Далее я постараюсь рассказать, как настроить gwt под netbeans.

Приступаем

Необходимые опции при установке Netbeans.

Голый GWT

.
java classpath =»$:$» failonerror =»true»
classname =»com.google.gwt.dev.GWTCompiler» fork =»true» >
arg value =»-out»/>
arg path =»$/»/>
arg value =»-style»/>
arg value =»$»/> arg value =»-logLevel»/>
arg value =»$»/>
arg value =»$»/>
jvmarg value =»-Xmx512m»/>
java >
. target name =»debug-connect-gwt-shell» if =»netbeans.home» depends =»init» > http://bankinform.ru/habraeditor/images/yu-logo.png
.
java fork =»true» classname =»com.google.gwt.dev.GWTShell» failonerror =»true» >
jvmarg value =»-Xmx512m»/>
.
java >
target >
.

Пробный запуск.

При этом для клиента создан следующий код:

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;

public class MainEntryPoint implements EntryPoint <
// перегруженная функция загрузки модуля
public void onModuleLoad() <
// создаем обычную текстовую метку
final Label label = new Label( «Hello, GWT. » );
// создаем кнопку
final Button button = new Button( «Click me!» );

// вешаем на кнопку обработчик, делающий метку невидимой.
button.addClickListener( new ClickListener() <
public void onClick(Widget w) <
label.setVisible(!label.isVisible());
>
>);

// добавляем на «корневую» панель нопку и метку.
RootPanel. get ().add(button);
RootPanel. get ().add(label);
>
>

GWT-Ext>

Подключение библиотеки gwt-ext.

Еще нужно не забыть кинуть ExtJS 2.0.2 в папку web/js/ext. И в довершение, нужно рассказать модулю, что у него появились новые компонент, связанные c extJs. Для этого откроем файла our/sample/Face.gwt.xml и поправим его следующим образом:

import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.core.client.GWT;
public interface PersonService extends RemoteService <
public Person loadPerson( int someValue);

public static class App <
private static final PersonServiceAsync ourInstance;
static <
ourInstance = (PersonServiceAsync) GWT.create(PersonService. class );
((ServiceDefTarget) ourInstance).setServiceEntryPoint(GWT.getModuleBaseURL() + «PersonService» );
>
public static PersonServiceAsync getInstance()
<
return ourInstance;
>
>
>

package our.sample.client;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface PersonServiceAsync <
public abstract void loadPerson( int someValue, AsyncCallback

package our.sample.server;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import our.sample.client.Person;
import our.sample.client.PersonService;

public class PersonServiceImpl extends RemoteServiceServlet implements PersonService <

public class FaceEntryPoint implements EntryPoint <

public void onModuleLoad() <
Panel panel = new Panel();
panel.setBorder( false );
panel.setPaddings(15);

final FormPanel formPanel = new FormPanel(Position.CENTER);
formPanel.setFrame( true );
formPanel.setTitle( «Тестовая формочка» );
formPanel.setWidth(500);
formPanel.setLabelWidth(100);

FieldSet fieldSet = new FieldSet( «Человек» );
fieldSet.add(txtName);
fieldSet.add(txtSurname);
fieldSet.add(txtPatronymic);
fieldSet.add(txtEmail);
fieldSet.add(txtAge);
txtEmail.setVtype(VType.EMAIL);
txtAge.setVtype(VType.ALPHANUM);

public void onFailure(Throwable caught) <
MessageBox.alert( «Извините, произошла какая-то ошибка!» );
>

upd: чтобы все это не казалось пустым и ненужным, можно посмотреть примеры на gwt-ext.

Источник

Сказочный портал