Создавая лучший J2EE-сервер, используем открытый исходный код

Джереми Бойнз (Jeremy Boynes), основатель Gluecode Software, рассуждает о красоте Apache Geronimo

GluecodeSoftware - одна из растущего числа компаний, успешно извлекающих прибыль из программного обеспечения с открытым исходным кодом, которая объединила несколько перспективных компонентов с открытым исходным кодом промежуточного уровня, включая Apache Geronimo, Apache Derby и другие, в стек сервера приложений J2EE™. После недавнего объявления о приобретении IBM компании Gluecode, мы разговариваем с одним из главных участников Geronimo и техническим директором Gluecode Джереми Бойнзом, желая услышать его прогнозы относительно Geronimo, Java™ и его мнение о состоянии открытого программного обеспечения.

Редакционная коллегия, developerWorks, IBM

Это интервью было подготовлено редколлегией developerWorks.



10.05.2005

Когда технический директор Джереми Бойнз пришел в Gluecode Software, он принес полученное из первых рук знание возможностей, которые дает комбинирование программного обеспечения с открытым исходным кодом с разработкой корпоративных приложений. Он был главным разработчиком в Bravanta и Netmosphere, где использование программного обеспечения с открытым исходным кодом помогло ему снизить расходы компаний. Его 20-летний опыт использования компьютеров включал также работу в Cisco, BT, Centrum Systems и Sequent Computer Systems. Он имеет степень инженера-электронщика и участвовал в большом количестве больших проектов с открытым исходным кодом, включая OpenEJB, ObjectWeb, Derby Java database и, конечно, проект J2EE-сервера Geronimo в Apache Foundation.

IBM объявила о приобретении ею компании Gluecode Software, целью которого являются стимулирование и участие в сообществе разработчиков программного обеспечения с открытым исходным кодом, а также поощрение принятия открытых стандартов. Так же как Eclipse, Derby и Apache HTTP-сервер (httpd), IBM берет основанную на Geronimo платформу Gluecode Software для обеспечения дополнения (с открытым исходным кодом) своей линейки существующих продуктов промежуточного уровня.

[Не] думайте о Geronimo только как о еще одном J2EE-сервере, а как о ядре системной среды, которая может использоваться для построения всего разнообразия служб специализированной инфраструктуры.
- Джереми Бойнз

Наша редколлегия developerWorks попросила Джереми, как одного из архитекторов Geronimo, познакомить нас с целями проектирования Geronimo, его архитектурой и тем, как удается сохранять его автономность, а также помочь нам немного разобраться в том, как открытый проект такого масштаба собирается в единое целое.

developerWorks: Можете вы описать архитектуру Geronimo? Каковы его главные компоненты?

Джереми Бойнз: Когда Geronimo начинался, главной целью проекта было создание реализации J2EE 1.4 путем интегрирования нескольких существующих проектов с открытым исходным кодом, поддерживающих часть спецификации. Архитектура, возникшая из этого, концентрировалась на двух главных направлениях: предоставить среду, способствующую такой интеграции с нулевым влиянием на другие проекты, и набор системных обслуживающих модулей, которые, будучи собранными вместе, могли бы составить законченный сервер.

Сердцем архитектуры является ядро Geronimo и среда GBean. Они предоставляют инфраструктуру, которая контролирует, как другие службы конфигурируются, активируются, управляются, а также как разрешаются зависимости между ними. Ядро является небольшим, что позволяет встраивать Geronimo в самые маленькие устройства.

В действительности существует два варианта ядра. Одно облегченное, спроектированное для программ, работающих из командной строки, или для неуправляемых серверов; другое, спроектированное для традиционных серверов, использует JMX, так что все компоненты могут контролироваться и управляться.

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

Используя такую гибкость, мы можем компоновать эти службы для формирования специализированной рабочей среды приложения. Например, главной целью проекта является создание среды J2EE 1.4, и мы создаем ее путем компоновки соответствующих служб. Модель сборки, тем не менее, также может быть использована для альтернативных конфигураций; мы активно работаем с сообществом Spring для создания сборки, которая непосредственно поддерживает Spring Framework.

