Apache Commons
Apache Commons(アパッチ コモンズ)は、Apacheソフトウェア財団の傘下にある再利用可能なJavaコンポーネントをまとめたApacheのトッププロジェクト。Commonsの目的は再利用可能なオープンソースJavaソフトウェアを提供することである。Commonsは三つの部分、proper(プロパー), sandbox(サンドボックス), dormant(活動休止)から構成されている。
開発元 | Apacheソフトウェア財団 |
---|---|
プログラミング 言語 | Java |
プラットフォーム | Javaプラットフォーム |
種別 | ライブラリ |
ライセンス | Apache License 2.0 |
公式サイト |
commons |
Commonsにはjava.langパッケージの機能を拡張するLang、Javaのコレクションフレームワークを拡張するクラス群を集めたCollectionsなどがある。
Commons Proper
編集The Commons Properは役立つJavaコンポーネントを開発維持すること専用に作られている。Common Properはコラボレーションとシェアリングの役割を持っているが、Jakartaコミュニティの至る所からのディベロッパーがJakartaプロジェクトとJakartaユーザによってシェアされるためにプロジェクトで共に活動できる。
Commonディベロッパーはコンポーネントが他のソフトウェアライブラリに最小限に依存することを保証するよう努力する。それで、これらのコンポーネントは容易にデプロイ(配備)できる。加えて、Commonsコンポーネントは可能な限りインタフェースを保つ。それで、(他のJakartaサブプロジェクトを含む)Jakartaユーザはこれらのコンポーネントを、将来変更される心配無く実装することができる。
2006年8月にはこれらはCommons Properでは30以上のプロジェクトになり、5つの一般カテゴリに分類されている。
コンポーネントカテゴリ | 例 |
---|---|
Web関連 | FileUpload, HTTPClient, and Net |
XML関連 | Betwixt, Digester, Jelly, and JXPath |
ユーティリティ | BeanUtils, Configuration, Logging, DBCP, Pool, and Validator |
パッケージ | Codec and Modeler |
ありふれたもの | CLI, Discovery, Lang, and Collections |
( & Goyal 2003)からの表
サブプロジェクト
編集- BCEL - Javaバイトコードを扱うライブラリ。
- BeanUtils - Java Beansをサポート。
- BSF
- Chain - GoFデザインパターンの一つ、Chain of Responsibility パターンをサポート。
- CLI
- Codec
- Collections - java.utilパッケージにあるコレクションフレームワークを拡張するクラス群。
- Compress - tar, ZIP, bzip2をサポート。
- Configuration -
Properties
クラスのような設定ファイルを弄るクラス群。 - CSV
- Daemon
- DBCP - 関係データベースのコネクションプーリングをサポート。
- DBUtils - JDBCをサポートする。
- Digester
- Discovery
- EL
- Email - メールライブラリ
- Exec
- FileUpload - Java Servlet/JSPでのファイルアップロードをサポート。
- IO - java.ioパッケージをサポート。
- JCI
- Jelly
- Jexl
- JXPath
- Lang - java.langパッケージを拡張する。StringUtilsほか、
Object#equals()
,Object#hashCode()
,Object#toString()
,Comparable#compareTo()
メソッドのオーバーライドを支援するクラスなどが存在する。 - Launcher
- Logging - ひとつのプログラムでJava Logging API(java.util.loggingパッケージ)やJakarta Log4Jを併用し、簡単に複数のロギングAPIを切り替えるときに便利なAPI。
- Math -
Math
クラスやjava.mathパッケージにはない数学ライブラリを提供。複素数や行列演算、統計学などのライブラリが揃っている。 - Modeler
- Net - java.netパッケージを拡張する。FTPなどのプロトコルを扱うことができる。
- Pool - Javaでのオブジェクトプーリングをサポート。
- Primitives
- Proxy
- SCXML
- Validator
- VFS
- Weaver
Commons Lang
編集Commons Lang には java.lang を拡張した物が入っている。
例1
編集Object.equals()
を拡張した物。nullが入っていても比較が可能である。
String s1 = null;
String s2 = "abc";
if(ObjectUtils.equals(s1, s2)) {
System.out.println("equal");
}
例2
編集Java のデフォルトの Object.toString()
はメンバ変数の内容まで表示してくれないが、リフレクションを使用して、メンバ変数の内容を表示する形で、Object.toString()
を実装する。
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Commons Collections
編集Apache Commons Collections には、主に、java.util の Collection 関係の拡張した物が入っている。
例
編集Java 6 にはクロージャがないが、Predicate
を実装することで、条件を満たす物を探すことができる。以下、リストから、a で始まる物を見つけ出す。
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
list.add("ant");
Collection<?> aList = CollectionUtils.select(list, new Predicate() {
public boolean evaluate(Object obj) {
return ((String)obj).startsWith("a");
}
});
Commons Sandbox
編集The Commons SandboxはJakartaコントリビュータがCommons Properに含まれていないプロジェクトで協業し実験する作業環境である。サンドボックスにあるプロジェクトはCommons Properの推進に関するJakartaのメンバによって支持されており、ディベロッパーのグループは彼らが推進に関して基準に満たすまでサンドボックスを一層よくするために活動している。
Apache CommonsにはCommons Sandboxのプロジェクトの現在のリストが存在する Sandbox page。
Commons Dormant
編集Commons Dormantは最近の開発活動が矮小化していることが原因で不活性と宣告されたコンポーネントの集合である。これらのコンポーネントは役に立つかも知れないが、あなた自身でビルドしなければならない。これらのコンポーネントは近い将来リリースされないと思ったほうが良い。
Apache Commonsには利用できるCommons Dormantプロジェクトの現在のリストが存在するDormant page。
関連項目
編集- Google Guava - Googleによって開発されているオープンソースのJavaユーティリティライブラリ群。後方互換性の確保を担保しているApache Commonsと違い、JDK 1.6以降を対象として開発されている。
参考
編集Goyal, Vikram (2003年6月25日). “Using the Jakarta Commons, Part I”. August 13, 2006閲覧。