Проекты Apache

Часть пятая

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


Apache Commons

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

Какие же именно компоненты предлагает Apache Commons Java-разработчикам? Если кратко, то... любые. Список разных областей, которые охватывают входящие в состав Apache Commons компоненты, весьма обширен. Как и список самих компонентов - вернее сказать, их пакетов. Что, впрочем, не станет помехой для того, чтобы мы сейчас его здесь рассмотрели.

 

Attributes включает в себя рантайм-API для работы с метаданными. BeanUtils - это "обертки" вокруг API Java Reflection, которые позиционируются как более простые и эффективные в использовании, чем сами программные интерфейсы. Betwixt - пакет, предназначенный для маппинга JavaBeans в XML-документы (и в обратную сторону); Chain - реализация шаблона проектирования "Chain of Responsibility"; CLI - парсер аргументов командной строки (весьма полезно для разработки разных вспомогательных утилит для проекта, к которым нет ни времени, ни желания прикручивать графический пользовательский интерфейс). Codec - пакет, содержащий реализацию базовых алгоритмов кодирования и декодирования информации (фонетических, Base64, URL и множества других). Пакет Collections из состава Apache Commons расширяет возможность одноименного пакета из стандартной библиотеки Java, позволяя работать с коллекциями объектов. По названию пакета Compress вполне понятно, что предназначен он для работы со сжатыми данными, а если точнее, то для манипуляций с архивами форматов TAR, ZIP, BZIP2. Пакет Configuration позволяет читать файлы с настройками различных форматов, а Daemon предлагает возможность написания на Java кода, функциональность которого будет подобна функциональности "демонов" из мира UNIX. DBCP включает в себя сервисы для работы с пулом данных при работе с базами данных, а DbUtils предлагает разные вспомогательные функции, которые окажутся полезными при работе с JDBC.

Digester - пакет, предлагающий маппинг Java-объектов в XML, а Discovery предлагает инструменты для определения ресурсов путем маппинга имен сервисов или ссылок на имена ресурсов. Пакет EL включает в себя интерпретатор языка выражений, определенный спецификацией JSP 2.0. Что касается пакета Email, то, как видим, эта библиотека поможет при работе с электронной корреспонденцией в Java-приложениях. Пакет Exec содержит в себе API для запуска внешних процессов и работы с окружением из приложений, написанных на Java. По названию пакета FileUpload можно достаточно легко догадаться о том, что в нем содержится код, позволяющий встроить разработчикам в свои сервлеты код, отвечающий за закачку файлов на серверы. Пакет IO содержит разные вспомогательные функции для работы с вводом и выводом, пакет JCI нужен для взаимодействия с компилятором Java, Jelly содержит в себе движок для работы с основанными на XML скриптами.

Пакет Jexl реализует поддержку языка выражений, который расширяет возможности аналогичного языка из состава JSTL, а JXPath включает в себя различные утилиты для манипулирования Java Beans с использованием синтаксиса XPath. Lang расширяет возможности наверняка знакомого не понаслышке многим из наших читателей пакета java.lang, а пакет Launcher предлагает разработчикам кросс-платформенный загрузчик Java-приложений. Пакет Logging включает в себя "обертки" вокруг разнообразных реализаций API логгирования, а пакет Math включает в себя различные функции из области математики и статистики. Modeler предлагает механизмы для создания моделей, совместимых со спецификацией JMX, а что касается пакета Net, то он включает в себя разные утилиты для работы с сетью и реализации различных протоколов. Pool позволяет работать с пулом объектов, а Primitives реализует, по словам разработчиков, более компактную и быструю, чем стандартная, библиотеку "примитивных" типов Java. Proxy позволяет создавать в Java-приложениях динамические прокси. Весьма интересна Sanselan - библиотека для работы с изображениями, написанная на 100% на Java. Она также входит в состав пакета Apache Commons. Пакет SCXML включает в себя реализацию спецификации State Chart XML, а также позволяет запускать конечные автоматы, определенные с помощью SCXML-документа, и абстрагирует интерфейсы среды. Пакет Transaction реализует, как несложно догадаться, поддержку транзакций при работе с коллекциями и при доступе к файлам; пакет Validator содержит фреймворк для определения валидаторов и правил валидации для XML-файлов; а пакет VFS (его название расшифровывается полностью как Virtual File System, то есть, виртуальная файловая система) позволяет работать с FTP, SMB, ZIP и т.д. как с единой логической файловой системой.

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

Пакет CLI2, очевидно, решили создать те разработчики, которых не устраивают возможности Apache Commons CLI. CSV предназначен для тех, кто желает встроить в свои приложения возможность чтения и записи файлов распространенного в силу своей простоты формата CSV. Пакет Finder предлагает практически те же самые возможности, что и команда find из арсенала стандартной командной строки UNIX. Flatfile предлагает возможности работы с плоскими структурами данных, а Functor - с функциями как с объектами. Пакет I18n предлагает расширенные возможности локализации приложений благодаря удобным "связанным" текстам (например, для ошибок предлагаются тексты, которые состоят из названия, текста, итога и деталей ошибки). Пакет Id весьма скромен, но чрезвычайно полезен, так как дает возможность генерировать уникальные идентификаторы. Javaflow позволяет делать "снимок" состояния Java-приложения, а JNet позволяет использовать динамические обработчики URL-потоков через java.net API. Весьма интересен пакет Monitoring, который предоставляет, по словам его разработчиков, простой и "легкий" пакет инструментов для мониторинга возможностей и производительности Java-приложения. Nabla предоставляет возможность вычисления производных функций, а пакет OpenPGP, имеющий говорящее название, предоставляет интерфейсы для работы с OpenPGP. Пакет Performance предназначен для проведения различных "бенчмарков" и тестов, Pipeline предоставляет набор утилит для работы с pipeline-очередями, и, наконец, пакет Runtime предоставляет уровень абстракции JNI для различных операционных систем.

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

В целом же, как видите, Apache Commons можно назвать едва ли не самым массовым среди проектов, посвященных созданию инструментов для разработчиков. "В каком смысле массовым?", - можете спросить вы. В самом что ни на есть прямом смысле, поскольку количество разработчиков, применяющих какие-либо из пакетов, разработанных в составе этого проекта, наверняка превышает количество тех, кто использует, например, те же самые Struts или Cayenne. Потому что спектр приложений, в которых можно применить Apache Commons, не просто широк - он практически безграничен.

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

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

Номер: 

09 за 2010 год

Рубрика: 

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