前回は,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用のプラグイン
- ForrestBar Apacheのプロジェクトやリソースを検索するためのツールバー(MozillaおよびFirefox用)
- ・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 オブジェクト/リレーショナルマッピングツール
- Agila Java BPELエンジン
- ・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変換ツール
- BSF Javaから他スクリプト言語にアクセスするためのAPI
- ・James
- James POP3,NNTPもサポートするメールアプリケーションサーバー
- ・Lenya
- Lenya Webサイトのコンテンツ管理システム
- ・Logging
- log4cxx C++用のロギングフレームワーク
- log4j Java用のロギングフレームワーク
- Log4net .NET用のロギングフレームワーク
- Log4php PHP用のロギングフレームワーク
- log4j Java用のロギングフレームワーク
- ・Lucene
- Lucene Javaベースの全文検索エンジン
- Nutch JavaベースのWeb検索エンジン
- Lucene4c C言語ベースの全文検索エンジン
- Nutch JavaベースのWeb検索エンジン
- ・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)の実装
- Jetspeed-2 Portlet Specification(JSR-168)に対応したJavaベースのポータルサイト構築フレームワーク
- ・SpamAssassin
- SpamAssassin スパムメールフィルタ
- ・Struts
- Struts Webアプリケーションフレームワーク
- Struts-BSF StrutsのアクションをBSF で記述するためのツール
- Struts-Faces StrutsとJSFを融合させるためのツール
- Shale JSFの拡張フレームワーク
- Struts-Flow CocoonのControlFlow を利用した,ワークフローライブラリ
- Struts-BSF StrutsのアクションをBSF で記述するためのツール
- ・TCL
- mod_tcl Apache HTTP ServerでTCLを利用するためのモジュール
- Rivet 次世代のmod_tcl
- Websh TCLを用いたWebアプリケーションフレーワーク
- Rivet 次世代のmod_tcl
- ・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実装
- Axis(Java) SOAP(Simple Object Access Protocol)の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による描画を行うモジュール
- Xerces C++ XMLパーサのC++実装
- ・XMLBeans
- XMLBeans XML-Java バインディングツール
- ・XML Graphics
- Batik Javaベースのグラフィックツール
- FOP Javaベースの印刷フォーマッタとレンダラ
一覧からも,Javaベースのプロジェクトが非常に多いことが分かる。Javaはご存知のとおり,その言語仕様として一度記述すれば何処でも動作可能であることが保証されている。不特定多数の利用者に配布するオープンソースプロダクトと非常に相性がよいためであろう。
なぜASFで,これほど多数のJ2EEプロダクトが開発されているのだろう。