Эта гибкость является чрезвычайно мощной, но предъявляет свои собственные требования к управлению конфигурацией и администрированию. Поэтому мы встроили в ядро функциональную систему управления конфигурацией, позволяющей комбинировать модули (подписанные и запечатанные), готовые для установки в любое ядро Geronimo. Контролировать тип конфигурации, выполняющейся на конкретном сервере, можно как на самом сервере, так и в корпоративной среде при помощи внешней службы управления.

Мы, фактически, расширили эти возможности управления конфигурацией также и на приложения конечного пользователя. Это позволяет организации создать полностью развернутое приложение в интегрированной или тестовой среде, а затем передать этот бинарный код через процесс выпуска в производство или для дистрибуции пользователям.

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

developerWorks: Я понимаю, что одним из ключевых требований проекта является полная совместимость со стандартами J2EE. Почему это важно?

ДБ: По правде говоря, это нужно нашим пользователям. J2EE прошел долгий путь в определении среды для приложений, которые могут быть реализованы независимо различными организациями, но ведут себя согласовано (как прошедшими Compatibility Test Suites). Это дает корпоративным пользователям гарантию, что они могут, если захотят, написать приложения способом, который не замыкает их на одном поставщике; это также означает, что поставщик приложения может написать приложение один раз и быть уверенным, что оно будет работать в любой среде пользователя.

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

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

developerWorks: Какие части спецификации J2EE делали вашу работу наиболее трудной, а какие было легко реализовать?

ДБ: Какое-то время в проекте существовала расхожая шутка о "88-itis" – казалось, что каждый, кто работал над реализацией спецификации развертывания JSR-88, начинал говорить на неведомом языке и быстро становился очень раздражительным.

Если серьезно, то некоторые части спецификации были довольно простыми для реализации, поскольку существовало высококачественное решение с открытыми исходными кодами, с которым мы могли интегрироваться. Например, для Web-контейнера мы интегрируемся либо с Jetty-сервером, либо с Apache Tomcat, оба из которых имеют надежное происхождение. Аналогично, наша реализация JAXP [Java API for XML Processing] использует Apache Xerces; наша реализация JMX [Java Management Extensions] использует MX4J [открытая реализация JMX]; мы предоставляем встроенную базу данных, основанную на Apache Derby (бывшая Cloudscape), и т.д.

Области, в которых возникли наибольшие проблемы, являются теми же, что и во всех реализациях J2EE: способность к взаимодействию с другими серверами с использованием Web-служб и IIOP.

developerWorks: Существует довольно большое число хороших коммерческих J2EE-серверов. Почему важно, чтобы Geronimo являлся проектом с открытым исходным кодом?

ДБ: Существуют и другие J2EE-сервера с открытым исходным кодом, например, JOnAS от ObjectWeb. Однако проект подобный Geronimo может быть действительно успешным только будучи открытым проектом; более того, для получения поддержки коммерческих субъектов, а также индивидуальных разработчиков, он должен распространяться по лицензии BSD, аналогичной Apache License, разрешающей решения, являющиеся гибридом открытых и проприетарных технологий.

Например, J2EE-сервер Geronimo, выпускаемый Apache Software Foundation, будет основан на сборке других открытых проектов, таких как Apache Tomcat, Jetty, OpenEJB и ActiveMQ.

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

developerWorks: Не находите ли вы, что компонентная природа Geronimo сама по себе вынуждает использовать модель разработки с открытым исходным кодом?

ДБ: Я хотел бы сказать, что модульный подход, аналогичный применяемому в Geronimo, должен быть главным для любого программного проекта такого размера, открытого или внутреннего для какой-либо организации.

Ключевым нашим преимуществом является то, что разработка поддерживается открытым сообществом, в котором могут участвовать и пользоваться результатами как частные лица, так и компании. Опора на Apache Software Foundation (с ее акцентом на открытость, демократичность и единство сообщества) гарантирует длительную жизнеспособность проекта и делает его не зависимым от намерений какого-либо частного лица или от коммерческих мотивов какой-либо организации.

