Проекты Apache

Часть третья

Мы с вами уже поговорили о многих проектах фонда Apache, однако и тех, которые ещё не упоминались, осталось немало. Поэтому сегодня продолжим наше знакомство с ними и сделаем это без долгих предисловий - ведь рассмотреть нам предстоит действительно очень интересные проекты.


Apache Batik

Слышали ли вы о таком формате векторной графики, как SVG? Даже если сами никогда не использовали, то о его существовании слышали наверняка. Чем знаменит этот формат? В основном, конечно, тем, что, в отличие от большинства существующих графических форматов, как растровых, так и векторных, он является не бинарным, а текстовым, причем основанным на XML. В ряде случаев, конечно, это неудобно - хранить в архиве SVG-файлы гораздо хуже, чем те же EMF'ы, потому что места они занимают, сами понимаете, гораздо больше. Зато генерировать такие файлы в тех же web-приложениях не в пример удобнее.

К чему я это все рассказываю? А к тому, что Apache Batik - это библиотека для Java-разработчиков, позволяющая им включать поддержку формата SVG в свои приложения. Batik обеспечивает поддержку генерации, модификации, кодирования SVG-изображений для любых Java-приложений. Есть, конечно же, и поддержка отображения SVG-файлов - для этого в библиотеке имеется соответствующий Swing-компонент. Также в Batik входят такие инструменты, как растеризатор SVG-файлов и конвертер из TTF в SVG. На сайте проекта (xmlgraphics.apache.org/batik) есть немало примеров и подробная документация, так что особых проблем при интеграции Batik'а в ваше приложение возникнуть, по идее, не должно.

Что касается полноты поддержки стандарта SVG в реализации от Apache, то волноваться, в принципе, также практически не о чем - не до конца реализована только поддержка анимации, а такие вещи, как связывание, интерактивность и поддержка скриптов, реализованы в полной мере. Более подробно о поддерживаемых и неподдерживаемых спецификациях формата SVG можно узнать в таблице, которая расположена по следующему адресу: xmlgraphics.apache.org/batik/status.html.


Apache Cocoon

Как я уже говорил в прошлый раз, в активе Apache есть проекты, которые служат, по сути, одной и той же цели, только немного разными путями. Мы уже обсудили такой фреймворк для создания web-приложений, как Struts. Но это не единственный фреймворк для создания web-приложений, который разрабатывается фондом Apache. Cocoon (cocoon.apache.org) - еще один программный продукт, предназначенный для тех же самых целей. Конечно же, web-приложения, которые разрабатываются на основе этого фреймворка, должны быть написаны на Java - как вы уже могли заметить, большая часть проектов Apache, посвященных созданию продуктов для разработчиков, ориентированы именно на эту платформу и этот язык программирования.

Фреймворк основан на использовании XML и XSLT, что позволяет генерировать на основе XML-документов не только web-страницы в формате HTML, но также и PDF-документы, WML-страницы, OpenOffice.org/StarOffice-файлы, RTF-документы, файлы в формате Postscript, уже упоминавшийся выше SVG и ряд других форматов. Начиная с версии 2.2, фреймворк Cocoon базируется на другом очень известном и очень популярном фреймворке, созданном, правда, не под эгидой Apache - это фреймворк Spring. При этом в основе архитектуры Cocoon лежит концепция component pipelines (если переводить на русский дословно, то "трубопроводы компонентов", но обычно в силу туманности и неблагозвучности фразы этот термин оставляют в его оригинальном англоязычном виде). Что означает эта концепция? Она подразумевает использование цепочки компонентов, каждый из которых отвечает за какую-то конкретную операцию. Создатели фреймворка Cocoon сами сравнивают этот подход с известным конструктором "Лего", где также из небольших деталей, выполняющих те или иные функции, можно собирать весьма сложные и масштабные объекты. Таким образом, можно сделать приложение на основе фреймворка модульным, что удобно для его разработки и тестирования. Структурная единица в Cocoon называется блоком.

Как и другие проекты фонда Apache, Cocoon имеет важные в глазах разработчика бонусы в виде дружного и активного сообщества разработчиков (и не менее активного и большого сообщества пользователей), качественной документации и высокого качества самого программного кода. Стоит сказать, что на базе Cocoon разработан другой проект Apache - Lenya. Кстати, именно о нем мы с вами и поговорим сейчас.


Apache Lenya

Если вы думаете, что мы сегодня, как и в прошлый раз, будем рассматривать исключительно программные продукты для разработчиков, то спешу вас разочаровать (а может быть, и наоборот - обрадовать) - Lenya к этому классу продуктов не относится. Потому что такое название носит CMS, система управления контентом для сайтов. То есть, предназначен этот продукт уже не столько для разработчиков, сколько для web-мастеров.

