IoT、クラウド時代を支えるアプリケーション基盤へ──Java EE、Oracle WebLogic Serverが進む先

Oracle Java & Developers編集部
2014-06-19 11:00:00
  • このエントリーをはてなブックマークに追加

IoTとクラウドというITの2大潮流に、Java EEはどう対応していくのか? 米国オラクルでJava EEおよびOracle WebLogic Serverを含むアプリケーション基盤製品の開発を主導するキャメロン・パーディ氏に聞いた。

 2014年5月に都内で開催されたJava開発者カンファレンス「Java Day Tokyo 2014」では、基調講演において、Javaの今後の発展の方向性として「モノのインターネット(IoT:Internet of Things)」と「クラウド・コンピューティング」への対応が強く打ち出された。この方向性は、Java EEやオラクルのJava EE関連製品の開発にどのようなかたちで反映されていくのか。米国オラクルでJava EEおよびOracle WebLogic Serverを含むアプリケーション基盤製品の開発を主導するキャメロン・パーディ氏に聞いた。

複雑性を隠蔽してシンプルに。IoT時代も変わることなく、Java EEは開発者に創造性をもたらすテクノロジーとして発展していく

米国オラクル プロダクトデベロップメント担当シニアバイスプレジデントのキャメロン・パーディ氏
米国オラクル プロダクトデベロップメント担当シニアバイスプレジデントのキャメロン・パーディ氏

──Java Day Tokyo 2014の基調講演で、Java EEの今後について、「IoTへの適用も視野に入れ、クラウド上でシンプルに扱えるようにしていく」と話されていました。IoTへの対応として、Java EEはどのような方向性で進化していくのでしょうか?

 まず重要なのは、Java EEは、開発者がアプリケーションを開発するための"抽象化のセット(Set of Abstraction)"だということです。今日、世界中の開発者がJava EEを用いてアプリケーションを開発しています。実際、1999年に登場してから今日までの15年間、Java EEはアプリケーション開発の世界に大きな影響を与え続けてきました。

 歴史を振り返ってみると、Java EEはインターネット上のアプリケーションを作るための技術として誕生しました。それを体現しているのが「Java Servlet」というシンプルなコンセプトです。このコンセプトは、インターネット上のアプリケーションを開発したいと考えていた多くの開発者のニーズにマッチしました。ブロックを積み上げるようにしてアプリケーションを開発していくというアプローチが広く受け入れられたのです。

 現在も、そしてこれからも、このアプローチは基本的に変わりません。私たちはシンプルなコンセプトを提供し、その上にブロックを積み上げるようにして次世代のアプリケーションを作れるようにしていきます。新しいコンセプトは、新たな創造の機会となるでしょう。抽象化のセットをうまく提供できれば、開発者はそれをベースにして新たなアプリケーション、新たな技術を生み出していくことができます。逆に、うまく提供できなければ、開発者に対して困難や混乱をもたらすことになるでしょう。

 IoTの世界では、インターネットに接続された各種のデバイスが自ら、さまざまな情報(データ)を生み出します。今後、そうしたデータの量は爆発的に増えていきます。私たちは、それらのデータを開発者がより扱いやすくするために、メッセージングやRESTfulなサービス、JSONのようなシンプルなデータ・フォーマットへの対応に力を入れています。この取り組みがうまく進めば、15年前にJava Servletが誕生したときのように、開発者に新たな創造性をもたらす機会を作り出せるはずです。

──今後、IoTへの対応で特に重要になる技術的観点は何ですか?

 データ量やクライアント数の増加に対応するために、「スケーラビリティ」がますます重要になります。また、クライアント間の「相互作用(インタラクション)」への対応も必要です。これらの観点では、WebSocketのような軽量な通信技術やHTTP2などのプロトコルが重要になるでしょう。また、これらを踏まえた基本的なパーツも整えていく必要があります。

 必要な技術はほかにも数多くありますが、ポイントは、これから複雑性が急速に増していく中で、それに対応していかなければならないということです。したがって、アプリケーションをより迅速に開発できるようにする必要があります。15年前と比べて、今は物事が何百倍も早く進みます。複雑性をカプセル化/隠蔽化する仕組みを取り入れていかないと、ミスや間違いが起こりやすくなるのです。

 アプリケーションが動くコンピュータの環境も従来とは異なります。シングル・サーバから仮想マシンの集合体に変わり、それらが置かれたデータセンターやクラウドにインターネットを介してアクセスします。この環境は現在も拡大しており、複雑性が増しています。その複雑性を、シングル・サーバ時代と同様にシンプルに管理できることが求められているのです。

Java EE 8では「HTML5サポートの強化」、「開発のシンプル化」、「クラウド対応」を推進。CDIでクラウド上のポータビリティを実現

