「Java EEをクラウド時代のプラットフォームとして大きく発展させる」 Java EE 8の変更、Java EE 9を新たに提案──JavaOne 2016基調講演まとめ

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

新提案が取り扱う要素技術とは?──クラウドに対応した開発技術を導入

 それでは以下、オラクルの提案の中身について、JavaOne 2016の基調講演で説明された内容をご紹介します。

クラウドに対応したプログラミング・モデルを導入

 まずプログラミング・モデルですが、新たな提案ではリアクティブ・プログラミングの実現を目標の1つとしています。

 現在のJava EEには、これに対応した機能は用意されていません。そこで、Java EEの標準技術を使ってリアクティブ・プログラミングが行えるような機能を新たに追加したいと考えています。

 また、クラウドのようにアプリケーションが利用するデータが地理的に異なる場所に保持されている分散コンピューティング環境において、データ・トランザクションの整合性(Eventual consistency:結果整合性)を保つための機能も必要です。

 さらに、先ほども述べたように、今日のアプリケーションはRDBのほかにも、さまざまなデータソースを利用します。この状況に対応するために、新たにキー/バリュー型やドキュメント型のデータに対して永続化と問い合わせ(クエリ)を行うためのインタフェースを導入します。

 セキュリティに関しても、クラウドへの対応が必要でしょう。具体的には、クラウドの世界で標準となりつつあるOAuthやOpenIDなどの認証機能などに対応します。


※クリックすると拡大画像が見られます

サービス・ロケーションの透過性と回復性の確保

 次に実行環境系に関する提案ですが、大きな追加となるのは、Dockerに代表される軽量コンテナをベースにした仕組みの導入です。

 また、主にクラウド上でサービスとして動作させるアプリケーションを考慮し、ロケーションの透過性やアプリケーションの回復性を高める機能の追加も考えています。

 ロケーションの透過性については、アプリケーションのパッケージからコンフィギュレーションを外出しにした構成を追加します。サービスのパッケージングにはDockerなどの軽量コンテナを使い、そのインスタンスの管理をリモートで行うための管理用APIやサービスの状態(ステート)管理を行うためのAPIも用意します。


※クリックすると拡大画像が見られます

 クラウドなどリモートの環境で動作しているサービスが何らかの原因で暴走したり、あるいは反応がなくなったりした際にリクエストを中断するサーキット・ブレーカー(Circuit Breaker)の仕組みや、サービスを再起動するための回復用コマンド、サービスの動作状況を監視するヘルスチェックなどの仕組みも導入します。こうした管理系の機能は、これまでアプリケーション・サーバが独自機能として提供していましたが、今後はクラウド環境で最低限必要となる管理系機能もJava EE標準の中に取り入れようというわけです。


※クリックすると拡大画像が見られます

新たに3つのパッケージング形式を導入

 アプリケーションのパッケージングに関しては、従来のものに加えて、新たに次の3つの形式を追加します。


※クリックすると拡大画像が見られます

(1)軽量コンテナ型

 Dockerなどの軽量コンテナにアプリケーションと最小限の実行環境(ランタイム)をパッケージングします。この形式でパッケージングしたアプリケーションをクラウドなどの上で動作させ、リモート管理の仕組みで管理します。アプリケーションはスタンドアロン型のイミュータブルな構成をとり、Java SE 9のランタイム上で動作します。

(2)サーバレス(Serverless)

 これはマイクロサービスの一形態としてのサーバレス・モデルを実現するものであり、実行するサービスは必要になった際に瞬時に立ち上がり、不要になったらすぐにインスタンスが廃棄されるという短命なライフサイクルを想定しています(Ephemeral Instantiation)。各マイクロサービスは、後ほど触れるAPIゲートウェイを介したアクセスによって起動されます。

 サーバレスは、従来のJava EEアプリケーションのイメージからは随分とかけ離れていますが、将来的に重要なエンタープライズ・システム・アーキテクチャになるとの判断から追加が提案されています。

(3)マルチテナンシー

 3つ目のマルチテナンシーは、従来のJava EEコンテナの上で複数のアプリケーションをテナントとして実行し、リソース使用効率や管理性の向上を図るパッケージングです。テナントは、同時に稼働している他のテナントの状況には左右されずに安定した稼働を維持することが求められます。

 これら3つが新たに追加を提案するパッケージング方式であり、これらのほかに、もちろん従来のパッケージング方式もサポートします。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]