Часть четвёртая
Мы с вами поговорили уже о достаточно большом количестве проектов фонда Apache, но... Да-да, вы совершенно правы: это был ещё далеко не весь их список. В целях общего развития читателей "Компьютерных вестей" и повышения уровня их образованности продолжим нашу победную серию.
Apache Log4J
Практически в любом приложении хотя бы на этапе его отладки бывает очень полезно вести так называемый лог - то есть журнал всех производимых приложением действий. Иногда это полезно не только для отладки - даже в достаточно отлаженных приложениях, сами понимаете, найдется место достаточно суровым и неожиданным багам. Так вот, для реализации возможностей ведения логов (или, если более кратко, логгирования) и используется библиотека Log4J. Думаю, если вы читали предыдущие статьи о проектах фонда Apache, то должны были уже давно догадаться, что буква J в названии этого программного продукта значит не что иное, как Java.
В чем преимущество Log4J перед, скажем, обычной записью сообщений в какой-то текстовый файл? Дело в том, что этот фреймворк позволяет легко структурировать информацию в логе по степени её значимости (от обычных "интересных" событий вроде статусных сообщений в ICQ, сообщающих о подключении или отключении пользователей, до фатальных ошибок, приводящих к аварийному завершению приложения). И потом при просмотре лога можно будет сконцентрироваться, в первую очередь, на наиболее важных сообщениях, а затем уже переходить к менее важным. Правда, такие логи имеют и минусы: для того, чтобы извлекать максимальную пользу от их структурированности, их лучше записывать не в текстовом виде, а в XML'е, и, соответственно, просматривать подобные логи в дальнейшем гораздо удобнее с помощью специализированного вьювера. Конечно, такой вьювер есть (и даже не один), и в рамках Apache есть проект Chainsaw, посвященный как раз разработке такого вьювера с графическим пользовательским интерфейсом.
Но, кстати говоря, Java - далеко не единственный язык, для которого доступен этот замечательный фреймворк для логгинга. Есть у Apache ещё два проекта, очень тесно связанных с Log4J - они называются Log4CXX и Log4Net. Первый из них посвящен разработке аналогичного логгирующего фреймворка для языка C++, а второй - для языков платформы .NET. На подходе и Log4PHP (думаю, тут нужно говорить, для какого языка программирования разрабатывается данный фреймворк). Кстати говоря, официальный адрес страницы всех этих проектов - logging.apache.org.
Apache CXF
Несмотря на то, что из всех рассмотренных проектов Apache у этого едва ли не самое короткое название, по степени важности для мировой ИТ-индустрии он находится далеко не на самом последнем месте. Потому что это фреймворк, предназначенный для создания такой популярной и актуальной во всем мире вещи, как web-сервисы. Как вы думаете, на каком языке предлагается создавать сервисы с использованием этого фреймворка? Правильно, конечно же, это Java. Официальный сайт Apache CXF располагается по адресу cxf.apache.org.
Сейчас мы не будем говорить о том, что такое web-сервисы, отложим эту познавательную информацию для рубрики FAQ. Лучшем обсудим, что именно CXF предлагает хорошего для создателей web-сервисов. Во-первых, это поддержка большого количества разнообразных стандартов: SOAP, WSI Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy, WS-SecureConversation. CXF гибкий фреймворк относительно "фронт-ендов" к сервисам, а также поддерживает бинарные и устаревшие (для обратной совместимости) протоколы для коммуникации между сервисами и клиентскими приложениями. Что весьма удобно, поскольку, несмотря на то, что в большинстве случаев используются, конечно же, протоколы, основанные на XML'е, хотя есть ведь и JSON, который, к счастью, также поддерживается CXF'ом. Есть также поддержка CORBA, что, несомненно, также следует рассматривать именно как плюс данного фреймворка.
Apache ServiceMix
Раз уж речь зашла о сервисах, стоит вспомнить о другом проекте Apache, имеющем к ним непосредственное отношение. Что, в общем-то, видно уже из названия. Впрочем, не стоит думать, что CXF и ServiceMix - это конкурирующие программные продукты. Скорее, взаимно дополняющие друг друга.
ServiceMix - также фреймворк для Java, основанный на SOA и ESB, поддерживающий спецификацию API Java Business Integration (JBI) и имеющий, ко всему прочему, поддержку OSGi. И снова не будем углубляться в суть этого акронима, но вкратце скажем, что этот фреймворк предназначен для реализации главной идеи JBI - построения решений на основе сервисов по популярному в силу своего удобства принципу "Plug and Play", то есть по компонентному принципу.
Как и многие другие проекты Apache, ServiceMix имеет интеграцию с таким актуальным для Java-программистов решением, как Spring. Что, в общем-то, можно только приветствовать. ServiceMix включает в себя полностью реализованный JBI-контейнер, реализующий все спецификации JBI. Также ServiceMix предоставляет простое клиентское API для работы с JBI-компонентами и сервисами, а также предоставляет реализацию WS Notification.
Более подробно об этом фреймворке можно прочитать по адресу servicemix.apache.org. Нужно сказать, что из множества проектов Apache у этого одна из самых информативных страничек.
Apache ActiveMQ
Пожалуй, именно этот программный продукт наиболее часто используется в остальных проектах, разрабатываемых под эгидой фонда Apache (например, в уже упоминавшемся выше ServiceMix). Почему? Потому что в его рамках идет разработка брокера сообщений (message brocker), полностью соответствующего спецификациям Java Message Service 1.1 (JMS). Кстати говоря, в отличие от большинства других проектов Apache, эта разработка является кросс-языковой - то есть, речь идет о поддержке не только Java, но также языков платформы .NET, C/C++ и разных скриптовых языков наподобие Perl, Python, PHP и Ruby.
Что такое брокер сообщений? Условно говоря, это такой компонент, который принимает сообщения от одного приложения и затем переадресует их какому-то другому. То есть, он фактически, занимается маршрутизацией сообщений. Попутно, конечно, он может заниматься их валидацией, конвертацией из одного формата в другой (если, к примеру, клиенты, подключенные к брокеру, используют разные протоколы)... В ряде случаев удобно применять шаблон, предусматривающий использование брокера сообщений, чем, собственно говоря, и объясняется высокая степень востребованности Apache ActiveMQ.
ActiveMQ поддерживает много интересных и полезных вещей, например, таких, как группы сообщений, виртуальные адресаты, составные адресаты. Работа ActiveMQ протестирована под Geronimo, JBoss 4, GlassFish и WebLogic, то есть, фактически, вы можете смело ставить его под любой промышленный сервер приложений. Также, как утверждается на официальной странице проекта (а расположена она, к слову, по адресу activemq.apache.org), ActiveMQ с самого начала "затачивался" под высокопроизводительные кластерные или клиент-серверные системы, а также под P2P-коммуникации. Так что если желаете организовать собственную пиринговую сеть, чтобы судиться вволю со звукозаписывающими компаниями, можно воспользоваться ActiveMQ.
В общем-то, думаю, и так уже вполне понятно, что ActiveMQ - один из самых значимых проектов фонда Apache, и дальше рассказывать о его возможностях вряд ли имеет смысл, потому что те, кто ими заинтересовался, легко смогут узнать подробности самостоятельно на web-ресурсе проекта.
Apache Xindice
В одной из прошлых статей мы говорили о СУБД на Java, разрабатываемой в рамках проекта Apache. Так вот, представьте себе, он не одинок. Есть у Apache еще один весьма интересный проект, также посвященный разработке СУБД. Только на сей раз речь идет не об "обычной" реляционной СУБД, а об XML базах данных. Такие базы данных очень удобны в случае, если требуется хранить именно информацию в формате XML (а такой информации сегодня хватает, особенно если речь о чем-то, хоть каким-то боком связанном с Web'ом). Xindice дает проектам, хранящим данные в XML, независимость от используемой схемы XML-данных, что, в целом, придает приложениям гибкость. Впрочем, конечно, если у вас в приложении XML-данные не используются, то для данного приложения Xindice вам вряд ли понадобится.
Как и многие другие проекты Apache, этот начался вовсе не под эгидой фонда, а был передан ему позже разработчиками. Официальная страница Xindice доступна по адресу xml.apache.org/xindice.
Что ж, вот мы с вами и познакомились с очередным блоком проектов фонда Apache. Впрочем, их осталось ещё немало, и мы продолжим серию в следующих номерах "КВ".
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Горячие темы