Javaの未来はいつだってエキサイティング! 革命と進化を続けるJava SEとJava EE─Java Developer Workshop #2

1995年に誕生して以来、Javaは革命と進化を繰り返してきた。そしてこれからも時代と市場の変化とともに革命と進化を続けていく─12月1日、東京・青山の日本オラクルで開催された「Java Developer Workshop #2」で同社のFusion Middleware事業統括本部 シニアJavaエバンジェリスト 寺田佳央氏はこう発言しました。

今年7月、5年ぶりの新バージョンとしてJava SE 7がリリースされましたが、これはJavaがオラクル傘下になってからはじめてのバージョンでもありました。そして10月に米サンフランシスコで開催されたJavaOneでは、今後のJavaの開発方針についてもオラクルから明確な情報提供が行われています。

以下、本稿では寺田氏のセッションをベースに、Java SE 8および9、さらにJava EE 7についての最新状況を簡単に紹介します。なお、本稿で紹介する内容は2011年12月時点での情報をベースにしており、今後、大幅な方針変更がある可能性も高いことをあらかじめご承知おきください。

"jarの地獄から解放"─Java SE 8

Java SE 8は2013年の夏にリリースが予定されています。サポートOSは

  • Windows
  • Linux
  • Mac OS X
  • Solaris

となっています。

Java SE 8で予定されている機能強化の主なものを挙げておきます。

  • Java標準モジュールシステム"ジグソー"
  • 匿名関数"ラムダ"
  • JavaFX 3.0の統合
  • Oracle JVMの統合
  • 新JavaScriptエンジン"Nashorn"
画像

Javaプラットフォームのモジュール化を実現するために"Project Jigsaw"の名の下で開発が続けられてきた標準モジュールシステムがSE 8で実装されます。クラスパスの排除、JDKのサブセット単位での自動ダウンロード/インストール、ネイティブパッケージ(dev、rpm、ips…)の生成などが可能になり、大幅なパフォーマンス向上が期待されます。寺田氏はこれを「jarの地獄から解放」と表現しています。モジュール化されることで小型機器などへのJava SEのサブセット提供も進むと見られています。

SE 7では対応が見送りになった"Prjoect Lambda"もSE 8でサポートされる予定です。クロージャと同一視されることも多いラムダですが、寺田氏はラムダが採用された経緯について「市場は現在、マルチコアCPU時代を迎えており、ハードウェアのトレンドは周波数よりもコア数、並列処理へと移っている。Javaの内部にも並列処理できるしくみが必要。クロージャに対応したというよりも、開発の容易性を重視した結果」と解説しています。サーバだけでなくクライアントもマルチコア時代を迎え、高いパフォーマンスを出すコードを書くためには、インナークラスを使ってコンカレント処理や並列処理が簡単に実行できるようになったほうが効率的といえます。

JavaFX 3.0の統合については、同日行われた米オラクルのNandini Ramani氏の講演にあったとおりです。紆余曲折ありましたが、⁠Javaファミリに回帰する」というポリシーの下、今後はJava SEの標準ライブラリとしてでJavaFXは提供されることになります。

JVMについては、オラクルがもつ旧BEAポートフォリオのJVM製品「Oracle JRockit」がSun由来のJVMである「HotSpot」と統合され、⁠HotRockit」という名称に変わります。オラクルはすでにJRockitのSDKを無償公開していますが、SE 8において完全にパッケージングやサポート体系が統合されることになります。

新JavaScriptエンジンの"Nashorn"(ナスホーン)は現在のRhinoを置き換えるものです。最大の特徴はRhinoに比べてパフォーマンスが非常に高速になること。寺田氏によれば「invokedynamicにより3倍の高速化と5倍の軽量化が同時に実現」するそうです。invokedaynamicはJava SE 7で追加された新しいバイトコードで、JRubyなどの動的言語のJVM実装をアシストします。また、NashornではNode.jsもサポートされます。

「Java SE 7は"進化"したバージョンであり、Java SE 8は"革新"のバージョン」とオラクルは表現しています。とくにパフォーマンスの大幅な向上に期待がかかります。

"真のオブジェクト指向言語に"─Java SE 9

Java SE 9に関しては、今後、変更される可能性がかなり高いとしながらも、寺田氏は現状での方向性を語ってくれました。

