OpenJDKをベースにして登場するメジャーアップグレード版になるとみられるJava 7だが、実のところどういった新機能が導入されることになるのだろうか。Javaはバージョンアップするごとに機能が増え、追加された新機能をキャッチアップするだけでも大変だ。JavalobbyにJava 7 Update from Mark Reinhold at DevoxxのタイトルのもとDevoxxでMark Reinhold氏が発表したJava 7アップデートのサマリが紹介されている。Java 7で登場する機能を把握しておく上で便利なサマリなのでJavaデベロッパはチェックしておくとよさそうだ。
紹介されているサマリからさらに興味深い点をまとめると次のとおり。
大きな変更点
- 非同期I/Oの実現 (ただの非ブロックI/Oではなく、リアルに非同期I/Oを実現)
- リアルファイルシステムAPIの提供
- カンマ区切りによるマルチキャッチ表記の実現
- Java仮想マシンレベルでのダイナミック言語のサポート機能
- モジュール化の推進 (Project Jigsaw)
- Groovyで実現されている"?"を使ったヌルチェック機能
- Java Kernalの実現 (6u10からのマージ)
- QUickstarterの実現 (6u10からのマージ)
- 新しいプラグイン機能の導入 (6u10からのマージ)
小さな変更点
- Unicode 5.0のサポート
- Java 2DにおけるXRenderサポート
性能改善点
- コンカレントマーク&スィープガベージコレクタに代わるG1ガベージコレクタの導入。一時停止時間のさらなる短縮を実現
- Java仮想マシンの複数組み合わせ動作の実現
そのほかの機能
- 型に対するアノテーションの提供
- Fork/Join、Phasers、LinkedTransferQueue、ConcurrentReferenceHashMap、Fencesはど並列処理機能の拡張
Java 7での登場が難しいとみられる機能
- クロージャ (統一見解が得られない状況にある)
- Reified Generic
- 1st classプロパティ
- 演算子オーバーローディング
- BigDecimalシンタックス
- Beans Binding
G1ガベージコレクタの導入や非同期I/OやリアルファイルシステムAPIが実現されると、これまでよりも高速なサーバの開発やシステムの機能を活用したアプリケーションの開発が可能になる。表記もよりシンプルに記述できるようになる。MVMについては不透明な状況だが、仮にものになったとすればスケーラビリティやリソースの活用が従来よりもアップすることにつながりそうだ。
残念なのはクロージャの導入が見送られそうな点だろう。James Gosling氏の肝いりで2006年8月18日(米国時間)に発表されたJavaへのクロージャの導入提案だが、複数の候補があるなどコンセンサスを得るのが難しい状況にある。James Gosling氏はクロージャ賛成派だが、導入を疑問視する声も多い。クロージャはときに熱狂的に支持される機能であるだけに、Java 7の登場で導入されるかどうかは注目しておきたいポイントだ。