Google Web Toolkit (GWT, ˈɡwɪt) — свободный Java-фреймворк, который позволяет веб-разработчикам создавать Ajax-приложения. Его особенность — компилятор Java -> JavaScript, позволяющий почти всю разработку клиента и сервера реализовать на основе Java и лишь на последнем этапе создать соответствующие JavaScript, HTML и CSS. Выпускается под лицензией Apache версии 2.0. GWT делает акцент на повторное использование и кросс‐браузерную совместимость.
История
Версия 1.0 RC 1 (build 1.0.20) выпущена 16 мая 2006 года. Компания Google анонсировала GWT на конференции JavaOne в 2006 году.
История версий:
Разработка с применением GWT
Используя GWT, разработчики могут быстро писать и отлаживать AJAX-приложения на языке Java, используя инструментарий отладки Java. Компилятор GWT переведёт код Java-приложения соответствующему браузеру JavaScript, HTML и CSS.
Кроме того, GWT оснащен XML-парсером, поддержкой интернационализации, интерфейсом для удаленного вызова процедур, интеграцией JUnit и небольшим пакетом виджетов для разработки элементов графического интерфейса пользователя (GUI). Они могут быть созданы аналогично тому, как это делается с помощью пакета Swing.
Отладка GWT-приложения разделена на две части: отладка серверной части приложения осуществляется как отладка обычного Java web-приложения, для отладки клиентской части понадобится gwt dev-plugin для браузера.
Утилита командной строки webAppCreator, поставляемая вместе с GWT, автоматически создает все файлы, необходимые для нового GWT-проекта. Она также позволяет создавать файлы проекта Eclipse.
Существует подключаемый модуль Google Plugin для IDE Eclipse (начиная с версии 3.3), позволяющий упростить процессы создания GWT-проекта и размещения готовых приложений на сервисе Google App Engine.
Особенности
- Избегается повторная реализация одних и тех же графических интерфейсов для локальных и для веб-приложений с помощью различных технологий, например — RCP для первых и JSF — для вторых.
- Обычная схема — «stateless клиент / stateful сервер» может быть заменена схемой «stateful клиент / stateless сервер». Это позволяет больше реакций пользователя обрабатывать непосредственно в клиенте.
- Простой механизм удалённого вызова процедур. В сочетании с предыдущим качеством это позволяет серверу передавать в ответ данные, а не HTML. Сервер при этом может быть любой — не обязательно тот, который передал первую картинку.
- Для передачи сложных данных может использоваться как стандартный RPC — передаче подлежат сериализируемые Java-объекты, так и тексты на XML или JSON.
- Динамические и многоразовые компоненты пользовательского интерфейса (виджеты): Программисты могут использовать заранее разработанные классы для реализации трудоемких элементов динамического поведения, таких, как drag-and-drop, или сложных визуальных структур.
- Управление историей браузера
- Поддержка полнофункциональной Java-отладки[3]
- GWT устраняет некоторые кросс-браузерные проблемы разработки.[3]
- JUnit-интеграция
- Поддержка интернационализации и локализации
- Поддержка HTML Canvas (с учётом изменений API)
- Разработчики могут вставлять готовые JavaScript-фрагменты в исходный Java-текст, применяя JavaScript Native Interface (JSNI).
- Поддержка использования Google API Gears в приложениях GWT
- Программное обеспечение с открытым исходным кодом
- Разработчики могут проектировать и разрабатывать приложения в чистом объектно-ориентированном стиле, так как они используют Java (вместо JavaScript).[4] Обычные JavaScript-ошибки, такие, как опечатки и несоответствие типов, обрабатываются во время компиляции.
- JavaScript, генерируемый GWT-компилятором, может быть разделен на фрагменты. Это не только дает возможность лучше понимать его, но и экономит время загрузки приложения — первый фрагмент может начать работать, не дожидаясь, пока весь JavaScript текст будет загружен[4]
- Ряд библиотек доступен для GWT от Google или третьих лиц. Это расширяет функциональные возможности GWT.[4]
Доступные виджеты
Начиная с версии 2.4 (сентябрь 2011), GWT предлагает несколько виджетов
Виджеты и панели
Виджеты
|
Панели
|
Button
|
PopupPanel
|
PushButton
|
StackPanel
|
RadioButton
|
StackLayoutPanel
|
CheckBox
|
HorizontalPanel
|
DatePicker
|
VerticalPanel
|
ToggleButton
|
FlowPanel
|
TextBox
|
VerticalSplitPanel
|
PasswordTextBox
|
HorizontalSplitPanel
|
TextArea
|
SplitLayoutPanel
|
Hyperlink
|
DockPanel
|
ListBox
|
DockLayoutPanel
|
CellList
|
TabPanel
|
MenuBar
|
TabLayoutPanel
|
Tree
|
DisclosurePanel
|
CellTree
|
SuggestBox
|
RichTextArea
|
FlexTable
|
Grid
|
CellTable
|
CellBrowser
|
TabBar
|
DialogBox
|
Многие обычные виджеты, отсутствующие в GWT, реализованы в сторонних библиотеках, таких как Sencha GXT, GWT Component Library, GWT-Ext, GWT Widget Library, GWTiger, Rocket GWT, Dojo, SmartGWT и т. д.
Компоненты
Основные компоненты GWT:
- Компилятор Java -> JavaScript (GWT Java-to-JavaScript Compiler)
- Переводит Java код в JavaScript.
- Отладчик (браузер, GWT Development Mode)
- Позволяет запускать GWT-приложения в режиме отладки (ранее назывался «hosted»; приложения запускаются как Java код в JVM без компиляции в JavaScript).
- Библиотека эмуляции JRE-классов (JRE emulation library)
- Реализация часто используемых стандартных Java-классов на JavaScript'е.
- Библиотека графических элементов (GWT Web UI class library)
- Множество пользовательских интерфейсов и классов для создания виджетов.
- Веб-сервер
- Tomcat или Jetty.
Мобильные приложения
Как общий фреймворк для создания веб-приложений, GWT также способен использоваться в качестве фреймворка для разработки мобильных и планшетных приложений либо сделав необходимые виджеты и анимации с нуля, либо с помощью одного из мобильных фреймворков для GWT. HTML5-приложение, написанное в GWT, может иметь отдельные views для планшетов и мобильных телефонов.
Некоторые из наиболее распространенных мобильных библиотек GWT
Примечания
См. также
Ссылки
|
---|
Низко- уровневые | |
---|
Высоко- уровневые | Amiga OS | |
---|
Mac OS и macOS | |
---|
Windows | |
---|
UNIX, под X | |
---|
Кросс- платфор- менные | На основе Flash | |
---|
На основе XML, AJAX или SVG | |
---|
На основе Java | |
---|
На основе C или C++ | |
---|
На основе Common Lisp | |
---|
На основе Pascal | |
---|
На основе Python | |
---|
На основе Objective C | |
---|
|
---|
|
---|
|
---|
|
Реклама | |
---|
Коммуникации | |
---|
ПО | |
---|
Платформы | |
---|
Инструменты разработки | |
---|
Публикация | |
---|
Поиск (PageRank) | |
---|
Тематические проекты | |
---|
Закрытые проекты | |
---|
См. также | |
---|