Java EE7はクラウドPaaSにフォーカス
続いて紹介されたのがJava EE6だ。寺田氏は「日本のエンタープライズ開発市場は、世界から見てずいぶん遅れている」と語る。その要因は、国内のJava EEの採用率の低さにあり、寺田氏は危機感を感じているという。J2EE 1.3、1.4頃の印象で「Java EEは重い、扱いづらい」というイメージがあるとすれば、それはJava EE6にはあてはまらない。世界ではJava EE6が主流になりつつあり、ダウンロード数は4000万に達している。寺田氏は「まだJava EE6を触ったことがない方は、ぜひ使ってみて欲しい」と呼びかけた。
寺田氏がJava EE6について熱く語る背景には、その技術をベースにしたJava EE7の開発が進んでいることがある。Java EE6を未体験で、いきなりJava EE7を扱うのはハードルが高い。Java EE7でフォーカスされるのはクラウド、PaaSだ(図2)。サービス・プロビジョニング、QoS、伸縮性など、クラウドで必要になる技術が盛り込まれる。例えば伸縮性では、設定したしきい値によりCPUやメモリなどの過不足を検知し、システムが動的に自己調整することが可能になる。
また、Java EEの参照実装 GlassFish v4.0では新たにPaaSコンソールと機能が追加され、画面を見ながらWebアプリケーションのデプロイやサービスリソース設定、ロードバランサーの設定などを行うことができるようになる。
クラウドではマルチテナントも重要になってくるが、1つのアプリケーションを、テナントごとに分離されたインスタンスで提供する。インスタンスはメタデータによってテナントごとにカスタマイズされる。テナントIDは、アプリケーションとそのサブシステムで利用可能だ。
JPA 2.1の仕様はまだ策定中だが、一部の機能を先行して試すことができるようになっている。Eclipse Link 2.3でデータベースレベルでのマルチテナントのアプリケーションを、@Multitenant、@TenantDiscriminatorColumという2つのアノテーションを使い、作ることができるようになっている。この2つのキーワードで検索すれば、すぐにサンプルのアプリケーションにたどり着くことができる。
JPA 2.1のマルチテナントは、データベースのテーブル、インスタンスなどさまざまなレベルで実現される。例えば1つのテーブルの中でテナントを使い分ける場合には、@ Multitenant、@TenantDiscriminatorColumを指定すればいい。テナント切り替えは、XMLの設定ファイルにテナントを識別するvalueを記載することで、1つのテーブル内に入っているデータを使い分けることが可能になる。アプリケーションの実装コードに、テナントごとの設定を書く必要はない。
Java EE7は2012年末頃にリリース予定となっている。Java EE6の技術がベースにあり、そこにクラウド対応に必要な機能を組み込む形で動いている。マルチテナント、オーケストレーション、伸縮性、JMS2.0。JMS2.0もJava EEの中で一番大きな変更になる。キャッシング、JSONもJava EE7には入ってくる。
セッションで紹介されたJava SE8、Java EE6などの詳細は、4月4日、5日に六本木ヒルズで開催されるJavaOne Tokyo 2012で語られる。2日間で約50セッションが用意されており、ここまで充実したJavaのイベントは、他にはない。
Java SE関連スペックリード、Java FXチーフアーキテクト、Java FXエクスペリエンス・アーキテクト、Javaパフォーマンスの達人など、多数の注目すべき外国人スピーカーが来日する。寺田氏は最後に「参加者の方々は、どのセッションを選択すべきか迷うと思うほど充実している」とアピールし、セッションを閉じた。
日本オラクル株式会社
東京都港区北青山2-5-8
Oracle Technology Network (OTN) Java開発者向けページ