レベル: 初級 Neal Sanche (neal@nsdev.org), Java developer, Pure Technologies
2006年 6月 20日
Apache Geronimoの将来への見通しを知りたいのであれば、このシリーズの今回の記事が役立つはずです。今回は、Geronimoへの転向者が、Geronimoの将来を探ります。つまりGeronimoの開発者達はこのプロジェクトをどこに持って行こうとしているのか、また重要な新機能、改善事項などについて解説します。この記事を読んで頂ければ、皆さんも彼らと共に、ApacheGeronimoの次期バージョンの幕開けに参加できるかも知れません。
はじめに
オープンソース・ソフトウェアの将来を予測するのは難しいものです。まるで地球上の気候を制御しようとするようなものです。混乱の中から秩序を見つけ出すにはどうすべきなのでしょう。
もし皆さんがABCテレビ・ネットワークの人気ドラマシリーズ「The Six Million Dollar Man」(あるいは、その女性版「The Bionic Woman」でも構いません)のテーマを覚えている歳の人ならば、頭の中でプロジェクターの再生を始めてください。このドラマシリーズは毎回、ひどい事故の話から始まります。医師達は、明るい照明の下で一時も休むことなく働き続け、素晴らしい技術を利用して、患者であるSteveAustinを目覚めさせることに成功します。そして彼は、自分の体のあちこちが、ロボット機構で置き換えられていることに気付きます。こうした生体部品は、実は元々の彼の体よりも優れているのです。これこそ、ApacheGeronimoソフトウェアが来年あたり通過しようとしている過程なのだと私は想像しています。つまりApacheGeronimoは、世界中から集まった専門家チームによって、ほとんど完全に書き換えられようとしています。彼らは、毎回次第に高度になって行く部品を使って、何度も組み立てを繰り返すのです。
この記事では、Apache Geronimoプロジェクトのメンバーが1.1リリースで実装したものを説明します。そして、Geronimo2.0が完成する予定の、それほど遠くない将来に光を当てることにします。
偉大なる1.1
この記事は、Apache Geronimoの1.1がリリースされる前に発表されることはないと思います。ただし私が間違っていた場合に備えて、皆さんがこれを読む頃には恐らくリリースが済んでいるだろう、という言い方をしておくことにします。このリリースには、興奮すべきことが山ほどあるのです。そこで、まずそれについて説明することにしましょう。
まず、Geronimoの中核部分には、新しい、分離可能な心臓が入っています。もし皆さんがJava™EE(Java Enterprise Edition)レイヤーの全部を必要とせず、Web階層へのアクセスだけが必要なのであれば、Geronimoのフル・インストールではなく、Little-G(lightweightGeronimo)が使えるでしょう。Little-Gは19MBしか必要とせず、しかもWebアプリケーションを作るために必要なものがすべて含まれています。そして皆さんは、ApacheTomcatあるいはJettyのいずれかを選択することができます。Little-Gはプラグインを追加してカスタム化することができますが、管理コンソールはなく、コマンドライン・インターフェースしかありません。とはいえ私は、5,000台のサーバーを持つ大口の顧客がLittle-Gを使おうと計画中と聞いています。これは大量のLittle-Gと言えるでしょう。
もし皆さんがCORBA(Common Object Request Broker Architecture)を使わないのであれば、Geronimo1.1が今やJDK 1.5をサポートしていることに気がつくでしょう。これは非常に大きなステップであり、将来のバージョンのGeronimoで大きな役割を果たすはずです。これについては後ほど詳しく説明します。もしCORBAを使うのであれば、Geronimo1.1では相変わらずJDK 1.4を使う必要があります。ほとんどの人はアプリケーション開発にJDK1.5の新機能を頻繁に使うようになっており、また多くの人は開発用のプラットフォームとしてEclipseを使っています。IBM®は、GeronimoサーバーをターゲットとするEclipse IDE用の開発補助モジュールを作成すべく大きな努力を重ねてきました。その結果、JDK1.4あるいは1.5上で実行しているGeronimoサーバーにアプリケーションの構築やデプロイを行う際には、WebTools Platform 1.0.2を使えるようになりました(記事の最後の参考文献にリンクを挙げましたので見てください)。これは、Geronimoアプリケーションの開発を始める際の障害を取り除く上で、非常に強力なものとなるはずです。
Geronimoサーバーのオペレーションや管理は、サーバー内でのコンフィギュレーションの扱い方に幾つか変更が追加されたことによって、ずっと容易になります。『バージョン機能を持ったコンフィギュレーション・ファイル(version-capableconfiguration files)』という機能によって、異なるバージョンのGeronimo間でもサーバーのコンフィギュレーションを確実に保持することができます。コンフィギュレーションはXMLにエクスポートすることができ、またコンフィギュレーションのアップグレードを単純化するスタンドアローンのアップグレード・ツールがあるはずです。今までのバージョンのGeronimoでは、アドオン機能を『コンフィギュレーション』と呼んでいましたが、この呼び方は『モジュール』に変更されました。モジュールは、管理コンソールあるいはコマンドライン領域を通して、動的にダウンロードすることができます。
管理コンソールはアップグレードされました。最も目立つアップグレードは、幾つか新しいポートレットが利用できるようになったことです。まず、mod_jkに対するApache2 HTTPサーバー・コンフィギュレーションを補助するポートレットがあります。これによって、ApacheWebサーバーがWebリクエストをGeronimoサーバーのAJP(Apache Jserv Protocol)ポートに直接転送することができ、インターネット上で実行するApacheHTTPサーバーとWebアプリケーションが継ぎ目なく統合されて見えるようになります。第2に、登録されたURLとWebアプリケーションの現在の状態を示すことでWebアプリケーションを管理するように作られたポートレットがあり、これを使えば管理者はWebアプリケーションを容易に停止し、アンインストールすることができます。また、他の多くのポートレットもアップデートされています。例えばSystemInfoポートレットには、Ajax(Asynchronous JavaScript + XML)を使ってリアルタイムでアップデートされる素敵なサーバー・メモリー使用グラフが新たに追加されています。DatabasePoolポートレットもアップデートされ、データベース・ドライバーのインストールやコンフィギュレーション作業を短縮するウィザードが用意されました。またこのポートレットを使うと、他のサーバー(JBoss4やWebLogic 8.1など)からコンフィギュレーションをインポートすることもできます。
アプリケーションの様々な部分に対するオブジェクト名を見つけるために、Geronimoで古いJMX(JavaManagement Extensions)デバッグ・アプリケーションを使っていた人は、代わりにJConsoleを使えるようになりました。JConsoleはJDK1.5に組み込まれており、これを使用するとJMX準拠の任意のシステムを監視できるようになります。Little-Gには、単にそれだけのためにMX4J(参考文献に情報があります)とMX4J-remoteが含まれています。そのためGeronimo 1.1に接続するには、次のコマンドを発行するだけです。
$ jconsole service:jmx:rmi:///jndi/rmi://localhost:1099/JMXConnector
このURLと、システム管理者のユーザー名とパスワードを接続ダイアログに入力すると、図1のようなものが見えるはずです。
図1. Geronimo 1.1サーバーに接続されたJConsole
注意すべき点として、セキュリティー上の理由から、JMX接続はGeronimoサーバーが実行しているのと同じマシンからの接続しか許さないことを頭に置いておく必要があります。メソッドの呼び出し、コンフィギュレーション値の変更、通知の設定などは、JConsole内部から行うことができます。
Geronimoへのアプリケーションのデプロイも容易になりました。デプロイメントは、管理コンソールから、あるいはコマンドラインから行うことができます。圧縮されたJARをコンフィギュレーション可能なディレクトリーにドロップすれば、ホット・デプロイすることができます。また、解凍された.earファイルや.warファイル .jarファイルに対して、同じ場所へのデプロイ(in-place deployment)を使うこともできます。この機能を利用すると、アプリケーションのコード製品のすべてを含んだディレクトリーをサーバーが指すようにでき、JavaEEアプリケーションの開発がずっと容易になります。例えばJSP(JavaServer Pages)を変更すると、その変更はテスト中に即座に見えるようになります。この機能を使うことによって、Eclipseツールでは、開発やデプロイ、テストなどのサイクルをスピードアップすることができます。
Geronimoの将来を示すクリスタル・ボールを凝視する
Geronimoの1.1リリースと2.0リリースの間には非常に混乱した部分があり、そこには体を構成するための新しい身体部品や生体移植、コード熟練者による伸縮自在の接続膜などを必要とします。こうした作業の大部分は、Geronimo2.0でJava EE 1.5認証を得るという究極的なゴールを目標に進められ、そこにはOpenJPAやServiceMixの統合、クラスタリング・サポートの強化、管理機能やパフォーマンスの改善、Java5.0準拠、Maven 2.0に基づく新たなビルド・システムなどが含まれています。
皆さんは恐らく、BEAと、WebLogicと呼ばれるBEAのフラグシップJava EEアプリケーション・サーバーを知っているでしょう。しかし、BEAがオープンソース開発の強化にも関心を持っていることを知っている人は少ないと思います。BEAは最近、完全機能のJSR220実装であるKudoという技術(参考文献のリンクを見てください)を生んだ、SolarMetricという非常に成功した会社を買収しました。この技術は、EJB(EnterpriseJavaBeans)3.0のパーシスタンスの背景となっている標準であり、開発者がアプリケーション内部からデータベース操作を行う場合にずっと容易に使える技術として、最近非常に注目されているものです。BEAは、新たに買収したSolarMetricと共にOpenJPAという新しいオープンソース・プロジェクトを作ることを決定し(参考文献を見てください)、またオープンソース・プロジェクトのホストとして、Apache組織を選択しました。これはつまり、今後の数ヶ月の間にOpenJPAがGeronimoと統合され、やがては、現在統合されているデータベース・マッピング技術であるTranqlと置き換わる可能性が高いことを意味しています。Geronimoの中にEJB3.0パーシスタンス・エンジンを持つことは、Java EE 1.5認証を取得するというGeronimo2.0の目標において、最も大きなステップの1つです。これは、顕微鏡下での手術によって新しい生体脳を移植するのに匹敵するほど、強力な前進と言うことができます。
ServiceMixが移植されたことによって、Geronimoには新たなビジネス・プロセス統合コンポーネントが注入されます。他の標準機能と同様、これにも独自のJSR208仕様があります。これがJavaBusiness Integration 1.0標準です(参考文献にリンクがあります)。これは簡単に言うと、複数ベンダーからのビジネス・コンポーネントを継ぎ目なく統合するための標準アーキテクチャーであり、フレームワークなのです。これにはWebサービス技術(WSDL(WebServices Description Language)やサービス・エンドポイントなど)を使ってコンポーネントをつなぎ合わせるために、SOA(service-orientedarchitecture)が利用されています。この技術の中核には多くの新しいデータ・ソースを統合する機能があり、また様々なベンダーによるデータ処理エンジンをApacheGeronimoにプラグインできるようになっています。
Geronimoが、いつJava 5準拠となるのか、多くの人が疑問を持っていました。最近、その疑問がメーリング・リストにポストされ、そこで、Geronimo1.1では、(CORBA機能が使われない限り)既にアプリケーション・サーバーがJava5上で実行できるようになっていることが明らかにされました。もしCORBAが必要な場合は、やはりJava1.4.2が必要です。Geronimo 2.0がJava EE 1.5準拠のサーバーとして認証されるためには、Java5に完全準拠する必要があるため、これは実現されるはずです。
ソースコードからApache Geronimoをビルドするためには、Apache Maven 1.0.2あるいはそれ以降が必要でした。開発者達は、Maven2.0を使ってビルドできるようにするための、Geronimo用のビルド・フレームワークを作り上げるべく努力を続けてきました。
そしていよいよ、Geronimo 1.1と2.0との間のどこかでGUIインストーラーが完成され、Geronimoサーバーのインストールがもっと容易になるはずです。このインストーラーはモジュラー構成であり、サーバーに対する開発者の意図に合わせて、どんな特別なコンポーネント・セットでもインストールできるようになっています。そして、Big-Gインストール、あるいは単なるLittle-Gインストールのどちらかを選択できるのです。
より良く、より賢く、より速く
Geronimo 2.0は、来年のどこかに完成すると見込まれており、このプロジェクトでは過去最大の機能強化が行われるはずです。そしてこれは、完全認証されたJavaEE 1.5サーバーとなるはずです。これはつまりEJB 3.0仕様(JSR 220)とServlet2.5仕様に準拠するということであり、またJava 5.0の機能(注釈など)をサポートすることを意味します。
IoC(Inversion of Control)フレームワークは最近一般的になりました。そうした中で最も一般的な、Springと呼ばれるフレームワークが、しばらく前からGeronimoの一部となっています。Geronimo2.0ではSpringをネイティブでサポートするとの噂があります。これは恐らく、Geronimoコンポーネントを使用するアプリケーションを作成する上で、より直接的にSpringを使えるようになり、開発者の作業が楽になることを意味していると思います。
1.1では少しだけ見えており、2.0で改善、強化される機能として、Geronimo管理コンソールの中からGeronimo用のプラグインをダウンロードできる機能があります。これはつまり、Geronimoを機能強化し、また機能を追加する幾つかのオプション・コンポーネントを、管理者が選択できるようになるということです。現在でもApacheDirectoryのLDAP(Lightweight Directory Access Protocol)サーバーをプラグインとしてダウンロードすることは既に可能であり、私はこれが将来、アプリケーション・サーバーのソフトウェア・アップデートのための重要な機構となると踏んでいます。
また、Ajaxがまるで手の付けられない山火事のように燃えています。あまりに勢いが強いため、最近ではAjaxの機能によって強化『されない』Webアプリケーションを見つけるのが困難なほどです。Geronimo2.0には、Ajax開発作業を強化するための機能が含まれています。こうした機能のうち、Jetty6 Webコンテナーの中に組み込まれ、(2.0以前には無理としても)Geronimo 2.0の世界では大きな役割を果たすと見られているものの1つが、『継続(continuation)』と呼ばれる機能です。これは、サーバー上の全スレッド・リソースや接続を使い果たすことなく、Webリクエストを非同期にサービスするためのスケーラブルな方法です。こうした革新が行われることにより、またAjaxがさらに一般的になるにつれ、Geronimoは将来、より一層スケーラブルになると思われます。
そして最後に、コア・カーネルのアーキテクチャー自体の再実装によって、Geronimoには新しい心が、あるいは魂が入れられるのです。皆さんはこれまで、Geronimoの効率的なGBeanアーキテクチャーに関する記事を読んだことがあると思います。新しいGeronimoは、XBeans(eXtensibleBeans)フレームワークを使った超軽量カーネルを備えることになっています。私の理解するところでは、XBeansフレームワークは真に次世代のGBeanフレームワークであり、Geronimoコアの進化にとって正に次の一歩と言えるものです。
Steve Austinにさようなら、Apache Geronimoにこんにちは
この記事を執筆している間に、Geronimo 1.1に対する手術はほぼ終ろうとしています。そしてSteveAustinの場合と同じように、患者はテスト・コースに連れ出され、数多くの熱心な開発者によって様々なテスト・ランをさせられるはずです。(このテスト・ランに「TheSix Million Dollar Man」の効果音が付いているのを皆さんは想像できますか。)開発者コミュニティーの助けによりApacheGeronimo 2.0が来年リリースされること、そして、より一層優れたものになるということを頭に置いておいてください。そして、大いに注目することにしましょう。
参考文献 学ぶために
製品や技術を入手するために
議論するために
著者について  | 
|  | Neal SancheはJava開発者ですが、最近Microsoft® .NETの世界に入り込み、これまでの居心地の良い世界への思いを断ち切るべく奮闘しています。彼はこれまでに、幾つかの商用J2EEアプリケーションや、スタンドアローンのJavaアプリケーションの開発を経験してきました。時間のある時には音楽を作曲し、写真を撮り、そして技術記事を書いています。その一例は彼のWebサイトで見ることができます。連絡先はneal@nsdev.orgです。 |
記事の評価
|