Google App Engine Java и Google Web Toolkit. Разработка Web-приложений

Google App Engine Java и Google Web Toolkit. Разработка Web-приложений
Автор: Тимур Машнин
Год: 2014
ISBN: 978-5-9775-0828-5
Страниц: 352
Язык: Русский
Формат: PDF
Размер: 10 Мб

Download

Книга посвящена разработке Web-приложений для платформы Google App Engine и на основе фреймворка Google Web Toolkit на языке программирования Java и с использованием среды разработки Eclipse. Рассмотрено создание проектов и запуск GWT-приложений и приложений для Google App Engine. Описано использование программного интерфейса служб платформы Google App Engine, создание GUI-интерфейса на основе фреймворка Google Web Toolkit, оптимизация и интернационализация GWT-приложения. Показано применение фреймворков UiBinder и Activities and Places для разработки клиентской части GWT-приложения, а также фреймворков GWT RPC и RequestFactory для разработки серверной части GWT-приложения.
Материал книги сопровождается большим количеством примеров с подробным анализом исходных кодов.

+

Платформа Google App Engine

  • Начало работы с Google App Engine
  • Журналирование приложения
  • Определение местоположения пользователя
  • Аутентификация пользователей
  • Использование JSP/JSF-страниц в GAE-приложении
  • Хранение данных приложения
  • Поддержка сессий и HTTPS
  • Сервисы сообщений Mail, XMPP и Channel
  • Фильтры и обработка ошибок
  • Разработка Backend-приложений
  • Использование протокола OAuth 2.0 для получения доступа к Google-сервисам
  • Запланированные задачи и очередь задач
  • Службы поиска Search и Prospective Search

Использование JSP/JSF-страниц в GAE-приложении

В ответ на запрос клиента GAE-приложение может динамически формировать HTML-контент непосредственно в методе doGet() или doPost() HttpServlet-сервлета приложения с помощью вывода response.getWriter().println(). Однако делать это можно и с помощью Java-технологий, в числе которых JSP (JavaServer Pages) и JSF (JavaServer Faces).

Технология JSP

Технология JSP (JavaServer Pages) позволяет создавать динамические Web-странички, представляющие собой текстовые документы, которые содержат два типа информации — элементы HTML, SVG, XML и др., формирующие статический контент, и JSP-элементы, создающие динамический контент Web-странички.

Спецификацией JavaServer Pages для JSP-страниц допускаются файловые расширения jsp, jspf (фрагменты JSP-страниц) и jspx (XML-синтаксис), однако GAE-платформа без проблем работает только с расширением jsp.

При локальном запуске GAE-приложения с JSP-страницами среда выполнения App Engine Java SDK конвертирует JSP-страницу в Java-код, затем компилирует Java-код в Java-байт-код. При загрузке GAE-приложения с JSP-страницами в App Engine производится конвертация и компиляция и загружается только Java-байткод JSP-страниц, поэтому в случае замены статических HTML-страниц на JSP-страницы следует учитывать, что вызов HTML-страниц не потребляет ресурсы процессора, а вызов JSP-страниц будет всегда потреблять ресурсы процессора GAE-платформы. Кроме того, при загрузке в App Engine в папку WEB-INF\lib приложения добавляются 8 дополнительных библиотек общим объемом около 4 Мбайт, обеспечивающих обработку JSP-страниц. Убедиться в этом можно, посмотрев каталог [пользователь]\AppData\Local\Temp\appcfg.tmp\, создаваемый при загрузке GAE-приложения в App Engine.

Поддержка сессий и HTTPS

Платформа App Engine автоматически поддерживает включение соединения клиента с приложением по протоколу HTTPS для поддоменов домена appspot.com. Для этого достаточно лишь указать в дескрипторе развертывания приложения web.xml, какие относительные URL-адреса приложения должны быть защищены HTTPS-протоколом:

Запланированные задачи и очередь задач

Servlet-контейнер платформы App Engine обеспечивает вызов сервлета GAE-приложения для быстрой обработки HTTP-запроса и выдачи ответа клиенту. GAE-службы Cron и Task Queue дополняют данную схему работы возможностью выполнять приложением задачи вне клиентского запроса. Служба Cron позволяет определить вне кода приложения с помощью конфигурационного файла cron.xml HTTP GET-вызов относительного URL-адреса приложения в конкретное время регулярно через заданные интервалы времени. Служба Task Queue дает возможность в коде сервлета приложения добавить в очередь относительные URL-адреса приложения, которые затем будут вызываться GAE-платформой вне клиентского запроса. В отличие от службы Cron, служба Task Queue позволяет оперировать всем набором методов HTTP-запроса, а не только методом GET. Также с помощью службы Task Queue можно добавлять в очередь сообщения, которые затем могут извлекаться из нее и обрабатываться как самим GAE-приложением, так и клиентом вне платформы App Engine, использующим программный интерфейс Task Queue REST API.

Фреймворк Google Web Toolkit

Начало работы с Google Web Toolkit


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

Программный интерфейс JavaScript Native Interface

Программный интерфейс JavaScript Native Interface (JSNI) позволяет использовать JavaScript-код непосредственно в Java-коде EntryPoint-класса GWT-модуля.
Например, чтобы применить JQuery Ajax-запрос к серверу с последующим использованием полученных таким способом данных в Java-коде, нужно включить
JQuery-библиотеку в HTML-страницу приложения с помощью тега:

Поддержка истории Web-браузера


В качестве простого примера рассмотрим GWT-приложение, GUI-интерфейс которого содержит меню перехода на различные страницы приложения. При выборе элемента меню в конец URL-адреса приложения добавляется новый фрагмент, а в обработчике события изменения URL-фрагмента изменяется содержимое HTML-страницы приложения, как бы представляющее новую страницу. При этом кнопки Web-браузера позволяют перемещаться между уже открытыми страницами приложения.