今月から、久々のJavaのメジャーバージョンアップであるJava SE 7を紹介していきます。
Java SE 6がリリースされたのが2006年12月ですから、もう5年にもなろうとしています。これだけの時間がかかってしまったことからもわかるように、Java SE 7の仕様が決まるまでは紆余曲折の歴史でした。
もともと、Java SE 7はJava SE 6と一緒に仕様を決め、簡単に実現できる機能をJava SE 6、実現に時間がかかる機能をJava SE 7にすることになっていました。その当時、Java SE 7に盛り込まれる機能としてリストアップされていたのが、クロージャやfriendです。
クロージャのすったもんだについては本連載の「クロージャからProject Lambdaへ」で言及しました。その後、Project Lambdaは再び仕様が変更されています。
friendはスーパーパッケージという名前に変更され、パッケージを包含する新しいモジュールになるはずでした。しかし、こちらも議論がまったく収束せずに、一度は断念したこともありました。現在はProject Jigsawとして仕様策定が進められています。
その後、昨年サンフランシスコで開催したJavaOne 2010において、Java SE 7の機能をJava SE 7とJava SE 8に分けることが決まりました。それについては、本連載の「JavaOne 2010レポート」で紹介したので、参考になさってください。結局、Project LambdaやProject JigsawなどはJava SE 8で提供されることになりました。
そして、身軽になったJava SE 7は今年の7月にリリースが予定されています。
Java SE 7の仕様はJSR 336 Java SE 7 Release Contentsで策定されていますが、実際はOpenJDKが主導して仕様策定、実装が進められています。
では、Java SE 7にはどのような機能があるのでしょうか。主な機能を以下に示しました。
- JSR 292 Supporting Dynamically Typed Language on the Java Platform
- Garbage First Garbage Collection (G1GC)
- JSR 334 Small Enhancement to the Java Programming Language (Project Coin)
- JSR 203 More New I/O APIs for the Java Platform ("NIO.2")
- JSR 166y Concurrency and Collection Updates
- 楕円曲線暗号 (ECC)
- JDBC 4.1
- Nimbus Look & Feel
この他にもクラスローダのアーキテクチャの改良や、Unicode 6.0への対応など、さまざまな機能が盛り込まれています。
そこで、本連載ではJava SE 7の機能を1つずつ紹介していくことにします。
第1回目の今回はJSR 334 Small Enhancement to the Java Programming Language、つまりProject Coinを紹介します。
なお、Java SE 7は、2011年2月23日にDeveloper Previewが公開されました。Developer Previewではほぼすべての機能が実装されています。しかし、まだ正式リリースではないため、細かな仕様の変更も予想されます。この点をご了承ください。
連載中に仕様変更等がありましたら、その都度言及するようにします。
また、OpenJDKのJDK7プロジェクトではビルドを毎週リリースしています。Developer Previewがリリースされた後も、ビルドが更新されています。ここでは、原稿執筆時点での最新ビルドであるbuild 138を使用しました。
ビルドのダウンロードはjava.netのJDK7プロジェクトのダウンロードサイトより行うことができます。JDKのインストールは、既存のJDKのインストールと変わらないため、ここでは省略させていただきます。