Java EE 6に新たに加わった数々の新機能
――Java EE 6で新たに実装された新機能について、もう少し具体的に教えてください。
田中氏 主だったものを幾つか挙げると、まずは「CDI」(Contexts and Dependency Injection)という機能が追加されました。ここ数年の間で、Spring FrameworkやSeasar2といったオープンソースのDIコンテナが普及したおかげで、Java開発においてDI(Dependency Injection)の手法が一般化してきました。
しかし一方で、「ServletでのDI」「EJBでのDI」「WebサービスでのDI」といったように、異なるDIコンテナの使い分けが必要なケースも増えてきました。そこでJava EE 6では、DIの仕様を各コンテナから分離して統合し、Java SEでも利用できるCDIの機能が追加されました。
例えばServletとEJBで同じDIが利用できるようになり、ビジネスロジック層とプレゼンテーション層の連携を容易に実装できるようになります。
また、Servletのバージョンが2.5から3.0にバージョンアップされ、大幅に仕様が強化されています。例えば非同期処理がサポートされるようになったり、あるいはmultipart/form-dataのサポートが追加されたりといった具合です。
また、UIの開発フレームワークとしてJSF(JavaServer Faces)2.0がサポートされ、Ajax技術やFaceletesなどが利用できるようになりました。併せて、アノテーションによる入力値チェックが可能な「Bean Validation」の機能も追加されています。
しかし最も大きいのは、RESTfulなWebサービスが利用可能になったことでしょう。SOAPとは異なり、リソースに対する操作をHTTPのメソッドで表現することができるため、特別なミドルウェアやサーバーソフトウェアなしでWebサービスを容易に実装できるようになります。事実、既にAmazon.comやTwitter、Facebookなどが、RESTfulなWebサービスとして自社のサービスを公開しています。Java EE 6では、「JAX-RS」というAPIでRESTful Webサービスのインタフェース標準化が行われています。
――では、SOAPはもう使われなくなるのでしょうか?
田中氏 SOAPではできて、RESTfulではできないことも数多くあります。例えば、トランザクションや順序制御などといった高度な機能がそれに当たります。企業内でのシステム間連携で、ある程度高度なトランザクション制御が必要な場合などでは、依然としてSOAPの利用が適しているでしょう。
一方で、コンシューマ向けサービスをインターネット上に広く公開するような場合には、開発生産性やパフォーマンス・スケールアウトが重視されますので、RESTfulは極めて有効だといえます。
今回のインタビューに対応いただいた田中氏は、2011年7月14日(木)に東京都内で開催されるWebSphereブランドの年次カンファレンス「IMPACT 2011」でも、「WebSphere Application Server V8.0変わるところ・変わらないところ」と題した講演を予定しています。詳しくは公式サイトをご覧下さい。
<WebSphere Application Server V8.0 アナウンスメント・ワークショップ>
また、8月4日(木)と5日(金)の2日間、WAS V8.0の新機能を紹介する技術者向けワークショップの開催を予定しています。1日目は、新機能の概要とWASインフラ構成を、2日目は、Java EE 6仕様の更新部分や、WAS V8.0のアプリケーション関連の新機能など、アプリケーション開発に関する内容を紹介する予定です。