CodeZine(コードジン)

特集ページ一覧

CDI、非同期処理、JAX-RS、OSGi――各ベンダー製品が出そろってきた今こそJava EE6の仕様をおさらいしよう

日本アイ・ビー・エム株式会社 田中孝清氏

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/06/20 12:00

2009年12月に、エンタープライズWebアプリケーションの実行基盤「Java Enterprise Edition」(以下、Java EE)の最新バージョン「Java EE 6」がJava Community Process(以下、JCP)によって承認された。今後は各ベンダーからJava EE 6に対応した製品が徐々に提供されるようになるだろう。このあたりでJava EE 6の特徴とメリットについておさらいしておきたいところだろう。今回は、日本IBMでWebSphere Application Serverを担当する田中孝清氏に話を聞いた。

難産の末ようやく生まれた「Java EE 6」

日本アイ・ビー・エム株式会社 ソフトウェア事業 WebSphere第一クライアントテクニカルプロフェッショナルズ 田中孝清氏
日本アイ・ビー・エム株式会社
ソフトウェア事業 WebSphere
第一クライアントテクニカルプロフェッショナルズ
田中孝清氏

――さっそくですが、Java EE6の概要について教えて下さい。

 田中氏 実は、Java EE6は難産の末に誕生した仕様なんです。これまでJava EEは、2年から2年半の周期でバージョンアップが行われており、Java EE 6も本来は2008年中には仕様の策定と承認を完了する予定になっていました。ところが、5の登場からJava EE 6の承認まで、3年9カ月もの期間を必要とした。

 最終的にこのスケジュールが遅れてしまった原因は、Servletの仕様が幾度も変更されたことなどがありますが、最大の理由はJCPに参加する企業・組織間の同意をなかなか取り付けられなかったことにあったようです。

 ともあれ、ようやく固まった仕様は非常に良い内容となっています。承認に至る背景をご存じの方は、内容面に不安を抱いているかもしれませんが、プロセスに関わった企業、組織は一様に高い評価を与えています。これからは各ベンダーからJava EE 6仕様に準拠したさまざまなアプリケーションサーバー製品が提供されていくことになるでしょう。

――ではJava EE 6は、旧仕様と比べてどのような点が強化されているのでしょうか?

 田中氏 主にプレゼンテーション層の実装技術や、永続化の機能などが強化されています。前回のバージョンアップ、つまりJava EE では旧仕様の開発生産性の向上に主眼を置いていました。つまり、これまでの仕様で対応可能だった機能をより簡単に実装できるように改良した。

 それに対して、今回のJava EE 6では多くの新機能が盛り込まれており、今までできなかったさまざまなことができるようになっています。もちろん、開発生産性もJava EE 5に比べて大幅に向上しており、拡張性の面でも各種仕様が強化されています。

図1:Enterprise Javaの歴史
図1:Enterprise Javaの歴史

 さらに、仕様の軽量化も試みられています。これまでJava EEはひたすら仕様を拡張することを重視してきた結果、もう使われなくなってしまった古い仕様もそのまま残っていました。Java EE 6では、こうした古い仕様を将来のバージョンで削除することが明言されており、肥大化した仕様のスリム化が図られています。

関連情報
IMPACT 2011

今回のインタビューに対応いただいた田中氏は、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のアプリケーション関連の新機能など、アプリケーション開発に関する内容を紹介する予定です。

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が利用できるようになり、ビジネスロジック層とプレゼンテーション層の連携を容易に実装できるようになります。

図2:CDI(Contexts and Dependency Injection)によってレイヤー間連携が容易に
図2:CDI(Contexts and Dependency Injection)によってレイヤー間連携が容易に

 また、Servletのバージョンが2.5から3.0にバージョンアップされ、大幅に仕様が強化されています。例えば非同期処理がサポートされるようになったり、あるいはmultipart/form-dataのサポートが追加されたりといった具合です。

 また、UIの開発フレームワークとしてJSF(JavaServer Faces)2.0がサポートされ、Ajax技術やFaceletesなどが利用できるようになりました。併せて、アノテーションによる入力値チェックが可能な「Bean Validation」の機能も追加されています。

