「Java 7」とはどんなリリースだったのか、チーフアーキテクトが解説。JavaOne 2011
サンフランシスコで先週、10月4日から開催された「JaveOne 2011」。基調講演で最初の話題として語られたのは、7月に登場したばかりのJavaの最新バージョン「Java 7」についてでした。
Java 7とはどんなリリースなのか、基調講演の模様を紹介します。
「プランB」としてリリースされたJava 7
オラクル Java Platformチーフアーキテクト Mark Reinhold氏。

1年前、Java SE 7をどうすべきか、みなさんに質問をした。そのときには主に5つの大きな新機能候補と、そのほかに細かい新機能候補があった。しかもその時点ですでにJava 6から6年が経過していた。

この新機能候補のうち、いくつかは開発に時間がかかりそうなものがあり、それらをJava SE 7から分離してJava SE 8の新機能とした計画を「プランB」とした。これならJava SE 7が当初よりも早期に、2011年中盤にリリースできる計画だった。

そしてみなさんと相談した結果「プランB」が採択され、無事に今年の7月にJava 7が無事にリリースされた。

Java 7には多くの優れた機能がある。この中から3つ、「Project Coin」「Invoke Dynamic」「Fork/Join Framework」にフォーカスして紹介しよう。
Project Coinは「コードを書きやすく、読みやすく」
Project Coinは、Javaプログラム言語に対しての小さな変更の積み重ねだ。プログラマーが日常的に行っているコードを書きやすく、読みやすく、メンテナンスを容易にする。
これは文字列のハッシュマップを作るコード。ジェネリック型は非常に便利だが、実際には多くの文字をタイプしなければならない。

そこでJava 7では、「<>」(Diamond)を追加した。
Diamondはコンパイラへの命令で、左辺の複雑な変数の定義を右辺にコピーする。

また、StringをSwitchの条件判定に使えるようにした。

複数の例外を同時に記述できるマルチキャッチ

そのほか複数の改善がProject Coinで行われている。
そしてこうしたJava 7の新しい言語仕様に対して、すでに先週、主要な3つの開発ツールが対応した。

JRubyを高速化した「Invoked Dynamic」
Java 7の2つ目の主な機能、「Invoked Dynamic」は、Javaを言語プラットフォームとして強化するものだ。動的言語をより効率よく実行する。

JRubyチームはHotSpotチームと共同で性能向上のためにInvoke Dynamicの実装に取り組んできた。
これまでのJavaVM上のJRubyではコードの実行途中で最適化が損なわれていた。

しかしJava 7のInvoke Dynamicでは、より高速に動作する。

実行速度を比較したグラフがこれだ。JavaVMはJavaだけでなくほかの言語のプラットフォームとしてもモダナイズされてきている。

パラレル処理の記述を容易にする「Fork/Join Framework」
「Fork/Join Framework」は、マルチコアのプロセッサをより活用するために開発された。
マルチコアを使いこなすには、タスクをサブタスクに分割していき、それらをパラレルに実行し、そしてその結果を集めるようなプログラミングをしなければならない。

そうしたコードのために、Java 7ではまるで以下の部分に「INVOKE-IN-PARALLEL」命令があるかのように処理が記述ができる。パラレリズムと同期を全部Fork/Join Frameworkが取り扱ってくれるのだ(注:この一文、当初は「INVOKE-IN-PARALLEL」命令があるように説明していましたが、実際にはなかったので修正しました)。

これがJava 7のハイライトだ。ほかにも多くの機能があり、いますぐに利用できるのでぜひ試してほしい。
Java 8、Java 9はどうなるのか
基調講演では、さらにJava 8、Java 9がどうなるのかについても語られました。それについては次の記事「Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011」で紹介します。
あわせて読みたい
Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011
≪前の記事
2011年9月の人気記事「絶対落ちないシステムを作れ」「さくらのクラウドβサービス開始」「スティーブ・ジョブズ氏の功績とモバイルファースト」