2003年に開始された本連載の第1回目に Apache Software Foundation(以降ASF)がJ2EEアプリケーション・サーバー Geronimo の開発を開始したと紹介した。
その Geronimo の バージョン1が2006年1月5日,約2年の開発期間を経てついに正式リリースされた。IBMがWebSphere Application Server Community Edition のベースに Geronimoの採用を発表するなど,多くの注目が集まっている。今回はこのGeronimoを紹介したい。
ApacheがJ2EE APサーバーを開発する2つの意味
あらためて書くまでもないが,GeronimoはオープンソースのJ2EEアプリケーション・サーバーだ。だた,これは決して新しいことではない。既に世の中にはJBossを筆頭として多くのオープンソースのJ2EEアプリケーション・サーバーが存在している。しかし,あえてASFでアプリケーション・サーバーを開発するのには2つの大きな意義がある。
1つは,アパッチライセンスのもとで配布可能となることだ。
アパッチライセンスはご存知のとおり,非常に自由度の高いライセンスだ。アパッチのプロダクトを組み込んだり,一部を変更したコマーシャルプロダクトを販売しても,すべてをオープンソース化する必要はない。すなわち,Geronimoをベースに新しいアプリケーション・サーバーを開発し,それを販売する事も可能となるのだ。
そしてもう1つは,いままでのアプリケーション・サーバーにない新しいアーキテクチャを採用していることだ。
Geronimoは自身の機能を多くのオープンソース・プロダクトによって構成している。そしてそれらが組み込みやすいようモジュール化アーキテクチャを採用しており,必要に応じてモジュールの追加,削除,入れ替えが可能となっている。よって,新しいJavaEEの仕様やAPIにも柔軟に対応できるだけでなく,新しい機能の追加なども容易に行えるのだ。
また,必要最小限のモジュールのみで構成した非常にシンプルなサーバーを構成することも可能となる。この2つが合わさることで,付加価値を追加したり,特定のモジュールを入れ替えて機能強化をはかったGeronimoを販売することも容易に行えるようになるのだ。
GeronimoがサポートしているAPI
気になるGeronimoのスペックだが,まずは仕様面から見ていこう。GeronimoがサポートしているAPIとそのバージョンを下記に示す。
Geronimoは開発開始が2003年ということもあり,最新のJavaEE5の仕様をすべてサポートしているという訳ではない。基本的には現時点でのJ2EE1.4のスペックをすべて満たしているのみだ。実際,GeronimoはJ2EE1.4 TCK(Technology Compatibility Kit) をパスしており,J2EE1.4対応のアプリケーション・サーバーとしては仕様面においては安心して利用することができるだろう。
JavaEE5のプレビュー仕様がリリースされており,一部のJ2EEアプリケーション・サーバーではその実装も開始され始めているこの時期においては,新しい仕様を試してみるという利用方法に使えないのは残念である。この点においては GlassFish に軍配があがる。ただし,前述したようにモジュールの入れ替えによって簡単に新しい機能を追加可能となるため,JavaEE5への対応もそう遠くない時期に行われるだろう。
上記のほかにも Webサービス関連のAPIである JAXP, JAX-RPC, JAXR, SAAJ などがサポートされており,Webサービス・アプリケーションにも対応している。
Geronimoを構成する40以上のモジュール
そして,これらの機能は前述したように多くのモジュールによって構成されおり,Geronimoバージョン1は実に40以上のモジュールから構成されている。それらモジュールの多くは既存のオープンソース・プロダクトから構成されている場合がほとんどだ。すなわち,GeronimoはJ2EE関連のオープンソース・プロダクトの集大成と言えるだろう。ベースとなっている代表的なオープンソース・プロダクトを表1に示す。
表1●Geronimoを構成する代表的なオープンソース・プロダクト
プロダクト | 機能 |
---|---|
OpenEJB(http://www.openejb.org/) | EJB コンテナ |
Jetty(http://www.mortbay.org/jetty/index.html) | Web コンテナ |
Tomcat(http://jakarta.apache.org/tomcat/) | Web コンテナ |
ActiveMQ(http://activemq.codehaus.org/) | JMS プロバイダ |
TranQL(http://tranql.codehaus.org/) | データベース接続プールアダプタープロバイダ |
HOWL(http://howl.objectweb.org/) | トランザクションおよびロギングプロバイダ |
Axis(http://ws.apache.org/axis/) | Webサービスプロバイダ |
CGlib(http://cglib.sourceforge.net/) | バイトコード操作ライブラリ |
Derby(http://incubator.apache.org/derby/) | 組み込みデータベース |
Jakarta Commons(http://jakarta.apache.org/commons/) | 共通ライブラリ |
MX4J(http://mx4j.sourceforge.net/) | Java Management Extensions(JMX)エンジン |
Velocity(http://jakarta.apache.org/velocity/) | テンプレートエンジン |
XMLBeans(http://xmlbeans.apache.org/) | XMLバインディングライブラリ |
多くのプロダクトが利用されていることがお分かり頂けるだろう。また,Webコンテナが2つ用意されていることに気づかれただろうか。GeronimoはJettyとTomcatの2種類のWebコンテナをサポートしており,利用時には好みや目的に合わせてどちらかを選択するようになっている。配布形式にも JettyバージョンとTomcatバージョンが用意されており,設定変更などをせずに利用できるようになっている。
では早速,Geronimoを起動してみよう。