──Java EEの次期バージョンの話題に移りましょう。Java EE 8では、「HTML5サポートの強化」、「開発のシンプル化の推進」、「クラウド対応」の3つが大きなテーマになるとのことでした。このうち「HTML5サポートの強化」は開発者にどのようなメリットをもたらすのでしょうか?

 HTML5は、クライアント・サイドのアプリケーションを、よりリッチなものにする技術です。サーバとのコネクションを張り続けたままにするため、クライアント・サイドで処理するプロセスが増え、処理内容も複雑になります。それと併せて、これまでどおりシンプルなやり取りしか行わないクライアントもカバーしていく必要があります。

 例えば、これからの時代の代表的なクライアントにスマートフォンやタブレットがあります。また、各種のIoTデバイスもありますが、現在、それらのクライアントとの通信は同じパーツでサポートしています。具体的には、HTTPによるやり取りとJSONによるやり取りが混在した状況にあります。

 開発者は、Java EEを使わなくても、それらに対応したアプリケーションを作ることはできます。ただし、その場合は別途ライブラリを用意したり、低レベルのソケットを独自に実装したりする必要があるでしょう。そうした部分をJava EEで標準化することにより、多くの開発者が、複雑なものを、より簡単に扱えるようになるのです。

──「開発のシンプル化の推進」に関してはCDI(Contexts and Dependency Injection)の適用範囲の拡大が計画されており、CDIによるセキュリティ・インターセプタやタイマー・サービスの導入が予定されているとのことです。3つ目の「クラウド対応」に関しては何が計画されているのですか?

 重要なものに、クラウド環境におけるセキュリティへの対応があります。近年、Javaコミュニティからは、クラウド上でのJavaアプリケーションのセキュリティを懸念する声が多く寄せられています。そこで、これに関する機能をJava EE標準の中に取り込み、開発者がセキュリティを気にすることなくクラウド上のJavaアプリケーションを開発できるようにしたいと考えています。

 また、クラウドに関してはコンフィギュレーションの問題もあります。大規模なアプリケーションでは設定が複雑になります。シングル・サーバの場合なら問題は少ないのですが、同じものをクラウド上にデプロイしたとき、致命的な問題につながる設定項目もあります。そうした点を改善し、クラウド上でもシンプルに扱えるようにしていきたいですね。

──クラウド対応でもCDIが使われるのでしょうか?

 CDIはソフトウェアの複雑性を隠蔽する優れた手段ですが、これをクラウド上におけるJavaアプリケーションの設定を容易にする目的で使うことも検討しています。その意義を説明しましょう。

 クラウド上にデプロイするアプリケーションを開発する場合、現状はデプロイ先となるクラウド環境に応じて、アプリケーションの実行に必要なストレージなどのリソースに関する情報をコード内に含める必要があります。このことには3つの問題があります。1つ目は、開発者がそれぞれのクラウド・サービスに関して詳しい情報を事前に知る必要があること。2つ目は、クラウド・サービスに固有の情報を埋め込むことで、アプリケーションのポータビリティが損なわれること。3つ目は、クラウド・サービス側に些細な変更が生じた際にも、アプリケーションを修正する必要があるということです。

 CDIは、これらの問題を解消し、クラウド・サービス上でJavaアプリケーションのポータビリティを確保していくうえで鍵となる技術です。CDIを活用することで、クラウド・サービスに固有のリソース情報をアプリケーション本体から切り離すことができます。アプリケーション実行時、その動作に必要となるリソースの情報を注入(Injection)することで、ポータビリティを確保したまま、さまざまなクラウド・サービス上に容易にデプロイできるようになるのです。

Java EE標準は適宜CAFに導入。Oracle Exalogicはクラウド時代のデータセンター基盤として強化

──あなたは、Java EEの開発に加えて、Oracle WebLogic Serverを含むミドルウェア製品群「CAF(Cloud Application Foundation)」やアプリケーション実行基盤「Oracle Exalogic」の開発も主導しています。Java EEの進化は、今後それらの製品にどう反映されていくのですか?

 これまでお話ししてきた新技術は、標準化が完了した後、順次CAFなどに取り入れていきます。Oracle Exalogicに関する今後の大きなテーマは、次世代のデータセンターの構成要素の1つとして進化させていくことです。今日、アプリケーションをクラウド上に移行する企業が増えていますが、一方で今後も引き続き企業のデータセンター内で運用されていくアプリケーションもあります。そうしたアプリケーションの展開や運用管理を、Oracle Exalogicでよりシンプルに行えるようにしていきます。

 また、可用性やスケーラビリティをさらに高めるための機能強化も図ります。このうち、可用性の向上に関しては2つのゴールがあります。1つは、停電などによる非計画停止への対応で、ここでは冗長性の確保が中心となります。もう1つは計画停止への対応で、これについてはダウンタイムを最小化するための機能を追加する予定です。これらの機能強化を図ったOracle Exalogicを含むCAFにより、次世代のデータセンターにふさわしいシステム基盤を実現していきます。

 いずれにせよ、Java EEの標準化を担うチームとCAFやOracle WebLogic Serverなどの製品開発を担当するチームは密接に連携しています。今後も標準化された技術はタイムリーに製品に取り込んでいきますよ。