Apache Commons

Apache Commons
開発元 Apacheソフトウェア財団
リポジトリ
  • svn.apache.org/repos/asf/commons/
ウィキデータを編集
プログラミング
言語
Java
プラットフォーム Javaプラットフォーム
種別 ライブラリ
ライセンス Apache License 2.0
公式サイト commons.apache.org ウィキデータを編集
テンプレートを表示

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 Proper の一般カテゴリ一覧
コンポーネントカテゴリ
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”. 2006年8月13日閲覧。

外部リンク

  • Apache Commons
トップレベル
プロジェクト
  • Accumulo(英語版)
  • ActiveMQ
  • Airflow
  • Ambari(英語版)
  • Ant
  • Aries(英語版)
  • Arrow(英語版)
  • Apache HTTP Server
  • APR
  • Avro(英語版)
  • Axis
  • Axis2
  • Beam
  • Bloodhound(英語版)
  • Brooklyn(英語版)
  • Buildr(英語版)
  • Calcite(英語版)
  • Camel(英語版)
  • Cassandra
  • Cayenne(英語版)
  • Chemistry(英語版)
  • CloudStack(英語版)
  • Cocoon
  • Cordova
  • CouchDB
  • cTAKES(英語版)
  • CXF(英語版)
  • Derby
  • Directory(英語版)
  • Drill
  • Druid(英語版)
  • Empire-db(英語版)
  • Felix(英語版)
  • Flex
  • Flink(英語版)
  • Flume(英語版)
  • FreeMaker(英語版)
  • Geronimo
  • Giraph(英語版)
  • Gump(英語版)
  • Hadoop
  • HBase
  • Helix(英語版)
  • Hive
  • Impala(英語版)
  • Jackrabbit(英語版)
  • James
  • Jena(英語版)
  • Jini(英語版)
  • JMeter(英語版)
  • Kafka
  • Kudu(英語版)
  • Kylin(英語版)
  • Lucene
  • Mahout
  • Maven
  • MINA(英語版)
  • mod_perl(英語版)
  • MyFaces(英語版)
  • NetBeans
  • Nutch(英語版)
  • NuttX(英語版)
  • OFBiz(英語版)
  • Oozie(英語版)
  • OpenEJB
  • OpenJPA
  • OpenNLP
  • OpenOffice
  • ORC(英語版)
  • PDFBox(英語版)
  • Parquet(英語版)
  • Phoenix(英語版)
  • POI
  • Pig(英語版)
  • Pinot(英語版)
  • Pivot
  • Qpid(英語版)
  • Roller
  • RocketMQ(英語版)
  • Samza(英語版)
  • ServiceMix(英語版)
  • Shiro(英語版)
  • SINGA(英語版)
  • Sling(英語版)
  • Solr
  • Spark
  • Storm(英語版)
  • SpamAssassin
  • Struts 1
  • Struts 2(英語版)
  • Subversion
  • Apache Superset
  • SystemDS(英語版)
  • Tapestry
  • Thrift
  • Tika(英語版)
  • Tomcat
  • Traffic Server(英語版)
  • Turbine(英語版)
  • UIMA(英語版)
  • Velocity
  • Wicket
  • Xalan
  • Xerces
  • XMLBeans
  • Yetus(英語版)
  • ZooKeeper
ASF logo
Commons
Incubator
  • Apache MXNet(英語版)
  • Apache Taverna(英語版)
その他の
プロジェクト
Attic
  • Abdera(英語版)
  • Apache Apex(英語版)
  • AxKit
  • Beehive(英語版)
  • Bluesky(英語版)
  • iBATIS
  • c++ Standard Library(英語版)
  • Cactus(英語版)
  • Click(英語版)
  • Continuum(英語版)
  • Apache Deltacloud(英語版)
  • Apache Etch(英語版)
  • Excalibur(英語版)
  • Forrest(英語版)
  • Hama(英語版)
  • Harmony
  • HiveMind(英語版)
  • Jakarta
  • Lenya(英語版)
  • Marmotta(英語版)
  • ODE(英語版)
  • Shale
  • Slide(英語版)
  • Shindig
  • Stanbol(英語版)
  • Tuscany(英語版)
  • Wave(英語版)
  • Wink(英語版)
  • XML
ライセンス
  • カテゴリ Category
  • コモンズ Commons