Java5の仕様を確認する(その1)

Javaとは古いつきあいなのだが、ここ数年はコードすることもなかった。
Java5(Tiger)が出て、さぁ、やるか、というタイミングで仕事が大きく変わってしまったから。

なので、世の中(現時点のJavaのバージョンはJava6_11)から随分と取り残されてしまった感が否めないが、以前に取っていたメモをもとに、もう一度、頭から確認して行こうと思う。

まずは、主要なドキュメントから。

  1. Java5.0(Tiger)のリリースノートへのリンク
  2. JCPのJSR176:J2SE(TM) (Tiger) Release Contentsへのリンク

Java5はJSR176としてリリースされた。2を見るとファイナル・リリース(Final Release)が2004年9月となっていて、JCPのプロセス(Stage)でいうとメンテナンス・レヴュー(Maintenance Review)に入っている(JCPのプロセスの説明は、こちら)こと、メンテナンス・リリース(Maintenance Release)なしにJava6へバージョンアップしたこと、そして、このJSRに含まれる主要なJSRがわかる。

「J2SDK1.4」が「Java5」と呼称変更になったくらいなので、JSRには大きな革新が含まれている。目に留まるものを列挙すると

JSR-003 JMX(TM) Specification
JSR-014 Add Generic Types for Java(TM) programming language
JSR-174 Monitoring and Management Spec. for JVM
JSR-175 A Metadata Facility for Java(TM) programming language
JSR-201 Extending the Java(TM) programming language with Enumeration, Autoboxing, Enhanced for loops and Static Import

こんなものが含まれている。

Java programming language」という言葉が多く出てくるところから分かるように、沢山のSyntaxの変更が含まれている。
上に列挙したものは、主に

  1. 開発を容易にし、コードの品質を向上させる(JSR-014,175,201)
  2. Javaの実行環境(JVM)を監視できるようになる(JSR-003,174)

と分類されていた。

JSR-014で取り込まれた機能は、たんに「Generics」、JSR-175は「メタ・データ」、JSR-201は「Enum(列挙)型の追加」、「拡張for文」、「Autoboxing/Auto-unboxing」、「静的クラス/変数のImport」とか呼ばれている。

また、jconsoleというモニタリングツールがバンドルされるようにもなったが、これはJSR-174を実現する実装である。