Почему в первой статье, посвященной WebSphere Community Edition, речь идет о создании веб-приложения? Да очень просто — в мире J2EE создание веб-приложения требует от разработчика минимальных усилий (а также минимальных знаний в области J2EE-технологий). По сути все необходимое для создания такого приложения будет сгенерировано Экспертами, входящими в состав Eclipse. Как простейший пример лучше всего использовать JSP-документ. В качестве клиента выступает стандартный браузер.
Но сначала несколько слов о WebSphere Application Server, Community Edition (далее — WAS CE), его назначении и месте, которое он занимает в стратегии IBM.
Что такое WAS CE
Формально WAS CE — это очередной J2EE-сервер, сертифицированный на соответствие спецификациям J2EE версий 1.4 и 1.5. Даже то, что он поставляется вместе с исходным текстом и бесплатно, не является уникальной особенностью: разработчики давно имеют возможность использовать JBoss и JOnAS (JOnAS представляет собой основу Red Hat Application Server, RHAS), которые в этом плане — сертификация, бесплатность и доступность исходного текста — ничем не отличаются от WAS CE. Для всех трех серверов осуществляется платная техническая поддержка, и все они имеют примерно одинаковую — во всяком случае, вполне сопоставимую — производительность.
Возникает вопрос: почему IBM пошла на этот шаг и что может получить сообщество разработчиков благодаря появлению нового продукта от IBM?
WAS CE превосходит своих конкурентов по следующим параметрам:
- "весу" технической и маркетинговой поддержки (в настоящий момент - еще и на более выгодных условиях);
- месту в семействе J2EE-серверов и соответственно задачам, для решения которых он оптимален;
- степени интеграции с программными инструментами для проектирования, разработки, отладки, тестирования, развертывания и контроля работы приложений.
J2EE-сервер, подобно всем другим решениям, относящимся к классу middleware, определяет инфраструктуру информационной системы, т.е. наиболее фундаментальную часть ее архитектуры. Это означает, что выбор J2EE-сервера — очень ответственное решение, которое во многом обусловит особенности поведения системы в течение долгого времени, как минимум нескольких лет. Конечно, приложения на уровне кода мало зависят от конкретной реализации J2EE-сервера, тем не менее каждый из серверов, представленных сегодня в этом сегменте программных решений, имеет свои особенности, которые архитекторы прикладной системы будут принимать во внимание. Другими словами, замена для существующей информационной системы одной J2EE-реализации на другую — на практике процесс долгий, непростой и дорогостоящий. Это, разумеется, не относится к небольшим и несложным прикладным системам.
Все это означает, что для потребителя основанного на технологии J2EE решения очень важно быть уверенным, что за используемым программным продуктом — реализацией J2EE-сервера — стоит серьезная компания, которая имеет и возможности, и намерения обеспечивать качественную поддержку и развитие своего продукта в течение долгого времени. IBM есть IBM, и этот аспект действительно важен для многих потенциальных пользователей.
Вторая составляющая возможного успеха продукта (на который надеется IBM) в конкурентной борьбе с JBoss — это включенность WAS CE в семейство серверов приложений WebSphere.
Дело здесь в том, что технология J2EE хорошо подходит для очень широкого круга задач, но они существенно различаются по сложности, размерам, предъявляемым к ним критериям оценки. Не надо забывать, что для решения этих задач используются совершенно разные ресурсы — это касается не только денег, но и требований к аппаратному обеспечению, времени на реализацию, качеству и количеству привлекаемых специалистов.
Бесплатные серверы с открытым исходным текстом — по крайней мере, в настоящее время и в обозримом будущем — очень сильно уступают своим коммерческим конкурентам по показателям максимальной производительности, масштабируемости, надежности. В этом нет ничего страшного — эти продукты с открытым исходным текстом создавались для решения некоторого подмножества задач. Это прекрасные инструменты для обучения специалистов и быстрого создания сравнительно небольших информационных систем (уровень малого и среднего бизнеса — в западном понимании этих терминов). Но если такой продукт не связан тесным образом с более продвинутыми решениями, то в нем неизбежно появляются:
- нестандартные возможности, не соответствующие спецификации J2EE, что повышает полезность продукта, но приводит к огромным трудностям (как минимум) при попытке переноса на более мощную реализацию - в случае широкого использования программистами этой дополнительной нестандартной функциональности;
- не слишком удачные реализации функциональности, которая "должна присутствовать в каждом серьезном сервере приложений". Примером такой функциональности является поддержка кластеризации. Многие серверы поддерживают кластеризацию (а для тех, которые ее не поддерживают, "ведется соответствующая работа"), но качество реализации этой поддержки может отличаться очень сильно. Кроме того, задачи, требующие использования кластеризации, сложны по определению и требуют привлечения принципиально иных аппаратных, финансовых, организационных, временных и человеческих ресурсов, нежели достаточно простые задачи, для решения которых и создавались бесплатные J2EE-серверы.
В результате продукт теряет простоту и «легкость», все равно не достигая при этом характеристик своих коммерческих конкурентов.
Эта проблема не актуальна для WAS CE. Его тесная (в ближайшем будущем) интеграция с другими серверами семейства WebSphere позволит использовать стандартные и хорошо работающие возможности этого продукта для небольших задач, а в случае необходимости быстро и легко портировать код на более мощные серверы приложений в рамках одной линейки продуктов.
Наконец, важным аспектом является интеграция сервера с инструментами разработки. Хотя такая интеграция формально является не более чем удобством, она позволяет чрезвычайно сильно сократить время на разработку и повысить производительность труда. IBM — одна из очень ограниченного числа компаний, предлагающих продукты для всех этапов цикла жизни приложений, поэтому применение WAS CE гарантирует удобство и быстроту создания программ с его использованием.
Подробнее о веб-приложениях
Веб-приложения — термин слишком общий и нуждается в пояснениях, особенно если разработчик только начинает создавать свои программы и еще не приобрел достаточного опыта.
Веб-приложения — довольно интересный класс программ. Если «обычные» приложения нетрудно разделить на «обособленные» (stand-alone) приложения, приложения в архитектуре «клиент—сервер» или к многозвенным системам, то веб-приложения имеют в определенном смысле «пограничный» характер, но формально относятся к распределенным многозвенным системам.
Под «веб-приложениями» практически всегда понимаются серверные приложения — просто в силу того, что в качестве клиента обычно используется браузер, а собственно код веб-приложения является расширением функциональности веб-сервера. Правда, в данном контексте понятие «веб-сервер» трактуется весьма обобщенно.
Пожалуй, наиболее полезна классификация веб-приложений по виду используемых при их создании компонентных моделей.
Согласно такой классификации, к первому виду веб-приложений можно отнести программы, не использующие компонентных моделей вообще. Например, программы, написанные с помощью простых скриптовых языков. Условно их можно назвать программами в «стиле CGI», хотя, конечно, они выходят за пределы стандарта CGI.
Второй вид веб-приложений — приложения, использующие для расширения функциональности веб-серверов и реализации бизнес-логики универсальные компонентные модели, не предназначенные для создания только веб-приложений. Этот подход был широко распространен на платформе Windows, когда прикладная часть серверного приложения реализовывалась с помощью COM/ActiveX-объектов.
Третий вид — веб-приложения, созданные с использованием специализированных компонентных моделей. В мире Java наиболее распространенными такими компонентами являются так называемые веб-компоненты — сервлеты и документы. Эти веб-компоненты выполняются под управлением специализированного контейнера (веб-контейнера).
Мы будем иметь дело с веб-приложением третьего вида. Хотя сервлеты появились раньше, чем возникло понятие «веб-компонент», в настоящий момент спецификация сервлетов сильно изменилась по сравнению с первоначальными вариантами и с полным основанием может быть отнесена к полноценным компонентным моделям в рамках J2EE.
Что касается веб-контейнера, то в мире Java (и уж тем более в мире open-source Java) стандартом де-факто является Tomcat — свободная открытая реализация, созданная в рамках работ консорциума Apache. Конечно, у Tomcat есть и достойные альтернативы, например Jetty. С точки зрения полноценного J2EE-сервера тот или иной веб-контейнер является одним из базовых сервисов этого сервера. WAS CE по умолчанию в качестве веб-контейнера использует Tomcat. Он и будет задействован в создаваемом простом приложении.
Создание простейшего веб-приложения
Для работы необходимы:
- Собственно J2EE-сервер - WAS CE или Apache Geronimo. Версии 1.x этих продуктов (которые мало отличаются друг от друга) доступны соответственно на сайтах Apache и IBM (http://geronimo.apache.org и http://www-128.ibm.com/developerworks/downloads/ws/wasce соответственно). Версии 1.0.x продуктов работают с JDK 1.4.2, версии 1.1 поддерживают JDK 1.5. Обратите внимание, что WAS CE работает как с JVM от Sun, так и с JVM от IBM. Там же вы можете считать соответствующие подключаемые модули (плагины) для Eclipse. Для WAS CE 1.1 вместо термина "плагин" сейчас используется понятие "серверный адаптер" (server adapter).
- Eclipse, который можно бесплатно загрузить по адресу http://www.eclipse.org/downloads. Разумеется, приведенный пример можно создать и без использования Eclipse, с помощью любого текстового редактора - просто применение Eclipse во много раз увеличивает скорость и удобство разработки.
Страница настроек Eclipse при установленных серверных адаптерах для Geronimo/WAS CE |
Различные версии Eclipse с плагинами для различных версий Geronimo/WAS CE могут несколько отличаться друг от друга, хотя эти отличия не являются принципиальными с точки зрения создания веб-приложения.
Окно Эксперта создания динамических веб-приложений |
Веб-приложение будет содержать три необходимых (в общем случае) файла:
- код JSP-документа;
- стандартный xml-дескриптор веб-компонента;
- нестандартный, специфический для Geronimo/WAS CE xml-дескриптор, который обычно называют "план развертывания" (deployment plan).
Создание проекта с помощью Eclipse
Пример того, как выглядит страница настроек Eclipse при установленных плагинах (серверных адаптерах) для Geronimo/WAS CE, приведен на рисунке.
Следует выбрать нужную версию сервера (точнее, плагина) — это приведет к генерации соответствующего плана развертывания при создании веб-компонента в составе проекта. Наиболее подходящим при использовании JSP-документов Экспертом Eclipse является Эксперт создания динамических веб-приложений.
В процессе работы с Экспертом проекта и Экспертом создания JSP необходимо будет указать имя проекта, требуемую версию JDK, имя создаваемого JSP-документа, имя его каталога и, возможно, некоторую другую информацию. Сгенерированные тексты JSP и xml-дескрипторов могут выглядеть примерно так:
файл JSP (в данном примере — index.jsp):
<%@ page language="java" contentType="text/html;
charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
This is a body of our test (Это текст документа)
Теперь необходимо создать архив — файл с расширением .war, содержащий три этих файла. Это можно сделать с помощью любой утилиты, способной работать с архивами формата ZIP. В состав JDK входит такая утилита (jar).
Итак, в WAR-архиве (пусть его имя будет myapp.war) будут находиться:
- JSP-документ - в "корневом каталоге";
- дескрипторы web.xml и geronimo-web.xml - в подкаталоге с именем WEB-INF.
Команды для создания такого архива, выполняемые в режиме командной строки, могут иметь следующий вид:
jar -cvf myapp.war .WEB-INF*.*
jar -uf myapp.war -C .... index.jsp
Приложение готово. Осталось запустить сервер и выполнить команду установки WAR-архива — т.е. веб-приложения — на этот сервер. Команда может выглядеть следующим образом (в одну строку):
java -jar D:AppServerCommunityEditionindeployer.jar —user system —password manager deploy myapp.war
Теперь можно обратиться к нашему веб-приложению, задав в браузере следующий URL:
http://localhost:8080/eclipse_webapp
URL не содержит имени самого JSP-документа, так как его имя — index.jsp — используется по умолчанию.
Заключение
WAS CE является простым в использовании сервером, но при этом обеспечивает разработчику достаточно мощную и полностью соответствующую спецификации среду развертывания и выполнения J2EE-приложений, которая прекрасно подходит как для изучения комплекса технологий J2EE, так и для создания реальных информационных систем, рассчитанных на малый и средний бизнес.
От редакции
Популярность ПО с открытым исходным текстом растет среди российских пользователей огромными темпами. Как и с помощью каких инструментов создавать такие продукты? Этой статьей мы открываем цикл публикаций, посвященных разработке приложений с использованием открытых стандартов: платформы Java2 Enterprise Edition, сервера приложений WebSphere и технологии Eclipse.