В последнее время Rich Internet Applications (RIA) получают все большую популярность. Основная идея заключается в том, чтобы перенести подходы к разработке пользовательского интерфейса из настольных приложений в веб-браузер.
Ключевым элементом при создании RIA является использование адекватного инструмента для построения UI, который позволяет создавать интерфейс в стиле desktop-приложений и при этом не требует чрезмерных усилий.
Технология Adobe Flex является одним из таких инструментов. Благодаря распространенности Flash player, практически каждый пользователь сети может в своем браузере запускать приложения, написанные на ActionScript, с использованием платформы Flash. А технология Flex расширяет Flash возможностью создавать приложения со стандартизированным пользовательским интерфейсом.
Следующим важным элементом RIA является использование серверной технологии и осуществление обмена данными с клиентским приложением. Хорошим дополнением для Flex является Java application server. Для поддержки формата AMF (стандартный механизм RPC для Flex) на стороне сервера существует ряд Java-библиотек. Мы остановим свой выбор на библиотеке BlazeDS по причине, которая станет понятна далее.
В настоящее время, наличие автоматизированной build-системы рассматривается как обязательный атрибут разработки. Главным критерием такой системы является возможность сборки всех модулей проекта "одним кликом".
В Java-мире стандартом de facto стал Apache Maven 2. Это инструмент, который, кроме сборки проекта, также может управлять конфигурациями и внешними зависимостями. А для облегчения создания проектов с заранее известной комбинацией технологий и типовой конфигурацией существуют шаблоны - так называемые архетипы (archetype).
Для нашей задачи самым подходящих архетипом является maven-blazeds-spring-archetype. Он предоставляет шаблон RIA со следующим стеком технологий - Flex, Java, BlazeDS, Spring.
Попробуем с его помощью создать тестовое приложение - quickstart.
Для этого необходимо открыть корневую папку с проектами, скопировать следующий текст в batch file и запустите его (символ ^ задает продолжение команды на новой строке):
При выполнении команды будет задано несколько вопросов:
Choose archetype: <ENTER>
Default value for groupId: org.company.quickstart
Default value for version: <ENTER>
Default value for package: <ENTER>
Confirm properties configuration: Y
После этого в текущем директории будет создана папка с именем quickstart, в котором будет находиться многомодульный проект. Анатомия этого проекта следующая:
app-flex-config - общий проект с настройками для Flex RPC и Java BlazeDS. Главные элементы этого проекта - файлы services-config.xml и remoting-config.xml
app-flex - проект, содержащий исходный код Flex front-end
app-web - проект, содержащий исходный код на Java плюс интеграция с BlazeDS и Spring Framework
Чтобы проект успешно собрался и работал, также необходимо проделать следующие изменения.
В файле quickstart/app-flex/pom.xml:
Значение переменной flex.sdk.version - 3.4.0.9271
Значение переменной flex-mojos.version - 2.0.3
Значение contextRoot для flex-compiler-mojo - ${parent.artifactId}
В файле quickstart/app-web/pom.xml:
Значение finalName - ${parent.artifactId}
В целях отладки очень удобно видеть поток сообщений между Flex и Java. Чтобы дублировать все сообщения в консоли Java application server, необходимо добавить следующую секцию в конфигурационный файл quickstart/app-flex-config/src/main/resources/services-config.xml:
Результатом сборки будет являться Java web application archive (WAR) - файл quickstart/app-web/target/quickstart.war
Этот файл позволяет сделать deployment приложения в любой подходящий Java application server, например Apache Tomcat или WebLogic.
Допустим, у нас имеется Tomcat, запущенный по адресу localhost:8080. Тогда после установки приложения quickstart.war, тестовая страница будет доступна по адресу:
http://localhost:8080/quickstart/quickstart-flex-1.0-SNAPSHOT.html
На этой странице будет запущено Flex-приложение с одним полем ввода и кнопкой Say. При вводе значения в поле и нажатия на кнопку, должно появиться сообщение "Hello, <значение>". Это значение формируется на серверной стороне для демонстрации интеграции Flex и Java, в чем несложно убедиться, посмотрев потом сообщений AMF в серверной консоли.
Это, пожалуй, минимальное описание возможностей архетипа maven-blazeds-spring-archetype. Кроме того, он демонстрирует интеграцию BlazeDS со Spring framework, показывает как писать интеграционные тесты и содержит конфигурационные файлы для Eclipse/Flex Builder.
Для более подробного изучения вопроса необходимо читать документацию Maven, BlazeDS, Spring и смотреть внутреннее устройства архетипа maven-blazeds-spring-archetype.
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digitaldefynd мы составили список курсов по Java, которые подойдут как новичкам, так и людям с опытом программирования, чтобы освоить этот востребованный язык.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.