図3:Servletの非同期処理サポートで処理のスケーラビリティを維持
図3:Servletの非同期処理サポートで処理のスケーラビリティを維持

 しかし最も大きいのは、RESTfulなWebサービスが利用可能になったことでしょう。SOAPとは異なり、リソースに対する操作をHTTPのメソッドで表現することができるため、特別なミドルウェアやサーバーソフトウェアなしでWebサービスを容易に実装できるようになります。事実、既にAmazon.comやTwitter、Facebookなどが、RESTfulなWebサービスとして自社のサービスを公開しています。Java EE 6では、「JAX-RS」というAPIでRESTful Webサービスのインタフェース標準化が行われています。

――では、SOAPはもう使われなくなるのでしょうか?

 田中氏 SOAPではできて、RESTfulではできないことも数多くあります。例えば、トランザクションや順序制御などといった高度な機能がそれに当たります。企業内でのシステム間連携で、ある程度高度なトランザクション制御が必要な場合などでは、依然としてSOAPの利用が適しているでしょう。

 一方で、コンシューマ向けサービスをインターネット上に広く公開するような場合には、開発生産性やパフォーマンス・スケールアウトが重視されますので、RESTfulは極めて有効だといえます。

図4:RESTfulを支えるJAX-RS
図4:RESTfulを支えるJAX-RS
関連情報
IMPACT 2011

今回のインタビューに対応いただいた田中氏は、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のアプリケーション関連の新機能など、アプリケーション開発に関する内容を紹介する予定です。

Java EE 6やOSGiをはじめとした新APIを提供する「WAS V8」

――ところで、Javaの開発者が頭を悩ませる問題の1つに、モジュールやライブラリのバージョン問題があります。例えば、アプリケーションサーバーで利用するライブラリとアプリケーションが使うライブラリのバージョンがぶつかってしまうような問題がよく起こると聞きます。

 田中氏 そうした問題を解決するポテンシャルを秘めているのが、「OSGi」という技術です。OSGiは「OSGi Alliance」という非営利団体が策定する、Javaモジュールの管理技術ですが、Java開発者にとってこの技術を採用する最大のメリットは、アプリケーション全体の停止やバージョンアップを行うことなく、モジュールを動的に追加できる点にあります。Java VMとモジュール(バンドル)との間に「OSGiフレームワーク」という層を設けることにより、これを可能にしています。

図5:OSGiによってモジュールの動的な差し替えなどが可能に
図5:OSGiによってモジュールの動的な差し替えなどが可能に

――実際にOSGiが製品に採用されている例はあるのでしょうか?

 田中氏 Java開発者の皆さんが普段使われているEclipseのプラグイン機能も、バージョン3以降ではOSGiの仕組みが使われています。また、IBMが提供するエンタープライズシステム向けアプリケーションサーバー製品「WebSphere Application Server」(以下、WAS)にも、OSGiの技術が実装されています。

 もともとWAS自身のアップデートの仕組みはOSGiの仕組みに基づいていたのですが、2011年6月から提供開始される最新バージョンの「WAS V8」からは、その上で動作するアプリケーションでもOSGiが使えるようになりました。

――WAS V8では、先ほど説明していただいたJava EE 6の新機能も利用できるのでしょうか?

 田中氏 WAS V8はJava EE 6に対応していますから、先ほど挙げたようなJava EE 6のさまざまな機能はすべて使うことができます。また先ほど述べたように、OSGiもサポートしています。さらにはこれら以外にも、Java開発者にとっては魅力的なAPIが数多く追加されています。

 例えば、オンライン処理だけではなくバッチ処理もJavaで記述・実行できる「Javaバッチ」やSOAで使用されるコンポーネント技術「サービスコンポーネント・アーキテクチャ(SCA)プログラミングモデル」、XMLデータの処理コードを容易に実装できる「XMLプログラミングモデル」などがそれです。

