Wiki内検索
カウンタ
メニュー
最近更新したページ
最新コメント
トップページ by awesome things!
トップページ by check it out
Generics(Java) by stunning seo guys
String(Java) by awesome things!
トップページ by check it out
PHPのページ by stunning seo guys
Tomcatのページ by stunning seo guys
トップページ by check it out
トップページ by awesome things!
タグ

Java5のページ


Java5(Tiger)とは


概略

Javaはバージョン1.2になった際に、SDK(Standard Development Kit)がJ2SDKと呼ばれるようになりました。その後、1.3、1.4は、J2SDK1.4(2007/2/20現在;1.4.13が最新版)と呼ばれてきましたが、1.5のTigerをリリースするにあたり、Java5.0と呼ぶようになりました。

  1. Java5(Tiger)のリリースノートは、こちら
  2. JCPのJSR176:J2SE(TM) (Tiger) Release Contentsを見ると、これに含まれているJSRが見られます。Final ReleaseがSep.2004となっていて、その後、2回のmainntenace releaseが入っています。
  3. Java5(Tiger)のAPIドキュメントは、こちら

Tigerの特徴

Java1.4がJava5.0と呼ばれるようになったということは、大きな変更点があるということで、上のJSR176で目につくところでも以下のようなものが挙げられます(フォーカスするところに偏見があるかと思いますけど)。

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

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

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

と言われていたと記憶しています。

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

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

こんなに変更があるのは大変なことなので、呼称も変更になったということです。


言語仕様(Syntax)の変更について

以下では、主にTigerで導入されたシンタックスについて見て行きたいと思います。
先のSunのサイトにある「New Features and enhancements J2SE 5.0」によると、「Java Language Features」として以下のものが記載されています。

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

下手な訳だなぁ。Annotationのところにあるbolerplate codeというのは慣用句だと思うけど、どういうニュアンスなのか分かりません。

それと文中にeliminate(なくす)、drudgery(つまらない仕事)とか、それに類する言葉が出てくるのは、Ease of programmingというTigerの目的の1つを象徴してます。


モニタリングについて

  • Java Virtual Machine Tool Interface(JVMTI)
次期バージョン(Java6)において廃止予定となるJVMPIとJVMDIをリプレイスすることになる、新しいJVMのモニタリングインターフェイス。
VM上で実行されるアプリケーションの実行管理、状態監視の方法を提供するし、開発ツールやモニタリング・ツールで使用されることを目的にしている。


参考文献

  1. 進化するJava J2SE 5.0(2004/11、Javaプログラミング同好会著、エクスメディア)
2007年03月01日(木) 09:20:03 Modified by wanderingse




スマートフォン版で見る