Понравилась презентация – покажи это...
Слайд 0
Использование Google Web Toolkitдля разработки AJAX-приложений
Илья Обшадко
http://ilya.obshadko.com/
Слайд 1
Основное
Google Web Toolkit – набор инструментальных средств для разработки AJAX-приложений на языке Java
Разработчики могут использовать GWT, экономя на "лишней" языковой среде и сокращая время на отладку
Архитекторы за счет использования GWT получают в свое распоряжение индустриальный набор методик и паттернов проектирования
Менеджеры могут выиграть от использования GWT, т.к. не будут нуждаться в выделенных ресурсах под разработку на JavaScript
http://ilya.obshadko.com/
Илья Обшадко
http://code.google.com/webtoolkit
Слайд 2
Основы GWT
JAVA
JS
GWTC
IDE
GWTS
байткод
JS
JS
Safari
Firefox
MSIE
deployment
отладка и тестирование
http://ilya.obshadko.com/
Илья Обшадко
Слайд 3
Построение UI
Вся работа с UI построена на использовании DOM
Единая иерархия базовых виджетов
Расширяемость ограничена только фантазией разработчика (mygwt, gwt-ext etc.)?
Управление визуальным отображением при помощи CSS
Работа с состояниями приложения при помощи history
UI строится только динамически
http://ilya.obshadko.com/
Илья Обшадко
Слайд 4
Клиент-сервер
Для hardcore J2EE fans: встроенная подсистема клиент-серверного взаимодействия. Требует J2EE-бэкенда, имеет довольно запутанный API. Формат передачи данных нестандартный. Существенный плюс: позволяет передавать туда и обратно Java-объекты
Для всех остальных: привычный XmlHttpRequest, естественно, обернутый в Java-классы. Формат можно использовать любой, в GWT встроена поддержка для работы с JSON и XML
По возможности избегать передачи больших объемов
http://ilya.obshadko.com/
Илья Обшадко
Слайд 5
Клиент-сервер: use case
Задача: форма бронирования авиабилетов с возможностью подсказки при вводе части названия города или кода аэропорта, проверкой корректности дат и ряда других условий, накладываемых партнерской системой; должно работать в условиях фактического отсутствия доступа к server side code
Решение: на основе стандартных виджетов SuggestBox и SuggestOracle. Для того, чтобы облегчить загрузку страницы с формой, данные по аэропортам разбиты на файлы по первым буквам названий. Чтобы избежать оверхеда на JSON-парсере, использован текстовый формат
http://ilya.obshadko.com/
Илья Обшадко
Слайд 6
Реализация модели MVC
На уровень управления выносится вся работа с асинхронными вызовами и бизнес-логикой, на уровень представления – манипуляции с DOM; модель в данном случае – просто объекты предметной области
Любое изменение состояния приложения начинается с изменения history token
Введение необходимых абстракций: сериализация цепочки удаленных вызовов (ChainedCall), рендеринг (LayoutCallback)
Использование inner classes вместо методов
http://ilya.obshadko.com/
Илья Обшадко
Слайд 7
MVC + GWT: use case
onHistoryChanged()?
создание контекста
рендеринг
есть еще?
разблокируем UI
обработка рез-тов
асинхронный вызов
блокируем UI
ChainedCall
execute()?
processResults()?
LayoutCallback.execute ()?
next()?
да
нет
http://ilya.obshadko.com/
Илья Обшадко
Слайд 8
Инструменты разработки
GWT SDK: самые простые задачи можно решать из командной строки
IntelliJ IDEA: поддержка GWT входит по умолчанию начиная с версии 6
Eclipse: большой выбор плагинов, поддерживающих GWT, как бесплатных, так и коммерческих
Использование привычного отладчика
http://ilya.obshadko.com/
Илья Обшадко
Слайд 9
Заключение
Плюсы: стандартность, полностью линейный процесс разработки, хорошая кроссплатформенность, активное комьюнити
Минусы: неизбежный оверхед по объемам кода и динамический рендеринг, который не всегда приемлем
Потенциальные сценарии применения: если вы давно хотели начать использовать AJAX но не знаете с чего начать; если вы ненавидите JavaScript; есть вам нужно создать Web2.0-стартап, а JavaScript ненавидят ваши программисты
http://ilya.obshadko.com/
Илья Обшадко