浅煎り珈琲 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
- James Gosling、オブジェクト指向言語 Oak 開発。
- 1994
- Java ベースのウェブブラウザ WebRunner 開発。
- 1995
- 05: Oak、Java に改称。 WebRunner、HotJava に改称。
- 09: Netscape 社、 SunMicrosystems 社とライセンス契約。
NetscapeNavigator2.0、 Java をサポート。
- 12: Microsoft 社、 SunMicrosystems 社とライセンス契約。
- 1996
- 1997
- 02: JDK 1.1リリース
- 03: Servlet Developer kitリリース
- 04: EJB仕様アナウンス
- 1998
- 12: Java 2 (JDK/SDK 1.2)リリース
- 1999
- 06: JSP仕様公開。J2SE, J2EE, J2ME体系アナウンス。
- 12: J2EE 1.2リリース
- 2000
- 05: J2SE 1.3, J2EE 1.2.1リリース
- 2001
- 2002
- 2003
- 2004
- 2005
- Java SE, Java EE, Java MEに名称変更アナウンス。
- 2006
- Java EE 5 リリース予定
- Java SE 6 (Mustang) リリース予定
- 2008
- Java SE 7 (Dolphin) リリース予定
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
- パフォーマンスの拡張
- GCの改善。
- StringBufferの非同期版のクラス
java.lang.StringBuilderの追加。
- 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.