Часть шестая
Сегодня мы завершим наш увлекательный разговор о проектах фонда Apache рассказом о других, не менее интересных и полезных проектах этого всемирно известного фонда.
Apache Commons
В прошлой части нашего разговора о проектах фонда Apache я не успел вам рассказать о тех пакетах, которые фондом уже выведены из активной фазы развития. Подобных пакетов не сказать чтобы сильно много, но, тем не менее, они есть, и в рамках нашего разговора о проекте Apache Commons стоит, безусловно, поговорить и о них.
Пакет Cache предоставляет функции, необходимые для кэширования объектов. Clazz, как пишут его создатели, - для самонаблюдения классов и для манипулирования ими. Пакет Contract позволяет Java-программистам использовать приемы и техники программирования, базирующегося на так называемых контрактах. Convert предназначен для конвертирования объектов одного типа в другие, а Events предоставляет дополнительные классы для обработки событий. При этом, как сообщают разработчики пакета, он "сфокусирован" на работе с Java Collections Framework и предоставляет декораторы, которые помогут обрабатывать события. Пакет Feedparser, как можно увидеть сразу уже из самого его названия, представляет собой парсер новостных лент - при этом есть поддержка RSS0.9, 0.91, 0.92, 1.0, и 2.0, а также Atom 0.5. Пакет JJar позволяет работать с репозиторием JAR-архивов Jakarta, а Latka предоставляет средства для функционального тестирования тех возможностей приложения, которые непосредственно связаны с использованием протокола HTTP. Mapper предоставляет уровень абстракции над выбранной для данного конкретного проекта технологии маппинга. Пакет Messenger имеет прямо-таки говорящее название - это простой, по мнению его создателей, фреймворк для работы с JMS. Resources предоставляет возможность работы с локализованными на различные языки сообщениями, которыми можно пользоваться для создания приложений с многоязычным интерфейсом. Scaffold - это набор классов для построения web-приложений, пакет ThreadPool предназначен для асинхронного распределения работы при разработке многопоточных программных продуктов, а Workflow предоставляет фреймворк для построения системы управления рабочими процессами. Наконец, последний в списке пакет, название которого - XMLIO, представляет собой простой и быстрый импортер конфигураций из XML-файлов.
В общем, как видите, даже среди пакетов, которые остановились в своем развитии, есть немало нужных и интересных. Именно поэтому я и говорю, что Apache Commons - едва ли не самый полезный из всех проектов Apache с точки зрения простого программиста. Впрочем, о нем мы с вами уже поговорили достаточно - пора двигаться дальше, к следующему пункту в списке проектов фонда Apache.
Apache Directory
Название этого проекта говорит само за себя. Что именно говорит? Если вкратце, то много чего. Если подробнее, то нужно рассказать о том, что такое LDAP и для чего нужны такие вещи, как та же самая Active Directory, в современных сетях. Поскольку тема эта достаточно обширная, то мы, взявшись за неё, рискуем не оставить место на рассмотрение проектов Apache - собственно, того, ради чего и задумывалась эта статья.
Этот проект (кстати, официальная страница, посвященная ему, располагается по адресу directory.apache.org) является, скажем так, составным, то есть, включает в себя два подпроекта - Apache Directory Server и Apache Directory Studio. Если из названия первого (то есть, Apache Directory Server) вполне понятно, для чего именно он предназначен и чем именно является, а именно - совместимым со стандартом LDAPv3 сервером директории, то второй программный продукт под названием Apache Directory Studio с первого взгляда выглядит достаточно загадочно. На самом деле, это просто инструмент для работы с директорией, выполненный на базе платформы Eclipse. В его состав входят браузер и редактор LDAP, браузер схемы, LDIF и DSML-редакторы и ряд других полезных инструментов. Apache Directory Server, кстати говоря, поддерживает не только LDAP, но также Kerberos 5 и Change Password Protocol. Думаю, для вас не станет откровением тот факт, что и Apache Directory Server, и Apache Directory Studio написаны целиком и полностью на Java.
Честно говоря, сложно сказать, насколько данный продукт популярен в широких массах, однако, судя по тому, что на ряде русскоязычных форумов обсуждают его достаточно активно, вниманием наших соотечественников по бывшему СССР он явно не обделен.
Apache Felix
Как и практически все прочие проекты фонда, Apache Felix задумывался для реализации стандартов и технологий, непосредственно связанных с Java. О каких именно стандартах и технологиях идет речь? В данном случае речь идет об OSGi, весьма интересном для Java-разработчиков стандарте. Как говорит нам Википедия, "OSGi (Open Services Gateway Initiative) - спецификация динамической плагинной (модульной) шины для создания Java-приложений, разрабатываемая консорциумом OSGi Alliance. Круг применений данной спецификации довольно широк: изначально разрабатывалась для создания встроенных систем (в частности, для автомобилей BMW, также в разработке спецификации активно участвует Siemens), но сейчас на базе OSGi строят многофункциональные десктоп-приложения (например, Eclipse SDK) и Enterprise-системы (например, Naumen CRM)".
В рамках проекта Apache Felix ведется разработка OSGi R4-платформы. Задача, как видите, достаточно масштабная, соответственно, и решение её тоже достаточно масштабно. В состав того, что разработчики громко назвали платформой, входят несколько приложений - то есть, этот проект, как и Apache Commons, тоже является, если можно так сказать, составным.
Итак, что же это за приложения? Первое из них имеет вполне говорящее название - Config Admin - и представляет собой реализацию спецификации сервиса OSGi Configuration Admin. Ну а нужно оно для конфигурирования пакета. Следующее приложение - Dependency Manager. Оно, по мнению разработчиков, способно достаточно существенно упростить разработку базирующихся на OSGi приложений. Приложение Event Admin реализует спецификацию сервиса OSGi Event Admin для базирующихся на событиях коммуникаций, а File Install является простым, основанным на директории агентом для управления пакетным развертыванием. Часть проекта Apache Felix, называющаяся Framework, является реализацией OSGi R4.2 Core Framework, а Gogo реализует продвинутую оболочку для взаимодействия с фреймворками OSGi. HTTP Service, соответственно, реализует спецификацию OSGi HTTP Service, а Karaf - базирующаяся на OSGi среда исполнения, которая предоставляет "легковесный" контейнер, в котором могут быть развернуты различные компоненты и приложения. Приложение Log реализует спецификацию OSGi Log, а плагины для Maven, также входящие в состав Apache Felix (Maven Bundle Plugin и Maven SCR Plugin), упрощают сборку пакетов и использование Declarative Services. Metatype является реализацией спецификации OSGi Metatype, используемой для описания типов, нужных пакетам. OSGi Bundle Repository предназначен для упрощения нахождения и разворачивания пакетов и их зависимостей, а Preferences реализует OSGi Preferences и используется для хранения настроек. Remote Shell представляет собой текстовый интерфейс для удаленной работы с Apache Felix Shell. Сам Shell - это командная оболочка, реализованная как пакет, взаимодействующий с экземпляром OSGi Framework. Shell TUI - это просто текстовый интерфейс для взаимодействия с Shell'ом. Service Component Runtime является реализацией спецификации OSGi Declarative Services, и также, по мнению разработчиков, упростит жизнь тем их коллегам, которые занимаются разработкой приложений на основе OSGi. UPnP реализует спецификацию OSGi UPnP Device и обеспечивает интеграцию с UPnP-устройствами. Наконец, последнее в этом достаточно длинном списке приложение, называющееся Web Console, позволяет управлять экземплярами OSGi Framework прямо из вашего любимого браузера, каким бы он ни был.
Вот такой масштабный проект. Кстати, если хотите узнать о нем более подробно, то вам поможет следующая ссылка: felix.apache.org.
Apache Gump
Напоследок в сегодняшней порции проектов от фонда Apache мы рассмотрим весьма интересный инструмент, который называется Gump. Его официальная страница расположилась по адресу gump.apache.org. Написан он не на Java, а на Python'е, хотя, в общем-то, от этого практически ничего не меняется. Хотя, кстати говоря, более ранние версии Gump'а были написаны все-таки именно на Java.
Для чего нужен Gump? Для непрерывной сборки и тестирования Java-проектов (все-таки от этого языка и от этой платформы никуда не денешься, если речь об Apache) каждую ночь. В задачи Gump входит удостовериться, что все проекты, собранные и оттестированные в заданные сроки, являются совместимыми друг с другом. Gump сам вынимает проекты из CVS или SVN-репозиториев, запускает билд-скрипты Ant'а и Maven'а, после чего могут проводиться тесты. Для того, чтобы все это успешно выполнялось, нужно писать специальные конфигурационные XML-файлы, которые позволят приложению получить доступ к тому же репозиторию и выполнить другие задачи.
К сожалению, у Apache Gump достаточно много минусов, связанных с самой спецификой подхода к проверке совместимостей (например, достаточно сложно диагностировать, из-за чего же сорвался билд, если это все-таки произошло). Но, в целом, это достаточно полезный и популярный среди разработчиков программный продукт.
Что ж, пока что, пожалуй, о проектах Apache достаточно. Мы ещё, конечно, рассмотрели не все, так что, похоже, придется ещё вернуться к этой теме на страницах "Компьютерных вестей".
Вадим СТАНКЕВИЧ,
[email protected]
Горячие темы