Java

J2SETM 1.4 Release Candidate および最終リリースでの変更点

英語版

このドキュメントでは、J2SETM 1.4 Release Candidate および最終リリースで導入された変更点について説明します。以下のドキュメントも参照してください。
J2SE 1.3 以降に追加された新機能の要約
J2SE 1.4 Beta 2 での変更点
J2SE 1.4 Beta 3 での変更点

目次

AWT
Java 2DTM テクノロジ
コレクション
CORBA / IDL / RMI-IIOP
JDBCTM テクノロジ
ドラッグ&ドロップ
JNI
ネットワーク機能
NIO
Swing

AWT

フォーカスの移動

次の 4 つのメソッドが新たに追加されました。

これらのメソッドは、以前はほとんどのアプリケーションのニーズには適切とは言えない動作と仕様が規定されていました。こうした仕様は以前は、独自のポリシーを明示的に設定 (Container.setFocusTraversalPolicy への呼び出しによる) していないすべてのコンテナのフォーカスポリシーを変更する (KeyboardFocusManager.setDefaultFocusTraversalPolicy への呼び出しによる) グローバルメカニズムとしてメソッドを宣言していたのです。

今回の API の変更では、上記 4 つのメソッドの仕様と動作が更新され、コンポーネントがそれらの内部フォーカスポリシーを KeyboardFocusManager で指定されているデフォルト値から、初期設定時に一度だけ初期化できるように変更されました。このため、100% AWT のアプリケーションの一部として作成されたコンポーネントには、その起動時から存在期間が終了する時点まで AWT ポリシーを保持し、ユーザが呼び出す他の API の影響を受けません。

この変更に関連するバグレポートは 4510221 です。

Java 2DTM テクノロジ

java.awt.color.ICC_ColorSpace.fromRGB(float[] rgbvalue)

このメソッドの以前の仕様では、rgbvalue 配列の長さが 3 またはそれ以上でないときに例外をスローすることが規定されていませんでした。今回の API の変更で、このメソッドはこのような条件のときに ArrayIndexOutOfBoundsException がスローされるように規定されました。この変更は、以下のメソッドにも適用されます。

java.awt.color.ColorSpace

java.awt.color.ICC_ColorSpace

この変更に関連するバグレポートは 4507236 です。

コレクション

1.4 で行われたコレクション API に対する改善事項の一部として、静的メソッド
List list(Enumeration e)
が java.util.Collections に追加されました。バグレポート 4513189 では、このリストのドキュメントに、ArrayList が返されて、メソッドシグニチャーが

ArrayList list(Enumeration e) 
に変更される、と明確に規定されています。

この変更に関連するバグレポートは 4531626 です。

CORBA / IDL / RMI-IIOP

JDBCTM テクノロジ

java.sql.CallableStatement.setNull のシグニチャーの変更

以前の java.sql.CallableStatement.setNull のシグニチャーは間違っていました。今回の API の変更で、このメソッドは void setNull(int paramIndex, int sqlType, String typeName) から void setNull(String parameterName, int sqlType, String typeName) に変更されました。

この変更に関連するバグレポートは 4522957 です。

ドラッグ&ドロップ

ドラッグ&ドロップ機能に以下の変更が追加されました。

JNI

JNI バージョン番号はインクリメントされています。インクルードファイル jni.h は、新しい定数を定義します。
    #define JNI_VERSION_1_4 0x00010004

GetVersion プロシージャが、この値を戻すようになりました。

JNI_OnLoad プロシージャの仕様が改訂されています。

    jint JNI_OnLoad(JavaVM *vm, void *reserved);

ネイティブライブラリがロードされると、VM は JNI_OnLoad を呼び出します (たとえば、System.loadLibrary を介して)。JNI_OnLoad は、ネイティブライブラリに必要な JNI バージョンを戻す必要があります。

JDK 1.1 で使用可能な JNI 関数だけでなく、J2SE リリース 1.2 で導入された JNI 関数も使用するためには、ネイティブライブラリが JNI_VERSION_1_2 を戻す JNI_OnLoad 関数をエクスポートする必要があります。

リリース 1.2 で使用可能な JNI 関数だけでなく、J2SE リリース 1.4 で導入された JNI 関数も使用するためには、ネイティブライブラリが JNI_VERSION_1_4 を戻す JNI_OnLoad 関数をエクスポートする必要があります。

ネイティブライブラリが JNI_OnLoad 関数をエクスポートしない場合、VM は、ライブラリが JNI バージョンの JNI_VERSION_1_1 だけを必要とすると想定します。VM が JNI_OnLoad で戻されるバージョン番号を認識しない場合は、ネイティブライブラリはロードされません。

この変更に関連するバグレポートは 4526746 です。

ネットワーク機能

setReuseAddress(boolean)/getReuseAddress

1.4 では、setReuseAddress(boolean)/getReuseAddress メソッドが java.net.{Socket,ServerSocket,DatagramSocket} クラスに追加され、SO_REUSEADDR ソケットオプションの設定と照会が可能になりました。

ただし、これらのメソッドの以前の仕様は不完全で、互換性の観点から検証することが困難でした。

今回の API の変更では、次の 3 つのメソッドが再指定されています。

これらの変更に関連するバグレポートは 4509604 です。

DatagramPacket.setSocketAddress(SocketAddress address)

新しい DatagramPacket.setSocketAddress(SocketAddress address) は、アドレスがサブクラスで処理方法の分からないものであると、SocketException ではなく IllegalArgumentException をスローします。このため、このメソッドはどのような種類の SocketException もスローしなくなりました。

この変更に関連するバグレポートは 4507501 です。

NIO

以下の変更が NIO に追加されました。

Swing

Swing に以下の変更が追加されました。

[an error occurred while processing this directive]