Борис Вольфсон
Сервер приложений от SUN с открытым исходным кодом
В 2005 г. Корпорация SUN анонсировала проект GLASSFISH - сервер приложений с открытым исходным кодом для платформы JAVA. Этот шаг в направлении open source позволил создать действительно качественный сервер приложений. Вскоре сообщество разработчиков glassfish выпустило первую версию, а сейчас - готовится вторая.
Проект GlassFish был анонсирован на конференции JavaOne 2005. Менее чем через год, на следующей конференции JavaOne, был представлен первый выпуск. Причем этот сервер приложений можно было скачать с сайта Sun либо с сайта сообщества—отличия были только в инсталляторе и названиях. GlassFish v. 1 был сфокусирован на выполнении спецификации Java ЕЕ 5 и функциональности класса предприятия, которые не были включены в предыдущую версию сервера приложений от Sun. GlassFish v. 2 на момент написания статьи все еще находится в стадии разработки (правда, последнюю версию можно скачать с официального сайта). Таким образом, GlassFish v. 1 распространяется с мая 2006-го, a GlassFish v. 2 окончательно доводится до ума. Фактически все сообщество сейчас работает над второй версией, и специалисты рекомендуют немного подождать ее выхода. GlassFish v. 2 включает весь необходимый набор функций для корпоративных приложений из предыдущей версии. Кроме того, он поддерживает концепцию профилей, поэтому может быть сконфигурирован для использования в режиме разработки, в режиме «предприятия» или кластера. GlassFish v. 3 находится в стадии планирования (в рамках сообщества GlassFish употребляется термин «Concept Creation» — стадия концепции программного продукта, или просто прототипирования). Ведется переработка модульной архитектуры, что позволит увеличить скорость загрузки и скажется на производительности в целом. Планируется, что первые версии для тестирования появятся в середине года. У пользователей также есть выбор при установке конкретного дистрибутива GlassFish: можно взять либо версию Sun, либо сообщества разработчиков GlassFish. Эти программные продукты различаются только инсталлятором и поддержкой. Для тех, кому будет недостаточно по той или иной причине поддержки сообщества, смогут воспользоваться коммерческим вариантом фирмы Sun.
GlassFish включает поддержку самых последних спецификаций JC: JSP 2.1, JSF 1.2, Servlet2.5 и JSTL 1.2.
Технология Java Server Faces (JSF) была добавлена в платформу Java ЕЕ 5 и является компонентной моделью для слоя приложения, который занимается представлением данных. JSF можно использовать с JavaServer Pages (JSP) или другими похожими технологиями. JSF версии 1.2 имеет множество улучшений по сравнению с предыдущими выпусками. Хотелось бы особо отметить улучшения в обработке запросов, что позволяет более эффективно работать с методологией AJAX. Другой особенностью GlassFish является Jasper, JSP-компилятор, который теперь может использовать преимущества API в Java 6 SE. По разным оценкам, благодаря этому происходит увеличение производительности в 8-10 раз. Jasper также можно сконфигурировать для использования JDT-компилятора платформы Eclipse, хотя выигрыш в скорости будет не таким большим. Некоторое время назад в GlassFish стали применять довольно качественные JSF-компоненты проекта Woodstock, которые могут быть интересны многим разработчикам. Они также поставляются с открытым исходным кодом, что является несомненным плюсом (см. врезку).
Отдельно расскажем о возможностях интеграции с существующими библиотеками и фреймворками. Они позволяют команде программистов не только быстро приступить к разработке действительно нужной функциональности, а не реализации рутинных вещей, но увеличить производительность при дальнейшем развитии проекта. Сообщество GlassFish очень щепетильно относится к интеграции с различными фреймворками и тщательно следит за совместимостью с ними. Их список постоянно растет, в качестве примера можно упомянуть такие известные и популярные проекты, как AppFuse, DWR, Facelets, IBATIS, JBoss Seam, Shale, Spring, Struts, Tapestry, WebWork, Wicket и прочие.
Очень важно понять, почему корпорация Sun выбрала именно такую форму распространения своего продукта—с открытым исходным кодом. Для этого немного оглянемся назад... Одним из первых серверов приложений для платформы Java был Tomcat. Его разрабатывает сообщество Apache, которое включает в себя, в том числе и специалистов фирмы Sun. Tomcat стал ранним стандартом для Java-сервлетов и JSP. Многие считают, что огромной популярности этого продукта в значительной степени способствовала его бесплатность и открытый исходный код. Как известно, есть очень много видов лицензий для продуктов open source. Причем от выбора лицензии подчас зависит их популярность, особенно в корпоративной среде, где такие вопросы очень важны. На данный момент GlassFish использует CDDL (Common Development and Distribution License), которую предложила Sun, на основе Mozilla Public License. Но существует и альтернативная лицензионная схема на основе GPL второй версии и СРЕ. Очевидно, что возможность выбора также расширит базу пользователей GlassFish. Корпоративные клиенты предпочтут преимущества CDDL, а сообщества разработчиков смогут использовать альтернативный вариант, если в этом будет необходимость.
Процесс создания GlassFish довольно транспарентен: в нем активно участвует сообщество разработчиков и налажены коммуникации с другими заинтересованными сообществами. Аналогичная гибкость проявляется и к пользователям, как результат—оперативно поступают отзывы о функционировании продукта, что самым положительным образом сказывается на его качестве. В целом процесс разработки по сравнению с другими проектами более гибкий и продуманный. Гибкость процесса и вовлеченность разработчиков обеспечивается гетерогенностью (можно употребить менее точные термины «относительной децентрализо-ванностью» или «распределенностью») сообщества GlassFish: его участники используют различные средства общения с помощью Интернета. В результате скорость циркуляции информации резко увеличивается, несмотря на то что разработчиков разделяют многие тысячи километров.
Веб-сервисы постепенно занимают чуть ли не центральное место в архитектуре систем класса предприятия. Это связано в том числе и с тем, что они являются промежуточным звеном между Java-платформой и платформой Microsoft, которые используются наиболее часто. В рамках сообщества GlassFish разрабатывается проект Tango (WSIT). WSIT полностью использует преимущества, которые дает вторая версия GlassFish. Созданы специальные стандарты, которые обеспечивают полную совместимость с другими продуктами, прежде всего компании Microsoft.
GlassFish -это не только программный продукт, но и целое сообщество, целью которого является создание полноценного сервера приложений для платформы Java ЕЕ 5. Сообщество также разрабатывает вспомогательные технологии для Java ЕЕ 5, в частности JAXB,JAX-WS, JAXP,StAX,JSP и JSF. Сам сервер приложений GlassFish включает в себя несколько известных проектов, например jMaki, Phobos и DynaFaces, и множество инструментов. Hudson-для непрерывной интеграции.
Сообщество GlassFish активно взаимодействует с разработчиками NetBeans, поэтому именно эта IDE стала первой поддерживающей GlassFish. С тех пор такой поддержкой могут похвастаться различные среды разработки, например IDEA, JBuilder и Eclipse. Кроме того, разработчики GlassFish создали большое число инструментов, которые стали популярны сами по себе. В качестве примера стоит рассмотреть средство непрерывной интеграции—Hudson. Оно используется для создания билдов, тестирования и других подобных действий. Hudson достаточно прост и поддерживает систему плагинов для расширения базовой функциональности. Одной из сильных сторон второй версии GlassFish является система администрирования. Она поддерживает как дружественный GUI-интерфейс, так и работу через командную строку. В качестве языка программирования используется TCL Разумеется, система администрирования позволяет управлять кластерами и нагрузкой на сервер. Как говорилось выше, GlassFish v. 2 поддерживает различные профили —для разработки, для «предприятия» и кластера. Сам дистрибутив значительно уменьшился по сравнению с предыдущим из-за применения технологии сжатия Раск200, которая применяется и для дистрибутива Java SE 6. Инсталлятор GlassFish v. 2 также может использовать автоматический центр обновлений, что избавит отлишних хлопот администраторов и позволит иметь актуальную версию GlassFish.
Усовершенствования проекта GlassFish не прекращаются. Сообщество разработчиков продолжает вносить новые улучшения в этот продукт. Кроме того, оно само постоянно расширяется за счет новых членов. В планах есть как организация собственных групп пользователей, так и проведение небольших конференций в рамках JavaOne.
Тактической целью сообщество можно назвать выпуск второй версии. Кроме того, постоянно расширяется список приложений и фреймворков, которые успешно интегрируются с GlassFish. Глобальные планы предусматривают разработку третьей, более производительной и интеллектуально потребляющей ресурсы версии сервера приложений. Такой сервер позволит использовать его не только в рамках систем уровня предприятия, но и каклег-кий сервер приложений для небольших задач. Прототипы третьей версии уже в процессе разработки.
Есть несколько разных мнений по поводу применения продукта. Первое заключается в том, что «надо подождать, пока ягодка дозреет». То есть подождать релиза второй версии, который, видимо, будет выпущен на момент публикации этой статьи. Другая часть экспертов рекомендует уже сейчас использовать GlassFish. Причем именно последние варианты второй версии, так как она на данный момент они достаточно стабильны. А первую версию уже постепенно относят к устаревшим.
Существуют три версии GlassFish на разных стадиях разработки:
- Концепт-версия (Concept Creation). Прототип продукта, в котором собрана основная функциональность;
- Разрабатываемая версия (Active Development). Версия продукта, которая разрабатывается в данный момент;
- Выпущенная версия (Maintenance). Данная версия продукта уже выпущена, идет только исправление ошибок. GlassFish v. 1 - выпущенная версия; GlassFish v. 2 - версия в разработке; GlassFish v. 3 - все еще находится в стадии концепции.
Компания Sun позиционирует в качестве серверов приложений несколько продуктов. Перед вами список их самых последних версий:
- iPlanet AS 6.0 (Netscape AS) -сервер приложений совместимый CJ2EE1.2;
- SunOne AppServer 7.0 - сервер приложений совместимый с J2EE 1.3 RI;
- Sun Java System
AppServer 8.0 - сервер приложений совместимый с J2EE 1.4;
- Sun Java System AppServer 9.0 (GlassFish v. 1) - сервер приложений совместимый с Java ЕЕ 5;
- Sun Java System AppServer 9.1 (GlassFish v. 1) - сервер приложений совместимый с Java ЕЕ 5.
- WS-MetadataExchange, WS-MetadataExchange WSDL, WS-Transfer;
- WS-ReliableMessaging,WS-ReliableMessaging Policy;
- WS-CoordinationandWS-Atomic Transaction;
- WS-Security,WS-SecurityPolicy, WS-Trust, WS-SecureConversation;
- WS-Policy,WS-PolicyAttachment.
***
Мнение эксперта
Екатерина Павлова, ведущий инженер, технический лидер группы Sun Microsystems
Каков ваш опыт работы с GlassFish?
Строго говоря, не считаю себя экспертом по Java ЕЕ, поскольку в основном в последнее время работаю над проектами из других областей (сейчас это Real-Time Java, Java VM).
Однако я стараюсь следить за развитием событий в мире Java ЕЕ и не только теоретически. Я являюсь одним из редакторов новостной ленты «Аквариум» (http:// bloas.sun.com/theaauarium ru) и координировала организацию стенда, посвященного Java ЕЕ на Sun TechDays 2007 в Санкт-Петербурге.
Какова, на ваш взгляд, главная цель проекта?
Если говорить о GlassFish как о проекте, то он появился как часть усилий Sun Microsystems по открытию значительного объема разработанного в компании кода (например, OpenSolaris и OpenJDK). Так, в основу GlassFish легли части Sun Java System Application Server компании Sun и TopLink (решение для хранения Java объектов в реляционных БД, предоставленное Oracle). Проект успешно живет, так что формально, наверное, можно считать, что исходная цель достигнута. Однако GlassFish —это не только проект. Это еще и сервер приложений с открытым кодом, т. е. некоторый продукт. И тут цели меняются от версии к версии. Наиболее важные из них — совместимость с текущей версией спецификации Java ЕЕ и промышленное качество. GlashFish полностью совместим с Java ЕЕ 5 и используется многими компаниями (SJSAS 9 РЕ — сервер приложений Sun Microsystems основан на GlassFish). Успех ли это? Реализации J2EE 1.4 стали доступны через два-три года после публикации спецификации, с появлением GlassFish ситуация резко изменилась — большинство серверов объявило о поддержке Java ЕЕ 5 гораздо быстрее (от 6 месяцев до 2 лет). GlassFish — это также и сообщество. Около 7000 независимых программистов и представителей компаний участвуют в работе над проектом. Конечно, не каждый член сообщества играет активную роль в написании кода. Многие помогают просто используя свежие версии и сообщая об обнаруженных проблемах. Благодаря усилиям сообщества многие части GlassFish реализованы в виде компонентов, которые можно использовать отдельно, — JAXB, JAX-WS, JAXP, StAX, JSP, JSF и т. д. Сообщество активно развивается, и, я надеюсь, его вклад в GlassFish будет только увеличиваться.
В каких других проектах вы участвовали?
За 10 лет мне довелось поучаствовать в проектах во многих областях — от создания веб-приложений и баз данных, написания приложений для телекоммуникаций до системной разработки на большом количестве разнообразных платформ. Первый опыт промышленной разработки я получила при работе над первым русскоязычным дистрибутивом Linux в 1996 г., сейчас в основном занимаюсь Java VM.
Для кого в первую очередь предназначен GlassFish?
Важной особенностью GlassFish является быстрота, с которой в нем появляется поддержка новых стандартов и технологий. Поэтому GF особенно интересен и удобен для пользователей, желающих оценить новые функции. GF также предоставляет уникальную возможность разобраться самостоятельно, как устроена реализация Java ЕЕ платформы, и попробовать свои силы в работе над ее развитием. Ну и конечно же, GF — классический сервер приложений, предназначенный как для разработки, так и для промышленного внедрения.
Для каких типов проектов предназначен GlassFish?
Последняя бета-версия GFv2 (выпуск финальной версии GF планируется осенью 2007) — это полнофункциональный сервер приложений, который годится для всех традиционных типов Java ЕЕ-проектов. GFv2 обеспечивает функциональность, необходимую для внедрения больших корпоративных проектов, в частности кластеризацию, отказоустойчивость, балансировку нагрузки, раскопирование в оперативной памяти, администрирование.
GF также поддерживает интероперабельность с технологиями Microsoft (с HOMOщью WSIT). Последнее позволяет наладить взаимодействие между Web-сервисами на Java и средами .Net. Другой из многих новых возможностей в GlassFish версии v2 является интегрированная реализация стандарта JBI (Java Business Integration), что делает GF ориентированным на сервис-ориентированную архитектуру (SOA). На JavaOne 2007 было объявлено о том, что Ericsson планирует предоставить реализацию контейнера для SIP-сервлетов (SIP — Session Initiation Protocol) для включения в GlassFish. Большинство ЕЕ приложений имеет транзакционную природу, т. е. логика сфокусирована вокруг получения/обновления данных в базах данных. Поддержка сессий позволит делать еще более интересные приложения. Например, вместо простого списка ваших клиентов со статической информацией вы сможете узнать, доступен ли данный клиент сейчас онлайн и если да, то использует ли он мобильный телефон или фиксированный канал связи? Такая информация позволяет выбрать наиболее удобный способ связаться с клиентом в конкретный момент времени.
Но несмотря на обилие продвинутых возможностей, GlassFish остается удобным средством и для создания небольших приложений, и для получения первого опыта с разработкой на платформе Java ЕЕ.
Как будет позиционироваться GlassFish на рынке продуктов для создания ПО?
GF позиционируется как высококачественный сервер приложений с открытым исходным кодом. И речь не о будущем, он уже используется во многих проектах.
Безусловно, GF будет и дальше проектом Open Source.
Какие фирмы уже используют GlassFish?
Их много. На новостном сайте «Аквариум» есть специальная рубрика, в которой рассказывается о некоторых известных внедрениях GF (blogs.sun.com/ theaquarium/tags/stories/). Так, в последней истории рассказывается, как переносился на GF код системы для российского отделения Auchan — одного из крупнейших ритейлеров мира. Еще один источник информации о внедрении систем на GF— слайды с конференции JavaOne 2007 (их можно скачать с http://develQpers.sun.com/learning/ iavaoneonline/).
Всего по состоянию на май 2007 г. на сайте GF было зарегистрировано более 2 500 000 скачивании продукта. Некоторые из известных установок наглядно представлены на карте — http:// beta.glassfish.iava.net:81/maDS/.
Какое будущее ждет GlassFish?
Я не умею предсказывать будущее. Мне кажется, что у GF есть шансы занять место среди наиболее популярных серверов приложений и что вклад сообщества в развитие GF в недалеком будущем станет основным.
Для кого в первую очередь предназначен GlassFish?
Важной особенностью GlassFish является быстрота, с которой в нем появляется поддержка новых стандартов и технологий. Поэтому GF особенно интересен и удобен для пользователей, желающих оценить новые функции. GF также предоставляет уникальную возможность разобраться самостоятельно, как устроена реализация Java ЕЕ платформы, и попробовать свои силы в работе над ее развитием. Ну и конечно же, GF — классический сервер приложений, предназначенный как для разработки, так и для промышленного внедрения.
Какие ближайшие конкуренты есть у GlassFish?
Часто спрашивают, что лучше использовать Tomcat или GlassFish? Конечно, Tomcat не является полноценным сервером приложений, но если ничего кроме servlet/JSP и не требуется? Интуитивно кажется, что GlassFish тяжеловеснее и медленнее, но в реальности не так. Благодаря ленивой инициализации, GlassFish такой же легковесный, как Tomcat, а при использовании http-коннектора Grizzly демонстрирует значительно более высокую производительность на реальных приложениях по сравнению с Tomcat.
Формально ближайшими конкурентами GF, наверное, надо считать другие открытые реализации платформы Java ЕЕ — JBoss, Geronimo и JOnAS. Однако во многом эти проекты сотрудничают с целью улучшить взаимодействие и переносимость. Например, GF и JBoss на JavaOne 2007 продемонстрировали результаты своих усилий по поддержке компонентов JSF (проекты Woodstock от Sun и RichFaces от JBoss) на разных контейнерах/реализациях. JBoss вообще является официальным контрибьютором в код GlassFish (JSFRI). Кстати, на Apache Wiki (http://wiki.apache. ora/ws/StackComparison) есть сравнительная таблица для ряда доступных стеков веб-сервисов. По субъективному мнению, реализация GlassFish — одна из самых передовых и становится только лучше.
Имеется ли возможность использовать фреймворк для веб-разработок Ruby on Rails?
Да, конечно. Использованию RoR-при-ложений с GlassFish посвящено, кстати, очень много заметок на «Аквариуме» (категория rails). В них рассказывается про первые шаги RoR с GF, как заставить работать RoR-приложение в GF с БД Derby в режиме embeded, про Rails Integration, про развертывание Web-приложений RoR на кластерах GlassFish. Одним из примеров успешного развертава-ния RoR-приложения в GF является система для управления Web-контентом Mephisto.
Какие средства разработки поддерживают работу с GlasFish?
GFv2 поддерживается всеми основными средами разработки на Java, включая Netbeans, IDEA и Eclipse (начиная с MyEclipse 5.5). Из множества других интересных инструментов хочу отметить JVantage — инструмент для визуальной разработки веб-приложений, позволяющий быстро создавать Java ЕЕ-приложение из описания модели базы данных, Quickr — утилиту для управления persistence layer, которая основана на Java Persistence Query Language и YourKit Profiler, удобное средство оптимизации приложений.
IT спец № 07 ИЮЛЬ 2007