Избранное | Русский | Войти

Обзор App Engine для Java

Добро пожаловать в Google App Engine для Java! Благодаря App Engine можно создавать веб-приложения с помощью стандартных технологий Java и выполнять их на масштабируемой инфраструктуре Google. Среда Java представляет виртуальную машину Java 6 (JVM), интерфейс Java-сервлетов и поддержку стандартных интерфейсов для масштабируемого хранилища данных и служб App Engine, таких как JDO, JPA, JavaMail и JCache. Поддержка стандартов упрощает разработку приложения и делает понятным портирование приложения как из собственной среды сервлетов, так и в нее.

Плагин Google для Eclipse добавляет в Eclipse IDE для проектов App Engine новые мастера проектов и конфигурации отладки. Благодаря Google Web Toolkit (GWT) App Engine для Java существенно упрощает разработку и развертывание веб-приложений международного уровня. Плагин Eclipse связан с App Engine и SDK GWT.

Если вы еще не в курсе, почитайте руководство по началу работы с Java, где дано интерактивное введение в разработку веб-приложений с помощью технологий Java и Google App Engine.

Среда выполнения Java

App Engine выполняет приложения Java с помощью виртуальной машины Java 6 (JVM). SDK App Engine поддерживает Java 5 или более поздней версии. JVM Java 6 может использовать классы, скомпилированные с помощью компилятора любой версии до Java 6.

App Engine использует для веб-приложений стандарт Java Servlet. В стандартной структуре каталогов WAR вы представляете классы сервлетов приложения, страницы JavaServer (JSP), статические файлы и файлы данных вместе с дескриптором развертывания (файл web.xml) и другими файлами конфигурации. App Engine выполняет запросы, вызывая сервлеты в соответствии с дескриптором развертывания.

JVM работает в защищенной тестовой среде, что позволяет изолировать приложение в целях обслуживания и безопасности. Тестовая среда позволяет удостовериться, что приложения могут выполнять только действия, не влияющие на производительность и масштабируемость других приложений. Например, приложение не может порождать потоки, записывать данные в локальную файловую систему или открывать собственные сетевые соединения. Приложение также не может использовать JNI или другой собственный код. JVM может выполнять байтовый код Java, работающий в пределах ограничений тестовой среды.

Дополнительную информацию можно найти в статье Среда сервлетов.

Хранилище данных, службы и стандартные интерфейсы

App Engine представляет масштабируемые службы, которые приложения могут использовать для хранения постоянных данных, доступа к ресурсам по сети и выполнения других задач, таких как обработка данных изображений. Где это возможно, интерфейсы Java к этим службам соответствуют установленным стандартным API, что позволяет портировать приложения как на App Engine, так и с него. Кроме того, каждая служба предоставляет полный низкоуровневый интерфейс для реализации новых адаптеров интерфейса или прямого доступа.

Приложения могут использовать хранилище данных App Engine для надежного масштабируемого постоянного хранения данных. Хранилище данных поддерживает два стандартных интерфейса Java: объекты данных Java (JDO) 2.3 и Java Persistence API (JPA) 1.0. Эти интерфейсы реализованы с помощью реализующей эти стандарты платформы доступа DataNucleus с открытым кодом.

Кэш памяти App Engine предоставляет возможность быстрого временного хранения для кэширования результатов расчетов и запросов к хранилищу данных. Интерфейс Java реализует JCache (JSR 107).

Чтобы получить доступ к ресурсам в сети и установить связь с другими хостами с помощью протоколов HTTP и HTTPS, приложения используют службу получения данных по URL. Чтобы получить доступ к этой службе, приложения Java могут просто использовать java.net.URLConnection и другие связанные классы из стандартной библиотеки Java.

Приложение может использовать службу электронной почты, чтобы отправить электронные сообщения от имени администраторов приложения или пользователя, выполнившего вход. В то время как приложения Java для этих целей используют интерфейс JavaMail.

С помощью службы изображений приложения могут преобразовывать и манипулировать данными изображений в различных форматах, включая обрезку, вращение, изменение размеров и улучшение цветопередачи. Служба может выполнять задачи обработки изображений, требующие много ресурсов процессора, тем самым оставляя больше ресурсов серверу приложений для обработки веб-запросов. (На сервере приложений можно также использовать программное обеспечение для обработки изображений на базе JVM, если оно работает в пределах ограничений тестовой среды.)

Для аутентификации пользователей приложение может использовать аккаунты Google. Служба аккаунтов Google обрабатывает создание аккаунтов пользователей и выполнение входа. Пользователи, имеющие аккаунты Google (например, аккаунт GMail), могут использовать их для входа в приложение. Приложение может определить, когда текущий пользователь выполнил вход и получить доступ к его адресу электронной почты. Чтобы управлять доступом через аккаунты Google, приложения Java могут использовать ограничения безопасности в дескрипторе развертывания. Кроме того, они могут определить, выполнил ли пользователь вход и получить его адрес электронной почты, вызвав метод getUserPrincipal() на объекте запроса сервлета. Чтобы создать URL входа и выхода и получить объект данных пользователя, подходящий для сохранения в хранилище данных, приложение может использовать низкоуровневый API аккаунтов Google.

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

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

Инструменты Java

Java SDK App Engine включает инструменты для тестирования приложения, добавления его файлов и загрузки данных журналов. Помимо этого в SDK есть компонент Apache Ant, который упрощает выполнение стандартных задач в проектах App Engine. Плагин Google для Eclipse добавляет к Eclipse IDE функции для разработки, тестирования и развертывания App Engine, и включает полнофункциональный SDK App Engine. Кроме того, плагин Eclipse упрощает разработку приложений Google Web Toolkit и их выполнение на App Engine.

В ходе разработки и тестирования сервер разработки выполняет приложение на локальном компьютере. Сервер имитирует хранилище данных, службы и ограничения тестовой среды App Engine. Кроме того, сервер разработки может создавать конфигурацию для индексов хранилища данных, основываясь на запросах, выполняемых приложением в ходе тестирования.

Многоцелевой инструмент AppCfg обрабатывает все взаимодействие через командную строку с выполняемым на App Engine приложением. AppCfg может добавить приложение в App Engine или просто обновить конфигурацию хранилища данных, что позволит создать новые индексы до обновления кода. Также он может загрузить данные журнала приложения, что позволит проанализировать производительность приложения с помощью собственных инструментов.