Apache Commons(アパッチ コモンズ)は、
Apacheソフトウェア財団が提供する、再利用可能な
Javaコンポーネントのコレクションです。このプロジェクトは、オープンソースの
Javaソフトウェア開発を支援し、様々な開発ニーズに応えることを目的としています。
Commonsは大きく分けて、以下の3つの部分で構成されています。
Commons Proper(プロパー): 開発と維持に重点を置いた、安定した
Javaコンポーネント群です。ここでは、Jakartaコミュニティのデベロッパーたちが共同で作業を行い、高品質な
コンポーネントを提供しています。Commons Properの
コンポーネントは、他の
ライブラリへの依存を最小限に抑え、デプロイが容易になるように設計されています。また、インターフェースの安定性を重視しており、利用者は将来の変更を気にせずに実装を進めることができます。
Commons Properには、30以上のサブプロジェクトが存在し、以下のようなカテゴリに分類されています。
BCEL: Javaバイトコードを操作するための
ライブラリ。
BeanUtils: Java Beansをサポートする
ライブラリ。
Chain: GoFデザインパターンのChain of Responsibilityパターンをサポート。
CLI: コマンドラインインタフェースを扱う
ライブラリ。
Codec: エンコード/デコードを行う
ライブラリ。
Collections: Javaのコレクションフレームワークを拡張するクラス群。
Compress: tar, ZIP, bzip2などの圧縮形式をサポートする
ライブラリ。
Configuration: プロパティファイルなどの設定ファイルを扱うクラス群。
CSV: CSVファイルを扱う
ライブラリ。
DBCP: データベース接続プーリングをサポートする
ライブラリ。
DBUtils: JDBCをサポートする
ライブラリ。
Email: メール送信をサポートする
ライブラリ。
FileUpload: Java Servlet/JSPでのファイルアップロードをサポートする
ライブラリ。
IO: java.ioパッケージを拡張する
ライブラリ。
Lang: java.langパッケージを拡張する
ライブラリ。文字列操作やObjectクラスの拡張など。
Logging: 複数のロギングAPIを切り替えるための
ライブラリ。
Math: 数学関数や統計処理
ライブラリ。
Net: java.netパッケージを拡張し、FTPなどのプロトコルを扱う
ライブラリ。
Pool: オブジェクトプーリングをサポートする
ライブラリ。
Validator: 様々なバリデーションを行う
ライブラリ。
Commons Lang は、`java.lang` パッケージを拡張する
ライブラリで、`Object.equals()` の拡張や、`Object.toString()` をリフレクションを用いてメンバ変数を表示するなど、
Javaの標準APIをより便利に利用するための機能を提供します。`StringUtils` クラスをはじめ、`Object#equals()`, `Object#hashCode()`, `Object#toString()`, `Comparable#compareTo()` メソッドの
オーバーライドを支援するクラスなど、多数の便利なユーティリティが含まれています。
Commons Collections は、
Javaの `java.util` パッケージのコレクションフレームワークを拡張する
ライブラリです。例えば、
Java 6には
クロージャの機能はありませんが、`Predicate` を実装することで、コレクションから条件を満たす要素を簡単に検索することができます。
Commons Sandbox(サンドボックス): Jakartaコミュニティの貢献者が、実験的なプロジェクトを共同で開発する環境です。ここにあるプロジェクトは、Commons Properへの昇格を目標としており、開発者グループによって改善が続けられています。
Commons Dormant(活動休止): 最近開発活動が停滞している
コンポーネントの集まりです。これらの
コンポーネントは有用な場合もありますが、自身でビルドする必要があり、近い将来のリリースは期待できない状態です。
関連項目
Google Guava: Googleが開発しているオープンソースの
Javaユーティリティ
ライブラリ群です。Apache Commonsとは異なり、JDK 1.6以降を対象として開発されており、より新しい
Javaの機能を利用しています。
参考
Goyal, Vikram (2003年6月25日). “Using the Jakarta Commons, Part I”. August 13, 2006閲覧。
外部リンク
Apache Commons
Apache Commonsは、
Java開発において非常に有用な
ライブラリ群を提供しており、効率的な開発を支援する強力なツールです。これらの
ライブラリを活用することで、開発者は車輪の再発明を避けることができ、より創造的な作業に集中することができます。