前回は,Apache Software Foundation(以下ASF)という組織や内部の仕組みにフォーカスしてお話しした。ASFではこれまで断片的に紹介してきたように,非常に多くのプロダクトが,前回紹介したような多くのプロジェクトによって開発されている。

 今回はそれらのプロジェクトで開発されているプロダクトにフォーカスし,その後,J2EEと関連の深いプロダクトをピックアップし,どのようなプロダクトが存在するかを紹介していきたい。

 現在のASFではいったいどのくらいのプロダクトが開発されているのだろうか。

 実は,そのすべてのリストを網羅したページはASF内には存在しない。これは,個々のプロダクトの開発管理は,各プロジェクトに任されているため,ASFとしてプロダクトすべてを把握するのは困難だからであろう。そこで,筆者はASFの全プロジェクトを調査し,2005/6月現在の状況を下記のリストにまとめてみた。

 リストからは,休止しているプロダクトや,実験的なプロダクトは除いた。それでも,全部あわせると実に130プロダクトを超えている。ASFがいかに巨大なオープンソース開発団体かわかるだろう。

ASFのプロダクト一覧

・HTTP Serverプロジェクト
Apache Http Server HTTPサーバー
Flood プロファイル駆動のHTTPによる負荷テストツール
・Antプロジェクト
Ant Javaベースのビルドツール
・APR(Apache Portable Runtime)プロジェクト
APR 各種のプラットフォーム依存部分を隠蔽するライブラリ
・Cocoonプロジェクト
Cocoon JavaコンポーネントでWebアプリケーション構築を行うためのフレームワーク
・DBプロジェクト
Torque Javaベースのオブジェクト/リレーショナルマッピングツール
ObjectRelationalBridge Javaべースのオブジェクト/リレーショナルマッピングツール
・Directoryプロジェクト
Apache Directory Server JavaベースのLDAP,DNS,DHCPなどのディレクトリサービスを行うサーバー
・Excaliburプロジェクト
Fortress Javaベースの軽量IoCコンテナ
Framework Javaベースのサーバーアプリケーション用フレームワーク(旧Avalon-Framework)
・Forrestプロジェクト
Forrest ドキュメンテーションフレームワーク
ForrestBar Apacheのプロジェクトやリソースを検索するためのツールバー(MozillaおよびFirefox用)
ForrestBot Webサイトの自動生成とデプロイを行うツール
XXE-Editor XXE用のプラグイン
・Geronimoプロジェクト
Geronimo J2EE アプリケーションサーバー
・Gumpプロジェクト
Gump 継続的インテグレーションをプロジェクト間で実現するツール
・Incubatorプロジェクト
Apollo OASIS WS-ResourceFrameworkの実装
Agila Java BPELエンジン
AltRMI JavaでRPCを簡単に実現するためのツール
Axion Javaリレーショナルデータベース
Beehive メタデータ駆動のJavaアプリケーションフレームワーク
Derdy Javaリレーショナルデータベース
FtpServer FTPサーバー
Graffito コンテンツ管理システム
Harmony J2SE 5 の実装
Hermes OASIS WS-Notification の実装
Jackrabbit コンテンツ管理インタフェース標準(JSR-170)の実装
JuiCE OpenSSL ベースのJava暗号化拡張機能 (JCE)プロバイダ
Muse OASIS Management using Web Services (WSDM-MUWS)の実装
TSIK XML-Dsig,XML-Enc,WS-Security,XKMS,SAML などの実装
Woden WSDL 2.0の実装
WSRP4J Web Services for Remote Portals(WSRP)の実装
httpd-CLI Httpサーバー用コマンドラインインタフェースの実装
iBATIS オブジェクト/リレーショナルマッピングツール
・Jakartaプロジェクト
BCEL バイトコード処理ライブラリ
BSF Javaから他スクリプト言語にアクセスするためのAPI
Cactus インコンテナアプローチの単体テストフレームワーク
Commons-Attributes docletタグのようなメタデータ属性を実現するランタイムAPI
Commons-BeanUtils リフレクションAPI/イントロスペクションAPIのラッパー
Commons-Betwixt JavaBeans-XML間の相互マッピングサービス
Commons-Chain GoFのChain of Responsibilityパターンの実装
Commons-CLI コマンドラインインタフェースのためのAPI
Commons-Codec HexやBase64,URL エンコードなどのコーデックエンコーダとデコーダ
Commons-Collections Java Collections Frameworkの拡張・追加クラス
Commons-Configuration 設定ファイルを読み込むためのAPI
Commons-Daemon UnixのデーモンのようなプログラムをJavaで実現するためのAPI
Commons-DBCP データベースコネクションプールAPI
Commons-DbUtils JDBC APIのヘルパAPI
Commons-Digester XMLファイル-Javaオブジェクトマッピングツール
Commons-Discovery オブジェクトのインスタンスをさまざまなリソースから探すAPI
Commons-EL 式言語(Expression Language)の実装API
Commons-Email Email操作用のシンプルなAPI
Commons-FileUpload Webアプリケーション用ファイルアップロードAPI
Commons-HttpClient HTTPクライアント用API
Commons-IO I/O APIのユーティリティ
Commons-Jelly XML形式スクリプトの実行エンジン
Commons-Jexl JSTLの式言語の拡張言語
Commons-JXPath XPathシンタックスを利用したJavaBeans操作API
Commons-Lang Java言語を補完するAPI
Commons-Latka HTTP機能テストツール
Commons-Launcher Javaアプリケーションをクロスプラットフォームで起動するランチャ
Commons-Logging 様々なロギングフレームワークを同一APIで扱えるラッパー
Commons-Math 数学および統計コンポーネントAPI
Commons-Modeler Java Management Extensions(JMX)の実装
Commons-Net ネットワークプロトコル操作API
Commons-Pool オブジェクトプールの実装
Commons-Primitives Javaプリミティブ型操作API
Commons-Resources 国際化メッセージやメッセージキーを操作するAPI
Commons-Transaction トランザクション操作用API
Commons-Validator 入力値検証用フレームワーク
Commons-VFS 様々なファイルシステムを統一的に扱うAPI
ECS マークアップ言語生成用JavaAPI
HiveMind サービス指向アーキテクチャのDIコンテナ
JCS クラスタリングシステムに適用可能な分散キャッシュシステム
JMeter 負荷テストツール
ORO Perl5互換の正規表現パッケージ
POI ExcelファイルやOLE2ドキュメントを操作するJavaAPIセット
Regexp 正規表現パッケージ
Slide WebDAV を用いたコンテンツ管理システム
Taglibs 再利用可能なカスタムタグライブラリリポジトリ
Tapestry コンポーネントベースのJava Webアプリケーションフレームワーク
Tomcat Web(JSP/Servlet)コンテナ
Turbine Java Webアプリケーションフレームワーク
Fulcrum Turbine用のコンポーネントリポジトリ
META Turbineベースアプリケーションを作成する際のMaven用環境
TDK Turbineアプリケーション開発ツールキット
JCS 分散キャッシュシステム
Velocity テンプレートエンジン
Velocity-Tool アプリケーション(Webを含む)でVelocityを利用するためのライブラリ
Anakia VelocityとJDOMを用いたXML文書変換ツール
Texen テキスト生成ユーティリティ
DVSL Velocityを用いたXML変換ツール
・James
James POP3,NNTPもサポートするメールアプリケーションサーバー
・Lenya
Lenya Webサイトのコンテンツ管理システム
・Logging
log4cxx C++用のロギングフレームワーク
log4j Java用のロギングフレームワーク
Log4net .NET用のロギングフレームワーク
Log4php PHP用のロギングフレームワーク
・Lucene
Lucene Javaベースの全文検索エンジン
Nutch JavaベースのWeb検索エンジン
Lucene4c C言語ベースの全文検索エンジン
・Maven
Maven Javaベースのプロジェクトビルドツール
・MyFaces
MyFaces JSFの実装
・Perl
mod_perl Apache HTTP Serverで Perl を利用するためのモジュール
・Portals
Jetspeed-1 Javaベースのポータルサイト構築フレームワーク
Jetspeed-2 Portlet Specification(JSR-168)に対応したJavaベースのポータルサイト構築フレームワーク
Pluto Portlet Specification(JSR-168)の実装
・SpamAssassin
SpamAssassin スパムメールフィルタ
・Struts
Struts Webアプリケーションフレームワーク
Struts-BSF StrutsのアクションをBSF で記述するためのツール
Struts-Faces StrutsとJSFを融合させるためのツール
Shale JSFの拡張フレームワーク
Struts-Flow CocoonのControlFlow を利用した,ワークフローライブラリ
・TCL
mod_tcl Apache HTTP ServerでTCLを利用するためのモジュール
Rivet 次世代のmod_tcl
Websh TCLを用いたWebアプリケーションフレーワーク
・Web Services
Addressing WS-Addressing(Web Services Addressing)の実装
Axis(Java) SOAP(Simple Object Access Protocol)のJava実装
Axis(C++) SOAP(Simple Object Access Protocol)のC++実装
EWS(Enterprise Web Service) J2EE 1.4とJ2EE Web Service仕様の融合
JaxMe JAXB,the specification for Java/XML binding
jUDDI UDDI(Universal Description Discovery and Integration) レジストリの実装
Kandula AxisベースのWS-Coordination,WS-AtomicTransaction,WS-BusinessActivityの実装
Mirae JSR-172の実装
Muse MUWS(Management Using Web Services) のJava実装
Pubscribe WSN(Web Services Notification) のJava実装
Sandesha WS-ReliableMessaging(Web Services ReliableMessaging)のJava実装
Scout JSR-93(JAXR)の実装
WSIF (Web Services Invocation Framework) Webサービス呼び出しフレームワーク
WSRF WSRF(Web Services Resource Framework)のJava実装
WSS4J WS-Security(OASIS Web Services Security)のJava実装
XML-RPC XML-RPCのJava実装
・XML
Xerces Java2 XMLパーサのJava実装
Xerces C++ XMLパーサのC++実装
Xerces Perl XMLパーサのPerl実装
Xalan Java2 XSL スタイルシートプロセッサのjava実装
Xalan C++ XSL スタイルシートプロセッサのC++実装
XML-Security XMLデータ用のセキュリティ機能
Xindice XMLデータベース
AxKit Apache上でXML+XSLTによる描画を行うモジュール
・XMLBeans
XMLBeans XML-Java バインディングツール
・XML Graphics
Batik Javaベースのグラフィックツール
FOP Javaベースの印刷フォーマッタとレンダラ

 一覧からも,Javaベースのプロジェクトが非常に多いことが分かる。Javaはご存知のとおり,その言語仕様として一度記述すれば何処でも動作可能であることが保証されている。不特定多数の利用者に配布するオープンソースプロダクトと非常に相性がよいためであろう。

 なぜASFで,これほど多数のJ2EEプロダクトが開発されているのだろう。