JBoss Seam ~Java EEは統合フレームワークへ~
統合的なフレームワークを目指すJava EE
Java EE 5という標準規格が策定された経緯について第1回で説明しましたが、Java EE 5で行われた作業は、まさに標準規格の「再整理」と呼べるものでした。
誕生当初から次代のJava EE(このころは、まだJ2EEと呼ばれていた)の中核を担う技術として注目を集めていたJSF 1.2がプレゼンテーション層のフレームワークとして正式に採用され、Java EEの本体とも言えるEJBはDIコンテナの機能を取り込み、生産性を飛躍的に向上させたEJB 3.0として大きく生まれ変わりました。
また、それまでCMP Entity BeanとしてEJB仕様の一部として存在していたO/Rマッピング機能は、Java EEとは独立して発展し続けてきたHibernateやTopLinkといったオープンソースのO/Rマッピング・ツールに歩み寄る形で新たに策定され、EJBとは独立したAPIであるJPA 1.0に役割を委ねることになりました。
このように機能の統廃合や、Java EE以外のコミュニティのノウハウの取り込みを行うことによって、JSF 1.2 - EJB 3.0 - JPA 1.0というスタックを築き上げたJava EE 5ですが(図1)、既に米JBossのGavin King氏には、これらのスタックをシームレスにつなげ、統合的なWeb開発フレームワークとして提供するという、次のJava EE 6に向けた青写真がありました。
この青写真を具現化したものが、同氏が開発したJBoss Seam(以下、Seam)というWeb開発フレームワークであり、それを基にして同氏が策定し、Java EE 6に採用されることになった「JSR-299:Context and Dependency Injection for Java EE Platform」(以下CDI)です。
連載2回目となる今回は、今後のJava EEの歩みにおいて大きな鍵となるであろう、Seamについてご紹介いたします。
JBoss Seamとは
Seamは、JBoss Application Serverなどと同様に、JBossコミュニティで開発されているオープンソース・プロダクトです。ライセンス形態はLGPL(GNU Lesser General Public License)であり、無償での入手、利用が可能ですが、米Red Hat(2006年に米Red Hatが米JBossを買収)の有償サポートを受けることも可能です。
Seamは、JBoss Application Serverはもちろん、それ以外のJava EE 5に準拠したアプリケーション・サーバー上でも動作させることが可能なWeb開発フレームワークであり、以下のような特徴を持っています。
- 付属ツールのseam-genによってアプリケーションのひな型を作成でき、簡単に開発が始められる。
- JSFとEJBをシームレスにつなぐ機能を持つ。
- 独自のコンポーネント・モデルによって、ステートフルなWebアプリケーション開発を容易にする。
次ページからこれらの特徴について解説しますが、ここではまず、開発環境について簡単に紹介します。
前述のように、Seamはさまざまな環境で動作させることが可能ですが、一番簡単に動作させるためには、JBoss Application Serverを使用するのが良いでしょう。JBoss Application ServerにはDBMS(HSQLDB)もバンドルされているので、SeamとJBoss Application Serverに加えて、JDKを用意すれば、Seamのすべての機能を確認できます。
参考までに、今回、動作確認に用いたソフトウエアは以下の通りです。
- JBoss Seam 2.2.0
- JBoss Application Server 5.1.0
- JDK 5.0 UPDATE 21
SeamとJBoss Application Serverは、適当な位置に解凍するだけで構いません。JDKはインストール後、環境変数「JAVA_HOME」を適切に設定します。事前準備はこれだけです。