浅煎り珈琲 JDK 5.0版

Since: 2004-10-05

本稿は Java 解説です。

J2SE 5.0 - JavaTM 2 Platform Standard Edition 5.0 Development Kit (JDK 5.0) の言語仕様を網羅的に解説することを目的とします。当初は、J2SE 5.0にて追加/変更された機能を中心に解説しますが、将来的には、J2SE 5.0現在の全ての言語仕様を網羅することを目的とします。将来のリリースの差分が小さい場合は、本稿にマージしていくこととします。

J2SE 1.4 までの入門記事は、浅煎り珈琲 J2SE 1.4にて公開中です。当分は、そちらを中心に更新しますので、本稿はメモ程度にとどまると思われます。

J2SE 5.0 とはなにか

Java プラットフォームとは何か

J2SE とは Java 環境を称したもので、Java 2 Platform Standart Edition の略です。ソフトウェア的な実体は、JDK (J2SE Development kit) で実装されます。J2SE 以外の Java 環境には、エンタープライズ版 API を追加した J2EE と、マシンリソースが制限された環境で組み込み Java として動作する J2ME があります。また、コンパイラなどの開発環境を除いた JRE (J2SE Runtime Environment) も存在します。逆に言うと、JRE は JVM (Java Virtual MAchine) とライブラリ群を含んだもので、これにコンパイラなどの開発環境を追加したものが JDK です。

Java の歴史

元々、Javaの開発環境は一つで、JDK (Java Development Kit)と呼ばれていました。1998年の大幅な機能強化に伴い、名称がJava 2に変更されます。JDK 1.2以上の開発環境はJava 2 SDK (Software Development Kit)に名称変更されました。1999年には、Java 2のプラットフォーム仕様が、J2SE (Standard Edition), J2EE (Enterprise Edition), J2ME (Micro Edition)に分裂し、従来のJDKはJ2SEの実装系となり、J2SEのスーパーセットとしてJ2EEが策定されています。2000年には、J2EEの最初の公式なバージョンであるJ2EE 1.2とJ2SE 1.3がリリースされます。2004年のリリースではバージョニング規則が変わり、外部バージョン5.0, 内部バージョン1.5.0となり、実装系の名称もJDK (Java 2 Platform Standard Edition Development Kit)に戻されました。2005年にはJava 2から2が落とされ、バージョンから.0が落とされることがアナウンスされました。その結果、次期リリースの名称は、Java SE 6, Java EE 5になります。現行バージョンのJ2SE 5.0, J2EE 1.4はそのままです。

1991
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2008

JDK 5.0 では、ライブラリの入れ替え(API の変更)だけではなく、言語仕様にも大きな変更があります。本稿では、JDK 5.0 による変更点にシフトして、Java 言語を解説します。

J2SE 5.0 追加機能

参照:http://java.sun.com/j2se/1.5.0/ja/docs/ja/relnotes/features.html

パフォーマンスの拡張
Java 言語機能
総称 (Generic Types)
キャストの型チェックを実行時からコンパイル時に移動させるもの。実行時例外ClassCastExceptionをコンパイルエラーにする。(詳細(PDF)
拡張 for ループ (Enhanced for Loop)
for-eachのようなfor文の新しい書式。
オートボクシング / アンボクシング機能 (Autoboxing and Auto-Unboxing of Primitive Types)
プリミティブ型とラッパーの自動型変換。但し、パフォーマンス上の劣化, NullPointerException, 比較の問題が発生する。
型保証された列挙 (Enumerated Types)
enum宣言による型を持った列挙の宣言。
可変引数 (Varargs)
最後の引数の型の後に続く3つのピリオドによって、不定長の引数リストを宣言。
static のインポート (Static Import)
「Constant Interface Antipattern (不変のインタフェースアンチパターン)」(staticメンバのクラスで参照を修飾する必要を省くためにインタフェースを経由してstaticメンバを参照すること)の解消。不要な詳細を公開しなければならないことが問題。import static java.lang.Math.PI;とすることで、PIが使えるようになる。
メタデータ (注釈) (Metadata)
仮想マシン
クラスデータの共有
ガベージコレクタエルゴノミクス
サーバクラスマシン検出
スレッド優先順位の変更
致命的エラーの処理
高精度タイミングのサポート
基本ライブラリ
言語およびユーティリティパッケージ
ネットワーク機能
セキュリティ
国際化
環境変数のサポートの改善
ProcessBuilder
フォーマッタ
スキャナ
リフレクション
JavaBeansTM コンポーネントアーキテクチャ
Collections Framework
XML 処理用 Java API (JAXP)
ビット操作演算
Math
インストゥルメンテーション
直列化
並行処理ユーティリティ
スレッド
監視および管理
統合ライブラリ
Remote Method Invocation (RMI)
Java Database Connectivity (JDBC)
CORBA、Java IDL、および Java RMI-IIOP
Java Naming and Directory InterfaceTM (JNDI)
ユーザインタフェース
国際化
Java サウンドテクノロジ
Java 2DTM テクノロジ
Image I/O
AWT
Swing
配備
一般的な配備
Java Web Start
ツールおよびツールアーキテクチャ
Java Virtual Machine Tool Interface (JVMTI)
Java Platform Debugger Architecture (JPDA)
Java コンパイラ (javac)
Javadoc ツール
注釈処理ツール (apt)
OS およびハードウェアプラットフォーム
サポートするシステム構成
64 ビット AMD Opteron プロセッサ

Sun による公式文書


Copyright © 2004-2006, SUGAI, Manabu. All Rights Reserved. NEXTindex