У меня много лошадей Пройдя весь путь от ранних спецификаций Java EE и выполнив «облачную» экскурсию с Java EE 7, мне было любопытно посмотреть, что в наличии у недавно анонсированного проекта CapeDwarf , чтобы представить платформу Google как сервис, предлагающий « Google App Engine » на предпосылке.
История до сих пор
я играл с App Engine. Это было первое настоящее предложение PaaS для меня в тот день. И мне понравилось. Что мне не нравится, так это то, что вы должны проверить, хорошо ли играет GAE с вашим вкусом Java. В конце июня Google и Red Hat объявили об официальном партнерстве для работы над GAE TCK, которое рано или поздно должно привести App Engine к Wildfly.
Установка и настройка вашей среды
Начнем прямо сейчас. Получить CapeDwarf и поиграть с ним. В ядре есть Wildfly или JBoss AS 7. CapeDwarf является только модулем расширения и должен быть встроен. Есть два основных способа получить его: Grep последняя сборка со страницы загрузок , которая будет бета 5 ( выпущен 2013-07-10) или соберите его самостоятельно. Я попробовал последний способ первым. Он поддерживается очень коротким файлом readme на странице проекта GitHub, но я бы не рекомендовал делать это. Это занимает примерно 30 минут (чистое время сборки), потому что вы также должны собрать AS 7.2.0. Если вы получили zip-дистрибутив, все, что вам нужно сделать, это разархивировать его и запустить сервер с поддержкой CapeDwarf через:
$JBOSS_HOME/bin/standalone.bat/.sh -c standalone-capedwarf.xml
На первый взгляд это похоже на запуск AS 7, потому что это занимает намного больше времени из-за запуска JGroups. По крайней мере, на моей машине.
После этого вам необходимо добавить пользователя с правами администратора и войти в консоль сервера по адресу
http: // localhost: 9090 /. Затем вы проверяете, есть ли расширение, посетив вкладку «Расширения». Теперь все готово.
Использование примера приложения Guestbook
Все, что осталось сделать, — это запустить выбранную IDE (в моем случае NetBeans) и запустить небольшой демонстрационный проект. Давайте перейдем к примеру с гостевой книгой, которая также является частью
официального gae-sdk . У вас уже должны быть Maven и Java 7. Пример гостевой книги доступен в качестве официального архетипа, и вы можете просто получить его, используя следующую команду mvn:
mvn archetype:generate -B -DarchetypeGroupId=com.google.appengine.archetypes -DarchetypeArtifactId=guestbook-archetype -DarchetypeVersion=1.7.7 -DgroupId=net.eisele.demo -DartifactId=guestbook -Dversion=1.0 -Dpackage=net.eisele.demo
Все, что вам нужно с точки зрения зависимостей, находится в центре, поэтому вам даже не нужно настраивать другой репозиторий! Откройте сгенерированный проект прямо сейчас и начните настраивать некоторые вещи. Во-первых, вам нужно изменить
appengine.target.version в
pom.xml на 1.8.3. Далее необходимо добавить соответствующие индексы хранилища данных. Насколько я понимаю, GAE делает это самостоятельно. CapeDwarf, использующий несколько существующих технологий Red Hat, должен получить указание запустить индексы. Добавьте
файл datastore-indexes.xml в папку
src / main / webapp / WEB-INF / со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?> <datastore-indexes autoGenerate="true"> <datastore-index kind="Greeting" ancestor="true" source="manual"> <property name="date" direction="asc"/> </datastore-index> </datastore-indexes>
Если вы добавите
атрибут <finalName> ROOT </ finalName> в
раздел <build> pom, вы готовы к работе. Разверните приложение через консоль управления или поместите его в
папку $ JBOSS_HOME / standalone / deployments . Вот и ты. Перейдите по
адресу http: // localhost: 8080 / и наблюдайте, как происходит волшебство.
Вы можете отправлять приветствия или даже войти с адресом электронной почты и оставлять персональные комментарии. Вы можете делать все, не меняя ни одной строки кода. Вы даже можете развернуть тот же кусок кода в App Engine. Далее, если вы перейдете по
адресу http: // localhost: 8080 / _ah / admin /, вы получите симпатичную небольшую консоль администратора, которая дает вам доступ к базовому хранилищу данных.
Даже Datanucleus прекрасно работает в этой настройке, и вы можете запустить примеры, изменив
javax.jdo.PersistenceManagerFactoryClass в
jdoconfig.xml на
org.datanucleus.api.jdo.JDOPersistenceManagerFactory . Если вы правильно выбрали версии зависимостей (
jdo-api: 3.0.1, datanucleus-core: 3.1.5 ) и используете правильный плагин maven datanucleus, все должно выглядеть так:
<plugin> <groupId>org.datanucleus</groupId> <artifactId>maven-datanucleus-plugin</artifactId> <version>3.1.2</version> <configuration> <api>JDO</api> <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> </configuration> <executions> <execution> <phase>process-classes</phase> <goals> <goal>enhance</goal> </goals> </execution> </executions> </plugin>
Ты хорош, чтобы пойти с этим. Попробуйте. Это действительно легко.
Что нужно улучшить
На данный момент реализация ограничена. Кажется, что команда проекта сосредотачивается на официальном GAE-TCK. Большинство API завершено, и только девять из 26 сервисов не поддерживаются в соответствии с
домашней страницей CapeDwarf . Учитывая это, я бы ожидал увидеть немного больше документации. Пока это в основном сводится к официальной документации Google. Если вы столкнетесь с чем-то особенным, вы сами. Если у вас есть вопросы относительно TCK, недавно созданная
группа Google отвечает на них. Хорошие новости: руководитель проекта
Алеш Джастинотзывчив и полезен, как и все парни из Red Hat Java. Если вы ищете примеры, в проекте CapeDwarf есть широкий набор тестовых покрытий на основе Arquillian. Это хорошее место, чтобы начать сейчас.
Google App Engine — альтернатива Java EE 8?
Какой итог? Я бы назвал инфраструктуру GAE зрелой. Будучи запущенным в апреле 2008 года и обнародованным в конце 2011 года, у него было пять лет для удовлетворения потребностей клиентов. Смотреть на определения из облачной темы в ранних версиях спецификаций Java EE 7 и сравнивать их с тем, что GAE уже достигла, вызывает сожаление. В то время как EE имеет весьма приличный технический разрез по уровням приложений, GAE, по крайней мере, частично разбивает это на сервис-ориентированный способ. Несмотря на то, что в SE / EE такие вещи, как безопасность, распространены почти повсеместно (JAAS, JASPIC, отдельные спецификации), GAE просто предоставляет
API пользователей для управления пользователями и
API AppIdentity.для интеграции с другими системами. Помимо этого, он также предоставляет API и абстракции для функций, которые Java EE просто не предлагает в готовом виде. Я имею в виду
Multitenancy API или что-то вроде
API Capabilities . Если кто-то хотел вначале облегчить работу с PaaS от Google и попытаться подумать о более позднем переходе на локальное аппаратное обеспечение на базе Java EE, он должен был тщательно подумать о картографировании технологий и приобретении определенных служб Google. На сегодняшний день CapeDwarf уже существенно изменил правила и снизил риск блокировки поставщика.
Если вы посмотрите на спецификацию, у нее есть свои недостатки. Google отвечает. Исключительно. На данный момент я не вижу ни одного консультативного совета или подобной вещи на месте. Так что, если Google решит отступить (например, Reader катастрофа), многие люди застрянут. С другой стороны, открытый TCK, по крайней мере, делает спецификацию бесплатной для всех (ASL2.0). И это то, что в основном сделали CapeDwarf и
AppScaleвозможное. На данный момент, это не лучшая Java EE, по крайней мере для меня. Но учитывая тот факт, что мы снова смотрим в облачное будущее с Java EE 8, это может стать основой для новых спецификаций, которые должны быть выполнены. Это также может быть хорошим руководством для того, что я бы назвал «тематически-ориентированными API». Забота о потребностях бизнеса, а не только о технологических проблемах. Это будет интересное движение в ближайшие несколько лет, и мне любопытно посмотреть, не прыгнут ли на этот поезд другие продавцы раньше или позже. Грустно видеть, что Google вытащил себя из JCP и активно развивался внутри органа по стандартизации.
Дальнейшие ссылки и чтения
Блог ведущего проекта
http://in.relation.to/Bloggers/Ales
CapeDwarf на Github
https://github.com/capedwarf/
Загрузка CapeDwarf
http://www.jboss.org/capedwarf/downloads
TCK App Engine
https://github.com/GoogleCloudPlatform/appengine-tck