developerWorks: Будучи полным J2EE-сервером, Geronimo. несомненно, чувствует себя на своем месте при обслуживании больших, распределенных, транзакционных корпоративных приложений. Но для небольших задач, где (если есть) не имеет смысла использовать Geronimo?

ДБ: Компонентная архитектура позволяет Geronimo масштабироваться от маленьких одноплатных устройств до больших корпоративных приложений. Мы уделили особое внимание сохранению маленького размера ядра, так чтобы его можно было использовать в устройствах с ограниченными ресурсами, таких как компьютерные приставки. Пользователь может выбирать, какие службы, необходимые приложению, которое будет работать в данной рабочей среде, конфигурировать в эту рабочую среду.

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

Поскольку Geronimo в действительности предназначен для серверных приложений, наверное не стоит в данное время рассматривать его применение для развертывания на ручных или мобильных устройствах. Однако, по мере увеличения возможностей этих устройств это может стать вопросом для рассмотрения в будущем.

developerWorks: Можете ли вы рассказать о некоторых способах обеспечения масштабируемости Geronimo?

ДБ: Я рад что вы упоминаете масштабируемость чаще производительности (хотя мы довольно агрессивны также и в этой области). В мире потребительских серверов и программного обеспечения с бесплатными лицензиями часто может быть более эффективным масштабировать приложение на несколько машин, чем на огромные серверы.

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

Традиционными ограничивающими факторами для масштабируемости являются доступ к CPU, памяти и I/O. Для управления ресурсами CPU мы предоставляем набор потоковых пулов, которые могут настраиваться для балансирования ресурсов, доступных для входящих Web-запросов, EJB-запросов и запросов коннектора, а также для запросов, генерируемых самим сервером, таких как откат транзакции. В будущем мы планируем соединить потоковые пулы из различных служб в одну управляемую рабочую инфраструктуру, которая может быть использована для балансирования различных рабочих нагрузок. Мы также ввели понятие центрального контекста транзакций, которое позволяет компонентам получать доступ к транзакционной информации без синхронизации с разделяемыми пулами или кэшем.

Для решения вопросов масштабируемости памяти мы тщательно контролируем ее количество, занимаемое контейнером во время выполнения его работы; к сожалению мы не контролируем ресурсы, требуемые самим приложением. Это вопрос, который потребует дальнейшего исследования по мере того, как мы будем накапливать опыт работы реальных приложений.

Мы использовали возможности NIO [Java new I/O] (там, где это применимо) для улучшения масштабируемости I/O. Одним из вопросов, которому мы уделили особое внимание, была работа нашего журнала транзакций, и здесь кооперация с ObjectWeb дала в результате жизнь проекту HOWL, очень высокопроизводительной подсистеме журналирования.

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

developerWorks: Каковы были главные проблемы и главные успехи проекта?

ДБ: Важнейшей проблемой была сложность самого проекта, общий размер платформы, которую нужно было реализовать. Желание сделать это в экосистеме "взаимодействия-но-независимости" проектов с открытым исходным кодом тоже добавило волнений. Но в этом, я думаю, и есть главный успех – так много людей работали вместе.

developerWorks: Какова была степень готовности Geronimo во время начала проекта и сколько еще необходимо написать?

ДБ: Ни одного из ядер Geronimo в начале проекта фактически не было. Тем не менее, многие проекты, которые могли быть интегрированы (такие как OpenEJB, MX4J, Jetty), уже существовали. В большинстве из них необходимо было выполнить работы по реализации спецификации J2EE 1.4, которая сама еще не была закончена в то время, когда мы начинали (август 2003).

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

Говоря серьезно, на пути вперед возникают области, которые должны быть улучшены, а также новые идеи, которые мы хотим реализовать. Еще много надо сделать, и сообщество открыто для всех. Присоединяйтесь!