関連情報
IMPACT 2011

今回のインタビューに対応いただいた田中氏は、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のアプリケーション関連の新機能など、アプリケーション開発に関する内容を紹介する予定です。

高信頼性と高互換性で既存アプリケーション資産を保護

――アプリケーションサーバー製品には、ほかのベンダーの製品やオープンソースのものなど、さまざまな製品が存在しますが、WAS V8はそれらと比較した場合にどのような特徴を備えているのでしょうか?

 田中氏 先ほど一部を挙げたような豊富な機能はもちろんですが、品質の高さも大きな特徴だと思います。新製品には初期バグが付き物だと思われるかもしれませんが、WAS V8は2010年3月からα版やβ版を随時一般ユーザーに広く公開して、評価していただきました。

 実際に使っていただいたお客様からも、「使用感が変わらないので、本当に新バージョンを使っている感じがしない」といった声もいただきました。従って、出荷直後の製品であっても、致命的なバグはほとんどないと言っていいでしょう。

 また、パフォーマンスと運用効率に極めて優れるため、ユーザーにとってはTCOの面で大きなメリットがあります。パフォーマンスが高ければ、その分少ないITリソースで運用できるため、ハードウェアコストや運用管理の工数を大幅に削減できるはずです。

 さらには、信頼性も他製品と比較して極めて優れていると自負しています。クラスタやHA構成での運用に対応していますし、万が一トラブルが発生した場合でも迅速に問題を切り分けられる仕組みが備わっています。また、IBMが万全の製品サポート体制を敷いているので、サポート面でも安心して使っていただけます。こうした点は、エンタープライズシステムでの運用を前提とした場合、オープンソース製品にはない大きな利点だと思います。

図6:WebSphere Application Serverの歴史
図6:WebSphere Application Serverの歴史

――これまで旧バージョンのWAS V7で利用していたアプリケーションは、WAS V8でも利用できるのでしょうか?

 田中氏 旧バージョンとの高い互換性を維持しているのも、WAS V8の大きな特徴の1つです。WAS V7向けに開発されたアプリケーションは、ほとんど修正することなくWAS V8の上でそのまま稼働します。また、WAS V7用アプリケーションの開発で作成した設計書や運用手順書なども、そのままWAS V8環境に流用できます。

 一般的に、アプリケーションサーバーのバージョンアップは、その上で動作するアプリケーションの修正作業を伴うために避けて通る企業も多いのですが、WAS V8なら極めてスムーズに移行できるでしょう。その上でさらに、これまで述べてきたような数々の新機能をアプリケーションに実装することもできるわけです。WAS V8の導入は、効率的かつ低リスクでJavaアプリケーションの高機能化を図ることができる最上の手段だと思います。

田中氏
田中 孝清(たなか・たかきよ)

日本アイ・ビー・エム株式会社 ソフトウェア事業 WebSphere 第一クライアントテクニカルプロフェッショナルズ。1998年日本アイ・ビー・エム入社。2000年よりソフトウェア事業で WebSphere Application Server の技術者として日本でのセールス活動に携わる。日本語での WAS の技術文書の執筆なども多くおこなっている。

 

 ・ 日本アイ・ビー・エム株式会社(http://www.ibm.com/jp/ja/

 

関連情報
IMPACT 2011

今回のインタビューに対応いただいた田中氏は、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のアプリケーション関連の新機能など、アプリケーション開発に関する内容を紹介する予定です。

その他、記事内で紹介した最新版の「WebSphere Application Server V8」に関する情報もご覧下さい。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 吉村 哲樹(ヨシムラ テツキ)

    早稲田大学政治経済学部卒業後、メーカー系システムインテグレーターにてソフトウェア開発に従事。その後、外資系ソフトウェアベンダーでコンサルタント、IT系Webメディアで編集者を務めた後、現在はフリーライターとして活動中。

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5