Apache Commons

Apache Commons（アパッチ コモンズ）は、Apacheソフトウェア財団の傘下にある再利用可能なJavaコンポーネントをまとめたApacheのトッププロジェクト。Commonsの目的は再利用可能なオープンソースJavaソフトウェアを提供することである。Commonsは三つの部分、proper（プロパー）, sandbox（サンドボックス）, dormant（活動休止）から構成されている。
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つの一般カテゴリに分類されている。
 "からの表"
Commons Lang.
Commons Lang には java.lang を拡張した物が入っている。
例1.
codice_1 を拡張した物。nullが入っていても比較が可能である。
String s1 = null;
String s2 = "abc";
if(ObjectUtils.equals(s1, s2)) {
 System.out.println("equal");
例2.
Java のデフォルトの codice_2 はメンバ変数の内容まで表示してくれないが、リフレクションを使用して、メンバ変数の内容を表示する形で、codice_2 を実装する。
public String toString() {
 return ToStringBuilder.reflectionToString(this);
Commons Collections.
Apache Commons Collections には、主に、java.util の Collection 関係の拡張した物が入っている。
例.
Java 6 にはクロージャがないが、codice_4 を実装することで、条件を満たす物を探すことができる。以下、リストから、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。