Java Platform Standard Edition 5 バージョン 1.5.0 は、機能が大幅に向上されたメジャーリリースです。以下に示す機能は、前回のメジャーリリース (1.4.0) 以降に 1.5.0 で導入されたものです。
新機能の概要は、http://java.sun.com/developer/technicalArticles/releases/j2se15/ にある「J2SE 1.5 in a Nutshell」にも挙げられています。問題点については、http://java.sun.com/j2se/1.5.0/ja/relnotes.html にある 「JDK 5.0 リリースノート」を参照してください。
パフォーマンスの強化についての概要は、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/performance/speed.html にある「JDK 5.0 での拡張」を参照してください。
詳細については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/index.html にある「JDK 5.0 での拡張」を参照してください。
待ち望まれた型システムの拡張により、コンパイル時のタイプセーフを提供しながら、さまざまなタイプのオブジェクトに対して型またはメソッドを使用できるようになりました。汎用型はコレクションフレームワークにコンパイル時のタイプセーフを追加し、手間のかかるキャスティング作業を省きます。JSR 14 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/generics.html にある汎用型関連の文書を参照してください。
この新しい言語構造により、コレクションと配列の繰り返し処理を行う際にイテレータとインデックス変数の手間やエラー発生を防ぐことができます。JSR 201 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/foreach.html にあるドキュメントを参照してください。
この機能は、プリミティブ型 (int など) とラッパー型 (integer など) との間で手動変換をする手間を省きます。JSR 201 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/autoboxing.html にあるドキュメントを参照してください。
この柔軟なオブジェクト指向の列挙型機能を使用することによって、任意のメソッドとフィールドを使用して列挙型を作成できます。この機能には、冗長性がなく、エラーを起こしにくい型保証された列挙パターン (Effective Java、Item 21) のあらゆるメリットがあります。JSR 201 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/enums.html にあるドキュメントを参照してください。
この機能によって、可変長引数リストを受け付けるメソッドを呼び出す場合に引数リストを配列に手動で入れる必要がなくなります。JSR 201 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/varargs.html にあるドキュメントを参照してください。
この機能を使用すると、Constant Interface Antipattern (不変のインターフェースアンチパターン) の短所なしで、クラス名で静的メンバーを修飾することを避けられます。JSR 201 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/static-import.html にあるドキュメントを参照してください。
この言語機能によって、ツールを使用してソースコード内の注釈からボイラープレートコードを生成可能になり、さまざまな状況でボイラープレートコードを記述する手間を省けます。これは、プログラマが何を行うべきかを記述しツールがそれを実行するコードを生成する、宣言的なプログラミングスタイルが可能になります。また、ソースファイルの変更に伴って最新状態に保持しなければならない付属ファイルを管理する必要もなくなります。それに代わって、情報はソースファイル内で管理できます。JSR 175 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/annotations.html にあるドキュメントを参照してください。
クラスデータの共有機能は、アプリケーションの起動時間の短縮とフットプリントの減少を目的としたものです。インストール処理では、システム jar ファイルからプライベートな内部表現に一連のクラスが読み込まれ、続いてその表現が共有アーカイブファイルにダンプされます。その後行われる JVM の起動では、その共有アーカイブがメモリー内にマップされます。このため、クラスを読み込む手間が省かれ、これらのクラス用の JVM のメタデータのほとんどを複数の JVM プロセスで共有できます。詳細については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/class-data-sharing.html にあるドキュメントを参照してください。
この並行コレクタは、アプリケーションが必要とするメモリーを監視し、これに適合するように拡張されました。 アプリケーションのパフォーマンス目標を指定すると、JVM は、それらの目標に適合する最小のアプリケーションフットプリントで Java ヒープのサイズを調整します。適応性のあるこのポリシーは、最上のパフォーマンスを達成するために必要なコマンド行オプションの調整を不要にすることを目的にしています。ガベージコレクション機能の概要については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/gc-ergonomics.html にあるドキュメントを参照してください。
アプリケーションの起動時に、起動用ウィンドウはアプリケーションがサーバークラスマシンで稼動しているかどうかを検出できます。http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/server-class.html にあるドキュメントを参照してください。
スレッドの優先順位の割り当ては、優先順位が明示的に設定されていない Java スレッドとネイティブスレッドが、ある程度対等に競うことができるように変更されました。http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/thread-priorities.html にあるドキュメントを参照してください。
致命的なエラーを報告するメカニズムはより優れた診断を出力するように改良され、信頼性も高まりました。
相対的な時間測定のためにナノ秒精度のタイムソースにアクセスできるように、メソッド System.nanoTime() が追加されました。System.nanoTime() によって返されるタイム値の実際の精度は、プラットフォームによって異なります。
java.lang および java.util の拡張についての概要は、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/lang/enhancements.html にあるドキュメントを参照してください。
追加されたネットワーク機能の概要については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/net/enhancements-1.5.0.html にあるドキュメントを参照してください。
この J2SE リリースでは、セキュリティ機能が大幅に強化されています。このリリースでは、セキュリティトークンのサポート向上、セキュリティ標準のサポート増加 (SASL、OCSP、TSP)、スケーラビリティ (SSLEngine) とパフォーマンスの向上などが実現されているほか、暗号や Java GSS などの領域でも数多くの機能強化がなされています。詳細については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/index.html にあるドキュメントを参照してください。
以下の機能強化がなされました。
文字処理は、現在 Unicode 標準のバージョン 4.0 をベースとしています。これは、java.lang パッケージ内の Character クラスと String クラス、java.text パッケージ内の照合と双方向テキスト分析機能、java.util.regex パッケージ内の character クラスを始め、J2SE のさまざまな部分に影響を与えます。このアップグレードの一環として、JSR 204 エクスパートグループによって補助文字のサポートが指定され、J2SE 全体に実装されました。詳細については、『JAVA プラットフォームにおける補助文字のサポート』、『Java Specification Request 204』、Character クラスドキュメントなどを参照してください。
DecimalFormat クラスは、精度を失うことなく BigDecimal 値と BigInteger 値のフォーマット設定および解析が行えるように拡張されました。これらの値のフォーマットは自動的に拡張されます。BigDecimal に構文解析するには、setParseBigDecimal メソッドを使用して有効にする必要があります。
このリリースでは、java.util パッケージおよび java.text パッケージ内のすべてのロケール対応機能でベトナム語がサポートされるようになりました。サポートされるロケールと書記法の詳細については、「サポートされているロケール」を参照してください。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/intl/index.html にあるドキュメントも参照してください。
System.getenv(String) メソッドは非推奨扱いではなくなりました。新しい System.getenv() メソッドを使用すると、Map<String,String> としてプロセス環境にアクセスできます。http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getenv(java.lang.String) にあるドキュメントを参照してください。
サブプロセスの呼び出しには、Runtime.exec よりも新しい ProcessBuilder クラスが便利です。特に、ProcessBuilder を使用すると、変更されたプロセス環境 (親のプロセス環境に基づくが、一部変更されたもの) で サブプロセスの開始が容易になります。http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/ProcessBuilder.html にあるドキュメントも参照してください。
printf 形式のフォーマット文字列のインタプリタである Formatter クラスは、レイアウトの調整と整列、数値 / 文字列 / 日時データの共通フォーマット、ロケール固有の出力などのサポートを提供します。byte、java.math.BigDecimal、java.util.Calendar などの共通の Java 型がサポートされます。 java.util.Formattable インタフェースを使用することで、任意のユーザー型のフォーマットを限定的にカスタマイズできます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Formatter.html にあるドキュメントを参照してください。
java.util.Scanner クラスを使用して、テキストをプリミティブまたは String に変換できます。このクラスは java.util.regex パッケージをベースとしているため、このクラスを使用してストリーム、ファイルデータ、文字列、または Readable インタフェースの実装に対して正規表現に基づく検索を行うこともできます。http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Scanner.html にあるドキュメントを参照してください。
汎用型、メタデータ、列挙、および簡易メソッドのサポートが追加されました。また、java.lang.Class が総称化されました。http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/reflection/enhancements.html にあるドキュメントを参照してください。
変更された bean 部分を特定するためにインデックスを使用するバウンドプロパティをサポートするため、PropertyChangeEvent のサブクラスとして IndexedPropertyChangeEvent が追加されました。また、インデックス化されたプロパティ変更イベントの起動をサポートするために、PropertyChangeSupport クラスにメソッドがいくつか追加されました。http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/beans/index.html にあるドキュメントを参照してください。
コレクションフレームワークは、以下のように強化されました。
コレクションを対象とする汎用型、拡張ループ、およびオートボクシングの 3 つの新しい言語機能
3 つの新しいインタフェース、Queue、BlockingQueue、および ConcurrentMap がフレームワークに 追加されました (このうちの 2 つは java.util.concurrent の一部)。
Queue の 2 つの実装と 1 つのスケルトン実装が 追加されました。
5 つのブロックキュー実装と 1 つの ConcurrentMap 実装が追加されました。
型保証された列挙で使用できるように、特殊用途の Map 実装と Set 実装が提供されました。
特殊用途の書き込み時コピー List 実装と Set 実装が追加されました。
ほとんどのコレクションインタフェースに動的なタイプセーフを加えるラッパー実装が提供されました。
コレクション操作に使用できるいくつかの新しいアルゴリズムが提供されました。
配列のハッシュコードと文字表現を計算するメソッドが提供されました。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/collections/index.html にあるドキュメントを参照してください。
詳細については、JSR 206、または http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/xml/jaxp/index.html にあるドキュメントを参照してください。
ラッパークラス (Integer、Long、Short、Byte、および Char) は、highestOneBit、lowestOneBit、numberOfLeadingZeros、numberOfTrailingZeros、bitCount、rotateLeft、rotateRight、reverse、signum、reverseBytes などの共通のビット操作処理をサポートするようになりました。
ライブラリが提供する数値機能は、いくつかの次の方法で拡張されました。
BigDecimal クラスは、固定精度の浮動小数点演算のサポートを追加しました。JSR 13 を参照してください。
Math ライブラリと StrictMath ライブラリには、双曲線超越関数 (sinh、cosh、tanh)、cube root、base 10 logarithm などが含まれます。
16 進浮動小数点サポート - 特定の浮動小数点値を正確でかつ予測可能なものにするため、浮動小数点リテラルと、Float および Double における浮動小数点変換メソッドを指定する文字列に16 進表記を使用できます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/math/index.html に挙げられたドキュメントを参照してください。
新しい java.lang.instrument パッケージには、Java プログラミングエージェントが Java 仮想マシン上で稼動しているプログラムを計測できるサービスが含まれます。このインストゥルメンテーションメカニズムは、メソッドのバイトコードを修正するものです。
バージョン 1.5.0 で追加された列挙型を処理できるようにサポートが追加されました。列挙インスタンスを直列化する規則は、直列化が可能な通常のオブジェクトを直列化する規則とは異なります。直列化された列挙インスタンスフォームには、その列挙定数名と、そのベースの列挙型を特定する情報しか含まれません。非直列化の動作も異なります。適切な列挙クラスの特定には、クラス情報が使用されます。返す列挙定数の取得には、このクラスおよび受け取った定数名によって Enum.valueOf メソッドが呼び出されます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/serialization/index.html にあるドキュメントを参照してください。
java.util.concurrent、java.util.concurrent.atomic、および java.util.concurrent.locks パッケージは、同時実行されるクラスおよびアプリケーション (スレッドプール、スレッドに対して安全なコレクション、セマフォ、タスクスケジューリングフレームワーク、タスク同期ユーティリティ、自動変数、ロックなど) を開発するための、パフォーマンスとスケーラビリティに優れた、スレッドに対して安全な構築ブロックを実現する、拡張性の高い強力なフレームワークを提供します。これらのパッケージをコアクラスライブラリに追加することで、手動でこれらのユーティリティを作成する手間が省けます。これは、データ構造に対するコレクションフレームワークの効果によく似ています。また、これらのパッケージは、プロセッサによって提供される並行性のサポートを利用する高度な並行プログラミングを対象とした低レベルのプリミティブも提供します。これによりプログラマは、以前にはネイティブコードを使用せずには不可能であった、高パフォーマンスで高スケーラビリティの並行アルゴリズムを Java 言語に実装できます。
JSR 166 と、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/concurrency/index.html にあるドキュメントを参照してください。
java.lang.Thread クラスは、以下のように強化されました。
「Thread Priority」 処理は変更されました。詳細については上記のリンクを参照してください。
スレッドの実行状態を照会できるように、Thread.State 列挙クラスと新しい getState() API が提供されました。
新しいスレッドダンプ API (Thread クラス内の getStackTrace メソッドと getAllStackTraces メソッド) を使用すると、プログラム化した方法で 1 つのスレッドまたはすべてのスレッドのスタックトレースを取得できます。
uncaughtExceptionHandler メカニズムは以前には ThreadGroup クラスを通してしか使用できませんでしたが、Thread クラスを通して直接使用できるようになりました。
sleep() メソッドに、1 ミリ秒よりも短いスリープタイムを設定できる新しいフォームが追加されました。
今回の J2SE リリースでは、Java プラットフォームの監視と管理の機能が大幅に強化されました。
Java 仮想マシン用の監視と管理 API。新しい java.lang.management パッケージは、Java 仮想マシンの監視と管理のためのインタフェースを提供します。
ロギング機能用の監視と管理 API。新しい java.util.logging.LoggingMXBean インタフェースは、ロギング機能用の管理インタフェースです。
Java 仮想マシンの JMX インストゥルメンテーション。 Java 仮想マシン (JVM) は、JMX を使用してその監視と管理が行える組み込み型のインストゥルメンテーションです。リモートまたはローカルの JVM インストゥルメンテーションを監視・管理する JMX エージェント、または JMX インストゥルメンテーションを使用した任意のアプリケーションの JMX エージェントを簡単に起動できます。詳細については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/agent.html にある「JMX を使用する監視と管理」を参照してください。
SNMP エージェントは、JSR 163 に定められている方法で、JVM インストゥルメンテーションの標準の MIB を公開します。詳細については、「SNMP の監視と管理」を参照してください。
J2SE 5 リリースには、JavaTM Management Extensions JMXTM API バージョン 1.2 と、JMX Remote API バージョン 1.0 の RMI コネクタが含まれています。JMX API を使用すると、監視・管理用のライブラリとアプリケーションを計測できます。RMI コネクタは、このインストゥルメンテーションをリモートでアクセスするためのものです。詳細については、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/index.html にある JMX の文書を参照してください。
RMI は、以下のように強化されました。
スタブクラスの動的な生成 - このリリースでは、実行時にスタブクラスを動的に生成できるようになりました。このため、Java Remote Method Invocation (Java RMI) スタブコンパイラ、rmic を使用してリモートオブジェクト用のスタブクラスをあらかじめ生成する必要がなくなりました。ただし、以前のバージョンで稼動しているクライアントをサポートする必要があるリモートオブジェクト用のスタブクラスを生成するために、rmic を使用する必要があります。
標準の SSL/TLS ソケットファクトリクラス - このリリースでは、標準の Java RMI ソケットファクトリクラス、javax.rmi.ssl.SslRMIClientSocketFactory と javax.rmi.ssl.SslRMIServer SocketFactory が追加されました。これらのクラスは、Java Secure Socket Extension (JSSE) を使用して Secure Sockets Layer (SSL) または Transport Layer Security (TLS) プロトコルを介して通信します。
inetd/xinetd からの rmid または Java RMI サーバーの起動 - System.inheritedChannel メソッドが提供するこの新しい機能を使用すると、アプリケーションは仮想マシン (VM) を起動したプロセスから継承されたチャネル (例: java.nio.channels.SocketChannel、java.nio.channels.ServerSocketChannel など) を取得できます。継承されたこのようなチャネルは、単一の着信接続にサービスを提供するように使用することも (SocketChannel と同様)、あるいは複数の着信接続を受け入れるように使用することも (ServerSocketChannel と同様) できます。このため、inetd (Solaris) または xinetd (Linux) によって起動された Java ネットワーキングアプリケーションは、inetd/xinetd から継承された SocketChannel または ServerSocketChannel を取得できます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/rmi/index.html にあるドキュメントを参照してください。
javax.sql パッケージの一部として J2SE バージョン 1.4 で導入された RowSet インタフェースは、コンポーネント間でデータを受け渡す軽量手法を提供します。
このリリースでは、開発者に便利なように、RowSet オブジェクトを使用できる 5 つの一般的な方法で (JSR 114 として) RowSet インタフェースが実装されました。これらの実装により、現状のままあるいは拡張して自由に使用できる標準が提供されます。以下に、これらの 5 つの標準実装を示します。
JdbcRowSet - JDBC テクノロジを使用するために実装される結果セットまたはドライバをカプセル化するために使用されます。
CachedRowSet - データソースからデータを取得する場合や変更されたデータをデータソースに書き戻す場合を除き、そのデータソースからは切り離されて独自に稼動します。このため、メモリー内にできるだけ多くのデータを保存する軽量コンテナとして機能できます。
FilteredRowSet - CachedRowSet を拡張したもので、データのサブセットを取得するのに使用されます。
JoinRowSet - CachedRowSet を拡張したもので、複数の RowSet オブジェクトからデータの SQL JOIN を取得するために使用されます。
WebRowSet - CachedRowSet を拡張したもので、XML データに使用されます。これは、標準化された XML スキーマを使用する XML 内で表形式コンポーネントを表現します。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jdbc/index.html にあるドキュメントを参照してください。
CORBA、Java IDL、および Java RMI-IIOP の機能強化については、「J2SE 1.4.x と 5.0 の間での CORBA 機能の変更点」で説明しています。http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/idl/index.html にある Java IDL ドキュメントと、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/rmi-iiop/index.html にある Java RMI-IIOP ドキュメントを参照してください。
JNDI の新機能は次のとおりです。
ディレクトリ / ネーミングサービスから完全名にアクセスする javax.naming.NameClassPair の機能強化
標準の LDAP 制御である Manage Referral Control (参照コントロール)、Paged Results Control (ページング結果コントロール)、および Sort Control (ソートコントロール) のサポート
LDAP 名の操作のサポート
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jndi/index.html にあるドキュメントを参照してください。
論理フォントを使用して多言語使用のテキストを描画するために、2D は、サポートされるすべての書記法に対してインストール済みのホスト OS フォントを利用するようになりました。たとえば、タイ語ロケール環境で実行しているが韓国語フォントがインストールされている場合、タイ語と韓国語の両方が描画されます。J2RE はその lib/fonts/fallback ディレクトリにインストールされている物理フォントを自動的に検出し、それらの物理フォントを 2D 描画用のすべての論理フォントに加えるようになりました。
AWT は、Windows 2000/XP 上の Unicode API を使用するようになりました。この結果、一部のコンポーネントは Windows ロケール設定の制限を受けることなくテキストを処理できます。たとえば、AWT テキストコンポーネントは、Windows ロケール設定に関係なくデーバナーガリー (Devanagari) 文字入力システムでのテキストを受け入れ、表示できます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/intl/index.html にあるドキュメントを参照してください。
このリリースでは、すべてのプラットフォームでポートが使用できるようになりました (RFE 4782900)。
すべてのプラットフォームで MIDI デバイス入出力が使用できるようになりました (RFE 4812168 と 4782924)。
最適化されたダイレクトオーディオアクセスが実装されました (RFE 4908240 と 4908879)。ネイティブミキシング (ハードウェアミキシング機能が付いた Linux ALSA、Solaris Mixer、Windows DirectSound) を提供するシステムでは、これがデフォルトで有効になります。
新しいリアルタイムのシーケンサはすべての MIDI デバイスに利用でき、トランスミッタは無制限となりました (RFE 4773012)。
ユーザーは、sound.properties 構成ファイルを使用してデフォルトのデバイスを選択できます (RFE 4776511)。詳細については、MidiSystem と AudioSystem を参照してください。
Midi デバイスは、接続されたレシーバとトランスミッタを照会できます (RFE 4931387、MidiDevice.getReceiver メソッドと MidiDevice.getTransmitter メソッド)。
AudioFormat、AudioFileFormat、および MidiFileFormat には、詳細にフォーマットを記述し修飾するプロパティが加えられました (RFE 4925767 と 4666845)。
簡単に使用できるメソッドによって、AudioSystem からラインの取得を容易に行えるようになりました (RFE 4896221)。
シーケンサインタフェースは、MIDI シーケンスの特定の部分を継続的にループできるように、loop メソッドによって拡張されました (RFE 4204105)。
Java Sound は、VM の終了を妨げることがなくなりました (バグ 4735740)。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/sound/index.html にあるドキュメントを参照してください。
2D 機能には、広範な Solaris または Linux プリンタサポート、ファイルとストリームからフォントを作成する新しい方法、VolatileImage とイメージ描画のハードウェアベースの高速化に関連する新しい方法などが追加されました。テキスト描画コードに多数の内部変更が加えられたことで、その堅牢性、パフォーマンス、およびスケーラビリティが大幅に向上しました。他のパフォーマンス機能としては、OpenGL (デフォルトでは無効) を使用するハードウェアにより高速化された描画などがあります。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/2d/index.html にあるドキュメントを参照してください。
Image I/O システムに、BMP 形式と WBMP 形式用の読み込みと書き込みが追加されました。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/imageio/index.html にあるドキュメントを参照してください。
1.5.0 リリースでは、顧客から要求の多かったものも含め、多数の AWT 強化とバグ修正を実現しました。顕著な例として、新しい MouseInfo クラスはデスクトップ上のマウスの位置を検出できるようになりました。新しい Window メソッドは、新しく作成されるウィンドウ (またはフレーム) のデフォルトの位置をプラットフォームに合わせて指定できます。Window の他の強化によって、ウィンドウ (またはフレーム) を常に最上位に配置することも可能となりました (この機能は Solaris または Linux 上の一部のウィンドウマネージャでは機能しません)。データ転送の領域では、新しい DropTargetDragEvent API を使用することで、ドラッグ操作の際にドロップターゲットが転送データにアクセスできるようになりました。
詳細は、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/awt/index.html にあるAWTを参照してください。
1.4.2 リリースでは、Swing に 2 つの新しい見た目と使い心地、XP と GTK が追加されました。それに続けて、1.5.0 でもさらに 2 つの見た目と使い心地、Synth (スキンを変更可能) と Ocean (Metal の新しいテーマ) が提供されます。見た目と使い心地だけでなく、JTable に印刷サポートも追加しました。これにより、JTable のきれいな印刷コピーを簡単に出力できるようになりました。7 年をかけて、jFrame.add を jFrame.getContentPane().add() と同等にしました。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/swing/index.html にある Swing のドキュメントを参照してください。
Pack200 (JSR 200 で定義されている、JAR ファイルの新しい超高圧縮形式) を使用すると、Java Web Start アプリケーションおよび Java Plug-in アプレットで使用される JAR ファイルのダウンロードサイズを大幅に縮小できます。
一般的な配備の機能と機能強化についての概要は、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/deployment/enhancements-1.5.0.html を参照してください。
Java Web Start の配備機能と機能強化についての概要は、http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/javaws/enhancements-1.5.0.html を参照してください。
JVMTI は、開発ツールと監視ツールで使用する新しいネイティブプログラミングインタフェースです。JVMTI は、Java 仮想マシン (VM) で稼動しているアプリケーションの状態の検査と、その実行制御の両方に使用できます。JVMTI は、VM の状態にアクセスする必要があるさまざまなツール (プロファイリングツール、デバッグツール、監視ツール、スレッド分析ツール、カバレージ解析ツールなど) を対象に VM インタフェースを提供することを目的としています。
JVMTI は、 J2SE の次のメジャーリリースで、現在推奨されていない JVMPI と JVMDI に置き換わります。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jvmti/index.html にあるドキュメントを参照してください。
以下 URL のドキュメントの「JPDA の拡張機能」で説明されているように、JPDA 自体、多数の新機能が追加されています。
読み取り専用の JDI サブセットが定義されました。このサブセットは、デバッグコードを実行できない debuggee に使用できます (コアファイルや、ハングしているプロセス、デバッグモードで開始されていないプロセスなど)。このサブセットを使用して、このような debuggee のデバッグに使用できる JDI コネクタを作成できます。
コネクタとトランスポート用のサービスプロバイダインタフェースを使用すると、デバッガベンダーや一般ユーザーは、独自の JDI コネクタとトランスポートを作成し、それらを JPDA 参照実装に組み込むことができます。たとえば、デバッガと debuggee 間の通信を行うための SSL を使用するためにコネクタを提供できます。
JDI は、新しい言語機能 (汎用型、列挙、および変数引数) をサポートします。
JPDA の最下層である Java Virtual Machine Debugger Interface (JVMDI) は推奨されていませんでしたが、J2SE の次のメジャーリリースで削除される予定です。これに置き換わるものは、Java Virtual Machine Tool Interface (JVMTI) です。これは、プロファイリング、デバッグとも可能にする、より一般的なインタフェースです。現在のプロファイリングインタフェースである Java Virtual Machine Profiling Interface(JVMPI) も推奨されておらず、次のメジャーリリースで削除される予定です。
JPDA 参照実装には、コアファイルやハングしたプロセスのデバッグを可能にする新しい JDI コネクタが含まれます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jpda/index.html にあるドキュメントを参照してください。
コンパイラには、次のオプションがあります。
-source 1.5 - ソースファイル内で 1.5 固有の言語機能を使用できます (-target 1.5 は暗黙的に設定)。
-target 1.5 - ライブラリと仮想マシン内で javac が 1.5 固有の機能を使用できます。
-Xlint - 正当であるが疑わしく、問題を引き起こしがちであるというプログラム構造について、javac が警告メッセージを生成できます。この例として、Serializable を実装するが serialVersionUID を定義しないクラスの宣言があります。
-d32 - 32 ビットの Solaris または Linux プラットフォームを示します。
-d64 - 64 ビットの Solaris または Linux プラットフォームを示します。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/solaris/javac.html にあるマニュアルページドキュメントを参照してください。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/javadoc/whatsnew-1.5.0.html にある 「Javadoc 5.0 の新機能」 を参照してください。
apt は、注釈処理用の新しいコマンド行ユーティリティです。これには、プログラムの注釈を処理するためのリフレクト API セットとサポート用インフラも含まれます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/apt/index.html にあるドキュメントを参照してください。
詳細については、http://java.sun.com/j2se/1.5.0/system-configurations.html を参照してください。
J2SE 5 では、Suse Linux または Windows 2003 を使用したサーバー VM で AMD Opteron プロセッサがサポートされます。