Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011
7月に登場した「Java 7」に続くバージョンとして開発中の「Java 8」「Java 9」。
オラクル Java Platformチーフアーキテクト Mark Reinhold氏は、サンフランシスコで先週、10月4日から開催された「JaveOne 2011」の基調講演で、「Java 8」の機能として予定されている、マルチコアプロセッサへの対応を目的とした「Project Lambda」、大規模プログラミングへの対応を目指す「Project Jigsaw」の紹介を行いました。
さらに「Java 9」の構想としてビッグデータ、マルチテナント対応などがあることを明らかにしました。
本記事は「「Java 7」とはどんなリリースだったのか、チーフアーキテクトが解説。JavaOne 2011」の続きです。
Java 8は革新的なものになる
オラクル Java Platformチーフアーキテクト Mark Reinhold氏。

さて、Java 7は重要なリリースだったが、革新というよりは進化に近い。しかし次のJava 8は革新的なものになると思っている。
Java 8の2つの機能、「Project Lambda」「Project Jigsaw」について紹介しよう。

Javaにラムダ式を追加
なぜJavaにLambda式を追加するのか?

最新のクールな言語に実装されているから?

実際にはこれも、マルチコアのプロセッサの登場が背景にある。
例えば、「student」クラスを想定し、数百人、数千人の生徒から2011年度のテストの最高得点を選ぼうとする。
Java 7でこのようにプログラムが書けるが、複雑だ。

Java 8では、「->」と「#」を採用することで簡潔に書ける。

Project Rambdaとは、単にラムダ式を採用するだけでなく、バルクデータに対する操作などの機能も含んでいる。

大規模プログラミングに対応する「Project Jigsaw」
「Project Jigsaw」の動機は大規模プログラミングへの対応にある。
Javaでコンポーネントの再利用を行う場合、いまはクラスパスを用いる。

Project JigsawではJava言語を拡張し、ハイレベルの構造を備えたJavaコード的な表現を可能にする。

クラスパスのアグリゲータも定義できる。

クラスを、jarにも、新しいフォーマットのjmodや、rpmやdebパッケージなどにできる。

これはJavaのモジュールシステム化を進めることであり、例えばメモリが10メガバイトのようなマシンに対応することでもある。
また、小さなデバイスだけでなくJava EEのような大きなシステムでも、いずれこうしたモジュラー構造を採用するつもりだ。それはOSGiとして取り組んでいる。
Java 8ではそれ以外の機能追加も予定している。

Java 9ではビッグデータ、マルチテナントを構想
Java 8に続いて、Java 9も計画している。

セルフチューニングJavaVM、ビッグデータの対応、1つのJavaVM上でのマルチテナンシー、JavaコードからGPUを利用するようなヘテロジニアスなモデルなどが候補にあがっている。
これらはまだアイデアの段階だ。
Java 8はリファレンス実装としてのOpenJDKへの実装を進めている。

アーリービルドはすでに入手可能だ。ぜひ試してバグレポートなどを送ってほしい。
JavaFX 2.0、Java EE 7
明日公開予定の記事では、この基調講演の続きである「JavaFX 2.0」と、Java EEの次のバージョンとなる「Java EE 7」の解説を紹介します。お楽しみに!
あわせて読みたい
生まれ変わったJavaFX 2.0、Webブラウザと統合可能。JavaOne 2011
≪前の記事
「Java 7」とはどんなリリースだったのか、チーフアーキテクトが解説。JavaOne 2011