「Java 7」とはどんなリリースだったのか、チーフアーキテクトが解説。JavaOne 2011

2011年10月12日

サンフランシスコで先週、10月4日から開催された「JaveOne 2011」。基調講演で最初の話題として語られたのは、7月に登場したばかりのJavaの最新バージョン「Java 7」についてでした。

Java 7とはどんなリリースなのか、基調講演の模様を紹介します。

「プランB」としてリリースされたJava 7

オラクル Java Platformチーフアーキテクト Mark Reinhold氏。

fig

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

fig

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

fig

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

fig

Java 7には多くの優れた機能がある。この中から3つ、「Project Coin」「Invoke Dynamic」「Fork/Join Framework」にフォーカスして紹介しよう。

Project Coinは「コードを書きやすく、読みやすく」

Project Coinは、Javaプログラム言語に対しての小さな変更の積み重ねだ。プログラマーが日常的に行っているコードを書きやすく、読みやすく、メンテナンスを容易にする。

これは文字列のハッシュマップを作るコード。ジェネリック型は非常に便利だが、実際には多くの文字をタイプしなければならない。

fig

そこでJava 7では、「<>」(Diamond)を追加した。

Diamondはコンパイラへの命令で、左辺の複雑な変数の定義を右辺にコピーする。

fig

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

fig

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

fig

そのほか複数の改善がProject Coinで行われている。

そしてこうしたJava 7の新しい言語仕様に対して、すでに先週、主要な3つの開発ツールが対応した。

fig

JRubyを高速化した「Invoked Dynamic」

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

fig

JRubyチームはHotSpotチームと共同で性能向上のためにInvoke Dynamicの実装に取り組んできた。

これまでのJavaVM上のJRubyではコードの実行途中で最適化が損なわれていた。

fig

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

fig

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

fig

パラレル処理の記述を容易にする「Fork/Join Framework」

「Fork/Join Framework」は、マルチコアのプロセッサをより活用するために開発された。

マルチコアを使いこなすには、タスクをサブタスクに分割していき、それらをパラレルに実行し、そしてその結果を集めるようなプログラミングをしなければならない。

fig

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

fig

これがJava 7のハイライトだ。ほかにも多くの機能があり、いますぐに利用できるのでぜひ試してほしい。

Java 8、Java 9はどうなるのか

基調講演では、さらにJava 8、Java 9がどうなるのかについても語られました。それについては次の記事「Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011」で紹介します。

あわせて読みたい

Java プログラミング言語 Oracle




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本