今月から、久々の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にはどのような機能があるのでしょうか。主な機能を以下に示しました。

 この他にもクラスローダのアーキテクチャの改良や、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のインストールと変わらないため、ここでは省略させていただきます。