まず、Java SE 9以降のJavaの開発方針は以下の要素が重要視されるとのことです。

  • 相互運用性
  • クラウド対応
  • 最適化
  • 幅広い動作環境

相互運用性に関しては、動的言語サポートの改善とネイティブコードの呼び出しがポイントになります。動的言語のサポートについては、Java SE 7でinvokedynamicが実装され、開発中のSE 8においてはNashornでJava⇔JavaScriptの相互運用が図られています。そしてSE 9以降では「Meta Objectプロトコル(SE 9⁠⁠、Long listの最適化(SE 9以降⁠⁠」が予定されているとのことです。またSE9では、JNI不要でJavaからネイティブコードを呼び出せるようになるそうです。

クラウド対応に関してはJava SE 8でもマルチテナンシーの一部がサポートされると見られています。これにより、同一OS上で稼働するJava VM間の共有やスレッドグループごとのリソース監視などが向上することが期待されます。また、SE 9以降ではハイパーバイザ対応Java VMも登場するとのことです。これにより「共通操作メモリページの共有や共通操作ライフサイクル、マイグレーションが可能になる」⁠寺田氏)とのことです。

"最適化"については、言語仕様やデータ構造への最適化が順次図られていくとしています。まずSE 9では巨大データが今後ますます増えることを想定して、巨大配列(64ビット)のサポートを表明しています。また、おそらくSE 10以降になると思われますが、⁠primitive型を排除し、完全にオブジェクトだけで実装するユニファイド型システム、型の具体化(ジェネリクス、関数型⁠⁠寺田氏)といった機能の搭載も進められる予定になっています。本当に実現すれば、⁠Javaが真のオブジェクト指向言語になる」⁠寺田氏)といえるでしょう。

幅広い動作環境のサポートはJavaがつねに目指すところですが、SE 8以降ではマルチタッチ、位置情報、センサー対応が加わるそうです。またSE 9以降では"ヘテロ・コンピューティング・モデル"を掲げ、⁠GPU、FPGA、オフロードエンジン、リモートPL/SQLなどをサポート」する方針とのこと。この辺はかなり流動的と思われますが、Javaらしい目標だといえます。

"クラウドをより便利に"─Java EE 7

今年中の公開もあるのでは? と見られていたJava EE 7ですが、オラクルによれば2012年中のリリースということです。おそらく2012年末になるのではないかと見られています。

画像

Java EE 7の特徴について、寺田氏は「クラウド対応、とくにPaaSへのフォーカス」がメインであるとしています。ここでポイントになるのは伸縮(エラスティック)性とマルチテナンシーです。

伸縮性ではリソース状況に応じたインスタンスの増減を継続的に行うために、自動化が重要になってきます。⁠システムが自動で決めた設定にしたがって、自立的かつ動的にサービスレベルを管理し、シングルノードからIaaSのクラスタまでデプロイ対象管理にする」⁠寺田氏)ことを目指しています。

マルチテナンシーについては、テナントごとに1つのアプリケーションインスタンスを用意するようです。また、同一アプリケーションの複数の独立したテナントもサポートするとのこと。さらにテナントごとに仮想サーバを割り当てる、テナントごとにカスタムリソースを読み込む、などの機能も計画されています。なお、12月9日にリリースされたEclipseLink 2.3.2ではマルチテナンシーがサポートされています。

「Java EE 7はクラウドをより便利に使ってもらうためのプラットフォーム」と寺田氏はまとめています。ここに挙げた以外でも、クラウド環境の実現に必要な機能が今後も追加されることも十分ありうるでしょう。

またJava EE 7ではJMS 2.0、Caching API、JSON API、RESTサポートなどが含まれる予定になっています。


オラクルは今後も定期的にJavaに関する情報のアップデートを行うことを約束しています。Sunを買収して以来、⁠オラクルはJavaを囲い込むのでは?」⁠オープンな開発が続けられなくなるのでは?」という声が数多くありましたが、むしろオラクルはJavaに関しては神経質なほどに"オープン"であることにこだわっているかのようです。コミュニティのサポートや数多くの無償ツールの提供、積極的な情報公開などにその姿勢を見ることができます。"Moving Java Forward"というキャッチフレーズの通り、これからもオープンなスタイルでJavaが進化と革新を続けていく意思表示をあらためて感じたセッションでした。

おすすめ記事

記事・ニュース一覧