新たに含まれるAPI
次にこのバージョンから新たに含まれる技術に注目します。
WebBeans
Java EE 5ではEJB 3.0によりDependency Injection(DI)の考え方が取り入れられ、EJBコンテナはDIコンテナの機能を持つようになりました。一方、Web層にも標準フレームワークとして「JavaServer Faces(JSF)」が取り入れられましたが、ここで利用されるBeanの管理もコンテナにより参照を注入できるなど、DIコンテナとしての機能を持っています。このように、Java EEの世界には2つのDIコンテナがあり、それに合わせたプログラムモデルが提供されています。
「WebBeans」はこの2つのコンテナを統合し、統一的なプログラムモデルを提供する仕様です。WebBeansにより、JSFのページからEJBのBeanのメソッドを呼び出すことが可能になります。そのため、Webアプリケーションの構成要素をより少なくできます。
またWebBeansには、アプリケーション、セッション、リクエストなど従来のスコープに加え、「カンバセーションスコープ」が追加される予定です。これにより、一連のページにまたがるクライアントとのやり取りを、1つのスコープとして管理できるようになります。
JAX-RS
Webアプリケーションの分野では、他のサービスが提供する情報を取り込み、1つのアプリケーションとして構成するようなタイプのアプリケーションが増え始めています。このような外部から利用されるサービスを提供する際に、HTTPの仕組みを利用したRESTfulなWebサービスをAPIとして公開する方法があります。Javaでも、このようなRESTfulなサービスを公開するためのAPIとして「Java API for RESTful Web Services(JAX-RS)」が提供されます。
JAX-RSでは、アノテーションを用いてJavaのプログラムにマークすることにより、そのメソッドをRESTfulなサービスとして提供することが可能になります。このように、Java EEも新しい分野のアプリケーションへの対応を進めています。
Java EEのカバーする範囲
Java EEは、これまでさまざまな新しい仕様を取り込んで発展してきました。J2EEの最初の仕様が出てから既に長い時間が経ち、進歩の中で過去のものとなってしまった技術もあります。
従来、Java EEの仕様はこのような過去の仕様も互換性のために保持されていましたが、Java EE 6では「既に過去のものとなってしまった仕様は削除する」という方針を初めて打ち出しました。そのため、JAX-WSに置き換わったJAX-RPC(Java API for XML / Remote Procedure Call)とJPAの登場により、役割を終えた「EJB2.x CMP EntityBean」が仕様から削除される予定です。
現在のJava EEの仕様は多岐にわたります。多くの開発の現場において、フルセットのJava EEを使い切ることはなかなか難しくなっています。そのため、Java EE 6から「プロファイル」という考え方を導入し、Java EEのサブセットを作成できる仕組みを作ろうという動きが出ています。
その手始めとしてJava EE 6では、「Webプロファイル」というサブセットが提供される予定です。このWebプロファイルでは、ServletやJSPなどWebアプリケーションに必要な仕様を切り出し、プロファイルとしてまとめて提供されます。現在、EJBの軽量版やJSF、WebBeansなどを含めるかなど、このWebプロファイルの範囲について議論が進んでいます。
まとめ
これまで見てきたように、ここ数バージョンのJ2EE/Java EEで提唱されていたEoD(Ease of Development:開発の簡略化)の流れを踏襲し、より簡単に開発が進められるような方向にJava EE 6の主要な技術は進化しています。
当初の予定ではJava EE 6のリリースは今年の第4四半期だと言われていましたが、来年初頭から春先になる可能性が高そうです。Java EE 6の仕様策定の進み具合に関してあまり目立った動きが見えませんが、仕様を策定しているエキスパートメンバーなどのBlogを読むと、少しずつ参照実装のプロダクトが動作している様子が見て取れます。これからリリースに向けて、より多くの情報が見えて来ることを期待しましょう。