Найти подробную информацию о Lenya можно на официальном сайте проекта, расположенном по адресу lenya.apache.org. Мы же окинем эту CMS только достаточно поверхностным взглядом.

Разработчики этого проекта говорят, что пользователи Lenya имеют возможность доступа ко всем функциям Cocoon для того, чтобы расширить возможности своего сайта. Что ж, спорить с ними трудно - ведь, как я уже говорил, CMS основана именно на этом фреймворке. Так что исходя из этого можно догадаться, что функциональность её основана также на XML-документах и XSL-преобразованиях исходных данных. Впрочем, это не означает, что в случае, если вы выберете именно эту CMS для своего сайта (или сайтов), вам придется набирать все эти XML-файлы, что называется, "ручками". Lenya предлагает вам вполне современные WYSIWYG-редакторы, которые на время редактирования страниц блокируют доступ пользователей к ним, так что вы можете безо всяких опасений редактировать данные столько времени, сколько вам нужно. Валидация XML-файлов происходит с помощью технологии RELAX NG, и при этом для редактируемых в WYSIWYG-редакторах страниц доступен возврат к их старым версиям. Весьма полезной представляется поддержка многоязычных сайтов с возможностью быстрого переключения пользователем языка для каждой конкретной страницы. Поддерживаются шаблоны XHTML+CSS, и, что немаловажно, URL'ы, которые получаются при использовании Lenya, выглядят красиво и читабельно, хотя, конечно, в наш век сервисов коротких ссылок это уже не такая большая проблема, как раньше. Что касается безопасности, то каждую страницу в отдельности или какую-либо взятую целиком часть сайта можно защитить с помощью SSL-доступа, но, конечно, защищать таким образом весь сайт - шаг вряд ли оправданный, с точки зрения производительности его работы. Аутентификация пользователей возможна через локальный LDAP, можно выставлять диапазон IP-адресов для доступа к сайту.

В целом, как видите, Lenya - весьма удобная и многофункциональная CMS (ну а чего можно было ещё ожидать от проекта, разработанного под эгидой Apache?). Но в наших краях эту CMS можно встретить сравнительно нечасто.


Apache Derby

Чего только нет среди проектов фонда Apache... И, что интересно, есть среди них даже полноценная реляционная СУБД, написанная, конечно же, на Java. Называется эта СУБД Derby (db.apache.org/derby). Конечно, эта СУБД - не Oracle и даже не MySQL, однако она по-своему интересна и может оказаться очень полезной в различных ситуациях.

Как и большинство проектов Apache, история Derby началась "под крылом" совершенно другой организации - компании Cloudscape Inc. Она решила в 1996 году разработать собственную СУБД, написанную целиком на Java, и уже в 1997 году представила на суд публики систему под названием JBMS. Затем Cloudscape вместе со своей базой данных (которая к тому времени тоже называлась Cloudscape) была куплена компанией Informix, которую в последующем купила не нуждающаяся в лишних представлениях IBM. Ну а в августе 2004-го IBM передала код встраиваемой Java-СУБД фонду Apache, который, собственно говоря, с тех пор и занимается дальнейшей разработкой этого программного продукта.

После знакомства с краткой историей продукта у вас вряд ли возникнет вопрос о том, почему диалект SQL, используемый в Derby, - это диалект IBM DB2. Ключевой особенностью Derby является возможность встраивания её в любые Java-приложения - фактически, вся функциональность базы данных имеется внутри JDBC-драйвера, который используется для "связи" с СУБД. При этом для базовой функциональности СУБД не требуется слишком много места - приложение "толстеет" всего лишь на пару мегабайт. Впрочем, не стоит думать, что Derby - это исключительно однопользовательская система управления базами данных. Для предоставления пользователям функциональности традиционного клиент-сервера существуют Derby Network Client JDBC driver и Derby Network Server. Подключение производится по TCP/IP, и при этом СУБД может работать в "гибридном" режиме: то есть принимать TCP/IP-подключения от внешних клиентов и одновременно взаимодействовать с подключением от той же виртуальной машины, под которой работает сам.

К сожалению, тот факт, что Java - это не чисто компилируемый язык, дает знать о себе, когда речь заходит о сравнении производительности Derby с производительностью других встраиваемых СУБД. Хотя, возможно, дело не только в Java, а ещё и в самой архитектуре СУБД или в реализации каких-то её компонентов - здесь, к сожалению, я ничего определенного сказать не могу.

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

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

06 за 2010 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!