|
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
フォーカスの移動
次の 4 つのメソッドが新たに追加されました。
- KeyboardFocusManager.getDefaultFocusTraversalPolicy
- KeyboardFocusManager.setDefaultFocusTraversalPolicy
- Container.getFocusTraversalPolicy
- Container.setFocusTraversalPolicy
これらのメソッドは、以前はほとんどのアプリケーションのニーズには適切とは言えない動作と仕様が規定されていました。こうした仕様は以前は、独自のポリシーを明示的に設定 (Container.setFocusTraversalPolicy への呼び出しによる) していないすべてのコンテナのフォーカスポリシーを変更する (KeyboardFocusManager.setDefaultFocusTraversalPolicy への呼び出しによる) グローバルメカニズムとしてメソッドを宣言していたのです。
今回の API の変更では、上記 4 つのメソッドの仕様と動作が更新され、コンポーネントがそれらの内部フォーカスポリシーを KeyboardFocusManager で指定されているデフォルト値から、初期設定時に一度だけ初期化できるように変更されました。このため、100% AWT のアプリケーションの一部として作成されたコンポーネントには、その起動時から存在期間が終了する時点まで AWT ポリシーを保持し、ユーザが呼び出す他の API の影響を受けません。
この変更に関連するバグレポートは 4510221 です。
java.awt.color.ICC_ColorSpace.fromRGB(float[] rgbvalue)
このメソッドの以前の仕様では、rgbvalue 配列の長さが 3 またはそれ以上でないときに例外をスローすることが規定されていませんでした。今回の API の変更で、このメソッドはこのような条件のときに ArrayIndexOutOfBoundsException がスローされるように規定されました。この変更は、以下のメソッドにも適用されます。java.awt.color.ColorSpace
java.awt.color.ICC_ColorSpace
- public abstract float[] toRGB(float[] colorvalue)
- public abstract float[] toCIEXYZ(float[] colorvalue)
- public abstract float[] fromCIEXYZ(float[] colorvalue)
- public float[] toRGB(float[] colorvalue)
- public float[] toCIEXYZ(float[] colorvalue)
- public float[] fromCIEXYZ(float[] colorvalue)
この変更に関連するバグレポートは 4507236 です。
1.4 で行われたコレクション API に対する改善事項の一部として、静的メソッドが java.util.Collections に追加されました。バグレポート 4513189 では、このリストのドキュメントに、ArrayList が返されて、メソッドシグニチャーがList list(Enumeration e)に変更される、と明確に規定されています。ArrayList list(Enumeration e)この変更に関連するバグレポートは 4531626 です。
- 以前の保守レビュー用マテリアルには、仕様に準拠するために必要ないくつかの org.omg.DynamicAny.*Helper クラスおよびスタブクラスが含まれていませんでした。 これらを J2SE 1.4 仕様に追加する計画です (New DynamicAny Classes を参照してください)。
この変更に関連するバグレポートは 4491742 です。
- J2SE 1.4 の最終テストでは、長い間存在していたドキュメントのエラー (J2SE 1.3 のときからあります) が発見されました。実際は、リファレンス実装 (RI) には存在しない
org.omg.CORBA.Initializerとorg.omg.CORBA.Repositoryという 2 つのクラス 向けの API 仕様を不注意にも配布していました。クラスドキュメントは、構築プロセスでのエラーが原因で不正に配布されていました。ドキュメントのバグを修正するために、これら 2 つのクラスの定義を J2SE 1.4 の API 仕様から削除しました。サードパーティの ORB ベンダーは、希望すれば J2SE プラットフォームのトップにこれらのクラス実装を独自に配置できることに注意してください。
この変更に関連するバグ ID は、4532485 です。
- Beta サイクル中に、J2SE 1.4 の API 仕様の一部として org.omg.IOP および org.omg.PortableServer のマイナークラスがいくつか不注意により含まれていました (Classes Removed from Specification を参照してください)。
このバグを修正するために、これらのクラスの定義を J2SE 1.4 の javadoc から削除する計画です。サードパーティの ORB ベンダーは、希望すれば J2SE のトップにこれらのクラス実装を独自に配置できることに注意してください。
この変更に関連するバグ ID は、 4599866 です。
- このリリースでは、J2SE コアに以下の API が含まれています。
- CORBA 2.3 仕様の第 25 章 (「IDL と Java のマッピング」) で定義されている org.omg.PortableServer および org.omg.PortableServer.portable のすべての Java API。これらは PortableObject アダプタ用の Java API です。
- CORBA 2.3 仕様の第 11 章 (「ポータブルオブジェクトアダプタ」) で定義されている、すべての IDL API 用の標準的な Java マッピング。
この変更に関連するバグ ID は、 4227147 です。
- J2SE 1.4 Beta 3 のフィードバックとして、カスタマから、2 つの役立つヘルパークラスが POA サポートに不足していることが報告されました。 これら 2 つのクラスは OMG で指定されており、J2SE 1.4 の POA 実装の一部として含まれていなくてはなりません。
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 です。
ドラッグ&ドロップ機能に以下の変更が追加されました。
- 次の 4 つのドラッグ&ドロップイベントクラスに関して、以前の API 仕様は、本質的に不完全で矛盾がありました。 java.awt.dnd.DragSourceDragEvent、java.awt.dnd.DragSourceDropEvent、 java.awt.dnd.DropTargetDragEvent、および java.awt.dnd.DropTargetDropEvent。 特に、次の 2 つのことが挙げられます。
- java.awt.dnd.DragSourceDragEvent.getTargetActions() と getDropAction() の仕様が同一で、その一方、実装結果が異なる。
- java.awt.dnd.DropTargetDropEvent.getSourceActions() と getDropAction() の仕様が同一である。
それ以外のことは、主に Javadoc 仕様の詳細レベルが不十分であるために発生しました。そのため、ユーザが選択するドロップアクションと、ソースおよびターゲットがサポートするドロップアクションの特定の組み合わせにおいて、メソッドがどんな値を戻すか判断できませんでした。
この API の変更により一般に、詳細レベルが十分に提供されるなら、API 仕様が明確に制定されます。これを可能にするために、"最小公倍数" 規則に従って、クロスプラットフォームの一致を実現しました。幸運にも、これはマイナーな実装の変更で実現でき、機能を削減する必要はありません。プラットフォーム間の矛盾のそれぞれの場合で、いずれか一方のプラットフォームで発生する挙動に従うことが常に可能です。
この API の変更により、次の仕様が更新されます。
- java.awt.dnd.DragSourceDragEvent
- java.awt.dnd.DragSourceDragEvent.DragSourceDragEvent(DragSourceContext, int, int, int)
- java.awt.dnd.DragSourceDragEvent.DragSourceDragEvent(DragSourceContext, int, int, int, int, int)
- java.awt.dnd.DragSourceDragEvent.getTargetActions()
- java.awt.dnd.DragSourceDragEvent.getUserAction()
- java.awt.dnd.DragSourceDragEvent.getDropAction()
- java.awt.dnd.DragSourceDropEvent.getDropSuccess()
- java.awt.dnd.DragSourceDropEvent.getDropAction()
- java.awt.dnd.DragSourceContext.getSourceActions()
- java.awt.dnd.DropTargetDragEvent
- java.awt.dnd.DropTargetDragEvent.DropTargetDragEvent(DropTargetContext, Point, int, int)
- java.awt.dnd.DropTargetDragEvent.getSourceActions()
- java.awt.dnd.DropTargetDragEvent.getDropAction()
- java.awt.dnd.DropTargetDropEvent
- java.awt.dnd.DropTargetDropEvent.DropTargetDropEvent(DropTargetContext, Point, int, int)
- java.awt.dnd.DropTargetDropEvent.DropTargetDropEvent(DropTargetContext, Point, int, int, boolean)
- java.awt.dnd.DropTargetDropEvent.getSourceActions()
- java.awt.dnd.DropTargetDropEvent.getDropAction()
この変更に関連するバグレポートは 4285634 です。
- Win32 プラットフォームでは、システムクリップボードはその時点で使用している 1 つのアプリケーションからのみアクセス可能です。別のアプリケーションがシステムクリップボードにアクセスしようとすると、 Clipboard.setContents() および Clipboard.getContents() で失敗します。 これら 2 つのメソッドが失敗した結果として、IllegalStateException がスローされますが、以前、この例外については文書化されていませんでした。今回の変更で、setContents() および getContents() の仕様にこの例外が文書化されています。
この変更に関連するバグレポートは 4475489 です。
JNI バージョン番号はインクリメントされています。インクルードファイル jni.h は、新しい定数を定義します。#define JNI_VERSION_1_4 0x00010004GetVersion プロシージャが、この値を戻すようになりました。
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 です。
- Socket.setReuseAddress(boolean on)
- ServerSocket.setReuseAddress(boolean on)
- DatagramSocket.setReuseAddress(boolean on)
DatagramPacket.setSocketAddress(SocketAddress address)
新しい DatagramPacket.setSocketAddress(SocketAddress address) は、アドレスがサブクラスで処理方法の分からないものであると、SocketException ではなく IllegalArgumentException をスローします。このため、このメソッドはどのような種類の SocketException もスローしなくなりました。この変更に関連するバグレポートは 4507501 です。
以下の変更が NIO に追加されました。
- java.nio.channels.FileChannel.transferFrom および transferTo メソッドは、int 型のパラメータ count を持っていました。 これは、231-1 バイトよりも大きいファイルには不十分です。そのため、これらのパラメータは long 型に変更されました。
読み取り専用バッファの array メソッドおよび arrayOffset メソッドは、ReadOnlyBufferException をスローするように改訂されました。また、読み取り専用バッファの hasArray メソッドは、常に false を戻すようになりました。 影響を受けるバッファは、ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、 FloatBuffer、および DoubleBuffer です。 これらのクラスも java.lang.Comparable インタフェースを実装するようになりました。
- Pipe.SinkChannel が GatheringByteChannel および InterruptibleChannel インタフェースを実装するようになりました。 Pipe.SourceChannel が ScatteringByteChannel および InterruptibleChannel インタフェースを実装するようになりました。
Swing に以下の変更が追加されました。
- J2SE 1.4 では、JToolBar がロールオーバーツールバーボタンをサポートするようになりました。つまり、このプロパティが「true」の場合、ツールバーの上にマウスを移動したときにのみツールバーの輪郭が現れます。 最新のユーザインタフェースの多くが、このパラダイムを使用しており、これにより、 Swing の見た目がより現代的なユーザインタフェースが構築されます。
以前、この機能は、初期のバージョンの Metal LAF にしかありませんでしたが、Basic LAF に受け継がれました。そのため、新しい Microsoft Windows LAF がこの機能をサポートします。
この機能をオンまたはオフにする手順は、JToolBar インスタンスの無名クライアントプロパティ中に埋め込まれました。
toolbar.putClientProperty("JToolBar.isRollover"), Boolean.TRUE);この機能は、『JLF Design Guidelines』マニュアルで文書化されているだけなので、広く使用されていません。
上記のようなクライアントプロパティを呼び出す JToolBar の特定 API がある場合は、この機能がかなり顕著になる可能性があります。
この API の変更により、以下が javax.swing.JToolBar に追加されます。
この変更に関連するバグレポートは 4485409 です。
- 4290529 の一部として、新しい ComponentUI クラス SpinnerUI を作成しました。アクセス可能性を考慮して、javax.swing.plaf.multi には、すべての ComponentUI クラスのサブクラスが含まれており、これらのサブクラスは任意の数の ComponentUI 実装に多重化されます。その時点では MultiSpinnerUI の実装を作成しなかったため、この実装は 4290529 の要求には含まれていませんでした。 今回の API の変更により、新しいクラス javax.swing.plaf.multi.MultiSpinnerUI が追加されました。
この変更に関連するバグレポートは 4532451 です。
- 以下のメソッドは、デフォルトのテーブルから各国語の String を取得することを反映して、API 仕様が更新されました。
この変更に関連するバグレポートは 4529686 です。
[an error occurred while processing this directive]