Google Web Toolkit (GWT, ) — свободный 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 1.0 — 17 мая 2006 года GWT 2.0 — 8 декабря 2009 года GWT 2.5 — 24 октября 2012 года GWT 2.6 — 23 января 2014 года GWT 2.6.1 — 10 мая 2014 года GWT 2.7 — 20 ноября 2014 года GWT 2.8 — 20 октября 2016 года GWT 2.8.1 — 24 апреля 2017 года GWT 2.8.2 — 19 октября 2017 года GWT 2.9.0 — 13 мая 2020 года GWT 2.10.0 — 9 июня 2022 года

Разработка с применением 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-отладкиOlson, Steven Douglas (2007). Ajax on Java. O’Reilly. p. 183. ISBN 978-0-596-10187-9. GWT устраняет некоторые кросс-браузерные проблемы разработки. JUnit-интеграция Поддержка интернационализации и локализации Поддержка HTML Canvas (с учётом изменений API) Разработчики могут вставлять готовые JavaScript-фрагменты в исходный Java-текст, применяя JavaScript Native Interface (JSNI). Поддержка использования Google API Gears в приложениях GWT Программное обеспечение с открытым исходным кодом Разработчики могут проектировать и разрабатывать приложения в чистом объектно-ориентированном стиле, так как они используют Java (вместо JavaScript).Perry, Bruce W (2007). Google Web Toolkit for Ajax. O’Reilly Short Cuts. O’Reilly. pp. 1-5. ISBN 978-0-596-51022-0. Обычные JavaScript-ошибки, такие, как опечатки и несоответствие типов, обрабатываются во время компиляции. JavaScript, генерируемый GWT-компилятором, может быть разделен на фрагменты. Это не только дает возможность лучше понимать его, но и экономит время загрузки приложения — первый фрагмент может начать работать, не дожидаясь, пока весь JavaScript текст будет загружен Ряд библиотек доступен для GWT от Google или третьих лиц. Это расширяет функциональные возможности GWT.

Доступные виджеты Начиная с версии 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 GwtMobile GWT-мобильный-WebKit jqm4gwt м-GWT

Примечания

См. также DWR Script# Vaadin Wicket

Ссылки Домашняя страница GWT Официальный блог GWT Официальные обсуждения GWT Открытая библиотека визуальных эффектов для разработки GWT приложений (GWT-Ext) Русский учебник GWT Введение в GWT

Категория:AJAX Категория:Свободное программное обеспечение Google Категория:Программное обеспечение для macOS Категория:Программное обеспечение для Windows Категория:Программное обеспечение с лицензией Apache Категория:Программное обеспечение для Linux Категория:Свободное программное обеспечение, написанное на Java Категория:Свободные библиотеки программ Категория:Фреймворки