developerWorks: Имеете ли вы какие то любимые проекты за рамками вашей повседневной работы?

ДБ: Apache Derby. Я был очень возбужден, когда увидел, что он стал проектом с открытым исходным кодом. В действительности раньше мы использовали Cloudscape. То, что подобный проект пришел в Apache и стал доступным, очень меня взволновало и позволило мне проявить мое "второе я" в базах данных.

developerWorks: Считаете ли вы, что открытый исходный код нашел наконец свое место на корпоративном рынке?

ДБ: Сейчас наблюдается невиданное раннее внедрение решений с открытым исходным кодом в корпоративном секторе, особенно в течение последних 12-18 месяцев. Широкое распространение Linux в качестве сердцевины корпоративной инфраструктуры – операционной системы, показало производственную готовность организаций к технологиям с открытым исходным кодом. Мы сейчас наблюдаем это в организациях, начавших пробовать открытые проекты для инфраструктуры баз данных и приложений. Это состоявшийся рынок с четко определенными спецификациями, готовыми для продажи (commoditization), и в течение последующих трех-пяти лет я ожидаю, что решения с открытыми исходными кодами станут важными игроками в этих областях.

developerWorks: Если бы существовала какая-то часть технологии открытых исходных кодов, нуждающаяся в исправлении, что это могло бы быть?

ДБ: Существует множество вещей для исправления. Главным является то, что в каждом сообществе открытых исходных кодов существует что-то, требующее исправления. В действительности нет единого движения открытых исходных кодов; существует абсолютное разнообразие различных сообществ и различных форм разработки, работающих над всем, что есть в операционной системе Linux, над проектами на Apache, такими как httpd и Geronimo, в консорциумах Eclipse и ObjectWeb, или над любимыми настольными приложениями в каком-либо проекте SourceForge. Их существует великое множество, и все они имеют различные спорные вопросы, поэтому, я думаю, не существует одного рецепта для всех.

Главными вопросами, требующими внимания в сообществе открытых исходных кодов, остаются взаимодействие, сотрудничество, попытки работать совместно, понимание того, что все коммерческие компании также могут участвовать, но при условии уважения вклада каждого участника... То есть, главным испытанием является культура. Каждый проект решает это по-разному.

developerWorks: Какое следующее большое событие для Java?

ДБ: Geronimo [смеется]. Язык программирования Java находится в интересной фазе принятия для серьезного использования в корпоративных приложениях. Мы вступили в фазу, когда люди чувствуют себя комфортно, используя управляемую среду времени исполнения и виртуализацию на уровне инфраструктуры приложений. Поэтому я думаю, что мы должны увидеть волнующий период роста.

Мы были свидетелями роста независимого движения с такими продуктами как Spring Framework, дающими людям то, чего они хотят. Я думаю, что такое разнообразие – это хорошо. Огромную роль играет стандартизация, чтобы предприятия действительно могли иметь уверенность в будущем развитии технологии. Мы живем в интересное время. Происходит много изменений, возникает много новых идей, пробуются многие новые вещи, такие, например, как АОП (аспектно-ориентированное программирование) и некоторые другие облегченные среды. Я полагаю, что это все очень здорово.

developerWorks: Хотите ли вы поделиться еще какими-то мыслями с читателями developerWorks?

ДБ: Важнейшей задачей, с точки зрения технической перспективы, которую, я надеюсь, мы реализовывали, было то, чтобы вы не думали о Geronimo только как о еще одном J2EE-сервере, а рассматривали его как ядро системной среды, которая может использоваться для построения всего разнообразия служб специализированной инфраструктуры. Способы использования этой среды ограничены только вашим воображением. Присоединяйтесь и помогайте создавать будущее.

Я также хочу поблагодарить всех людей, их так много, что и не перечислить, принявших прямое или косвенное участие в Geronimo или в любом из включенных в него проектов.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Технология Java
ArticleID=96631
ArticleTitle=Создавая лучший J2EE-сервер, используем открытый исходный код
publish-date=05102005