Java5の仕様を確認する(その2;Syntaxについて)

「Java5の仕様を確認する(その1)」に書いたように、Java5.0(Tiger)では多くのSyntaxの変更がなされている。

Sunの「New Features and enhancements J2SE 5.0」「Java Language Features」にその概略がかかれている。

Generics 型に関して長い間待ち望まれた拡張機能で、型やメソッドが、色々な型のオブジェクトを操作することを可能にするもの(総称型を表す記述と思われる)。Collection Frameworkのコンパイル時の型の安全性と、キャストというつまらない仕事をなくすもの。詳しくはJSR14を参照せよ。
Enhanced for Loop(拡張for文) collectionや配列を繰り返し操作するときにイタレータやインデックスについてのつまらぬ仕事や、エラーをなくす。詳しくはJSR201を参照せよ。
Autoboxing/Unboxing (int型のような)プリミティブ型と(Integerのような)ラッパーオブジェクト間の、手作業での変換という、つまらぬ仕事をなくす。詳しくはJSR201を参照せよ。
Typesafe Enum 任意のメソッドやフィールドを持たせた、オブジェクト指向の列挙型を提供する。これは、Effective java(書籍)のItem21にある、タイプセーフな列挙型パターンとして使える。
Varargs 可変長の引数のリスト(シグナチャ)を持つメソッドを呼び出す際、マニュアルで引数のリストを配列化する必要がなくなる。詳しくはJSR201を参照せよ。
Static Import コンスタント・インターフェイスアンチパターンの欠点なしに、クラス名付きの静的メンバー(変数)を避けることができる。詳しくはJSR201を参照せよ。
Metadata(Annotation) ソースコードに書いた注釈(annotation)をもとにツールにboilerplate code(不明)を生成させることができるようになる。宣言的なプログラミングスタイルを可能にする。ソースファイルの変更に合せてアップ・トウ・デイトに管理しなくてはならない、"別ファイル"のメンテナンスをなくす。その代わりに、ソースファイルがメンテナンスされるようになる。詳しくはJSR175を参照せよ

文中にeliminate(なくす)、drudgery(つまらない仕事)とか、それに類する言葉が出てくるのは、Ease of Programming(最近では、EoD、Ease of Developmentということが多いようだ)というTigerの目的の1つを象徴している。

また、Monitoring and Managementの項をみると、JVMの監視と管理に関する多くのAPIが追加されていることが分かる。

Monitoring and Managementだけではなく、Basic Libraryも見ておく必要がある。
たとえば、Internationalizationの項には、Unicode4.0に準拠する旨が書かれているし、Mathの項には、BigDecimalに関する変更点が書かれている。

デベロッパーにとっては、とても「波乱含み」なバージョンアップとなっている。