Sun Java Solaris Communities My SDN Account Join SDN
 
Release Notes - 1.4.2

 

リリースノート
Java 2 SDK, Standard Edition
Version 1.4.2

 英語版
はじめに

OS とハードウェアプラットフォーム
Solaris 2.6 オペレーティング環境の非サポート
Linux 使用時の注意
仮想マシン
HotSpot VM
コアライブラリ
ネットワーク
New I/O (NIO)
セキュリティ
国際化
JAXP
Microsoft Windows でのプラットフォームのタイムゾーンの検出
Windows XP の Samba マウントドライブのディレクトリ
直列化
浮動小数点例外
統合ライブラリ
CORBA、Java IDL、および Java RMI-IIOP
Java Naming and Directory Interface API
ユーザインタフェース
Java Sound テクノロジ
Java 2D テクノロジ
日本語ロケールのフォント
インプットメソッド
AWT
Swing
配備
アプレット
Java Plug-in テクノロジ
Java Web Start テクノロジ
Java Update
ツールとツールアーキテクチャ
Java Platform Debugger アーキテクチャ
Java Virtual Machine Profiler インタフェース
Java コンパイラ (javac)
Javadoc ツール
Jarsigner ツール
ツールの互換性
Sun ONE Studio (旧称 Forte for Java) と NetBeans
libsafe ライブラリ

はじめに

Java 2 SDK, Standard Edition, v1.4.2 は、Java プラットフォームのアップグレードリリースであり、多方面にわたる新機能および拡張機能を実現しています。

このドキュメントでは、v1.4.2 における既知のバグとその回避策、その他の重要な問題について簡単に説明します。 詳細については、次のリンクのページを参照してください。

J2SE 1.4.2 プラットフォームでの拡張と変更

最初の 1.4.2 リリースでのバグ修正

以降の 1.4.2 アップデートリリースでのバグ修正

1.4.2 Beta リリースでのバグ修正

J2SE 1.4.2 と旧バージョン間の互換性

J2SE ソフトウェアのバージョン番号を確認するには、次のコマンドを使用します。

java -version

OS とハードウェアプラットフォーム

Solaris 2.6 オペレーティング環境の非サポート

J2SE 1.4.1 または 1.4.2 では、Solaris 2.6 オペレーティング環境はサポートされません。これに伴い、J2SE 1.4.1 または 1.4.2 プラットフォームでは、Motif 1.2 もサポートされません。

Linux 使用時の注意

以下は、Linux プラットフォーム上でこのリリースを使用する際の注意点です。
  • 以下に示す問題は、マルチプロセッサシステム上で断続的に発生します。これらの問題の回避策はなく、解決するには Linux システムをアップグレードする必要があります。現在のところ、64 ビット Itanium システムの Linux 用に利用可能なパッチはありません。 ただし、Itanium システムでプロセッサを 1 つだけ使用することで、これらの問題を避けることができます。
    • バージョン 2.2.4 以前の glibc 2.2 のバグは、残った実行スレッドが 1 つだけになると仮想マシンを終了させる可能性があります。この問題は、バージョン 2.2 から 2.2.4 の glibc を含む Red Hat 7.0、7.1、および 7.2などの Linux プラットフォームに影響を及ぼすことがあります。この問題は、glibc 2.2.5 では修正されています。バグレポート 4656697 を参照してください。
    • Linux 2.4 SMP カーネルは重複 PID を発生することがあり、ネットワークエラーからクラッシュまで引き起こす可能性があります。この問題は、カーネル 2.4.18 では修正されています。バグレポート 4650839 および 4682743 を参照してください。
    • Linux 2.4.9 カーネルの既知のバグにより、Java プラットフォーム上で実行中のアプリケーションがすべての CPU リソースを消費し、その結果ハングアップすることがあります。この問題は、バグレポート 4701394 として追跡されています。

  • CONFIG_IP_TRANSPARENT_PROXY オプションを使用してカーネルをコンパイルした任意の Linux バージョンでスーパーユーザとして実行する場合、API 仕様に準拠する動作は保障されません。RedHat 6.2 ディストリビューションに同梱されているデフォルトのカーネルは、このオプションを使用してコンパイルされています。これに関連する非互換性の問題を回避するには、スーパーユーザで Java プラットフォームを使用しない、またはカーネルを CONFIG_IP_TRANSPARENT_PROXY オプションを使用せずにコンパイルした Linux オペレーティングシステムにアップグレードしてください。バージョン 2.4 のカーネルとともに提供されている Red Hat 7.1 では、この問題は発生しません。

  • 日本語 Red Hat 7.x はデフォルトでは JIS X 0201 の TrueType フォントを持っていないので、日本語フォントプロパティファイル font.properties.jaには JIS X 0201 が定義されていません。この問題を回避するには、TrueType JIS X 0201 フォントをインストールし、適宜 font.properties.ja ファイルを変更します。

  • 64 ビットの Itanium Linux プラットフォームでは、drawString メソッドで日本語の文字が正しく表示されない場合があります。バグレポート 4704500 を参照してください。

「インストールガイド Linux 版」の既知の問題の節も参照してください。

仮想マシン

HotSpot VM

以下はこのリリースの Java HotSpot 仮想マシン (VM) についての注です。
  • J2SE 1.4.1 から、Java HotSpot Server VM は SPARC® v8 アーキテクチャのチップでの動作をサポートしなくなりました。SPARCstation® プロセッサファミリ (SPARCstation Workstation、SPARCstation Classic、SPARCstation 2、SPARCstation 4、SPARCstation 5、SPARCstation 10、SPARCstation 20、および SPARCstation® Voyager プロセッサなど) が、この変更の影響を受けます。 Java HotSpot Client VM は、SPARC v8 プラットフォームでの動作をサポートします。 サーバ VM およびクライアント VM の詳細は、Java HotSpot VM のドキュメントを参照してください。

    UltraSPARC® プロセッサは、この変更の影響を受けません。

  • 内部整合性検査の一環として、VM は VirtualAlloc により返されたアドレスの妥当性を検証します。32 ビットの Windows XP x86 OS 上で稼働する VM は、ビット 24 からビット 31 がすべて 1 に設定されているアドレスを拒否するのに対し、64 ビットの XP Intel Itanium 64 上で稼働する VM は、ビット 24 からビット 63 がすべて 1 に設定されているアドレスを拒否します。32 ビットの Windows XP では、ビット 31 が 1 に設定されたアドレスは予約されているため、これは妥当な検査です。64 ビットの Windows XP ではこれは当てはまらず、非常にまれにアサーション障害が発生することがあります。この問題は、将来のリリースで修正される予定です。

  • Java HotSpot VM は、メモリが完全に割り当てられていて、使用可能なスワップ空間がない場合は、そのヒープサイズを拡張できません。これは、たとえばいくつかのアプリケーションが同時に動作している場合などに起こり得ます。その場合、VM は次の例のようなメッセージを出力して終了します。
       Exception java.lang.OutOfMemoryError: requested <size> bytes
    
    このような状態になった場合は、仮想メモリをより多く割り当てたり、同時に実行するアプリケーションの数を制限したりして、利用可能なスワップ空間を増やしてみてください。または、コマンド行フラグ -Xmx-Xms を同じ値に設定して、VM がヒープの拡張を行うことを防止するという方法もあります。ただし、使用可能なスワップ空間がない場合は、単に -Xmx の値を増加させても意味がないので注意してください。

    この問題は、バグ 4697804 として追跡中です。

  • HotSpot Server VM のバグは、IA32 で浮動小数点の SSE 命令を使用することに関係があります。この問題は、Pentium 3 または Pentium 4 のコンピュータで、ガベージコレクション用に実行中の JIT コンパイルされたメソッドが停止した際、浮動小数点データがレジスタに入っていると発生することがあります。この問題が発生しているプログラムでは、間違った浮動小数点値が生成される可能性があります。この問題を回避するには、コマンドラインオプション「-XX:UseSSE=0」を指定します。

    この問題は、バグ 4828693 として追跡中です。

コアライブラリ

ネットワーク

このリリースのネットワーク機能に関する既知のバグおよびそのほかの問題については、ネットワークに関するリリースノートを参照してください。

ネットワークの拡張機能と変更も参照してください。

New I/O (NIO)

  • 次のバグは、1.4.2 にも依然として存在します。 ファイルロック操作の割り込みの実装が不完全である (バグ 4460065)

  • J2SE 1.4.2 では、java.nio.charset API から ISO-2022-CN-CNS と ISO-2022-CN-GB の両方のエンコーディングサポートが削除されました。ただし、java.io または java.lang.String の API を使って入力ストリームまたは String をこれらのエンコーディングにエンコードすることは可能です。J2SE 1.4.1 では、制限された (不完全な) ISO-2022-CN-* の java.nio.charset サポートをプレビューしました。この制限には、相互変換が実行できないことや、バグ 4737614「"sun.nio.cs.ext.ISO2022_CN_CNS.newDecoder() returns null」があります。

v1.4.2 での変更点については、NIO の拡張機能と変更を参照してください。NIO の情報については、NIO ドキュメントのメインページおよび補足ページを参照してください。

セキュリティ

次は、このリリースのセキュリティに関する注です。
  • UNIX プラットフォームでは、Sun の SecureRandom 実装は、可能な場合 /dev/random を使って自身をシードします。この方法では、暗号化アプリケーションの起動時間を大幅に短縮できますが、カーネルエントロピプールが空の場合は遅延の原因になります。Solaris 8 でこの問題が発生した場合は、パッチ 112438-01 (SPARC) または 112439-01 (x86) がインストールされていることを確認します。<java.home>/lib/security/java.security ファイルを編集して、シード用の別の URL を指定することもできます。URL を開けない場合は、デフォルトの実装が pure Java シード実装になります。
  • Sun の JSSE v1.0、v1.0.1、および v1.0.2 に存在するバグのため、DSA 署名を DSA サーバキー交換メッセージの一部に使用した場合、SSL_DHE_DSS_* 暗号スイートによりこれらの署名の不正な符号化が行われます。

    相互運用システムプロパティにより、アクティブな動作が制御されます。これは、Sun の JSSE 1.0.2 で導入されたプロパティです。

com.sun.net.ssl.dhKeyExchangeFix
 true  適正な動作を使用する (JSSE 1.0.3 と連携可能)
 false  「壊れた」動作を使用する (JSSE 1.0、1.0.1、1.0.2 と連携可能)

下位互換性を維持するため、J2SDK 1.4 以降の SunJSSE プロバイダもこのプロパティを保持します。デフォルト値は true です。

 リリース  デフォルトの動作  スイッチ
 J2SDK 1.4.0 以降  適正動作  true
 JSSE 1.0.3  適正動作  true
 JSSE 1.0.2  「壊れた」動作  false
 JSSE 1.0.1  「壊れた」動作  なし
 JSSE 1.0  「壊れた」動作  なし

  • RSA ベースの PreMasterSecret を交換する場合、 RFC 2246-TLSv1 により、PreMasterSecret メッセージにクライアントがサポートする最新バージョンを含めるべきことが指定されています。SSL 実装の中には、適正なメッセージを送信するものがある一方で、現行セッションのバージョン番号 (不正) を送信するものがあります。大半のサーバは、どちらのタイプのメッセージも受け付けます。

    これらの違いは、サーバがサポートしない特定のプロトコルをクライアントが要求するかどうか、その結果としてサーバがより小さいバージョン番号を要求して、一方のメッセージタイプだけ (適正または不正) を受け付けるかどうかという点だけです。

    J2SDK 1.4.1 または 1.4.2 の SunJSSE を使用するサーバは、どちらのタイプのメッセージも受け付けます。

    J2SDK 1.4.0 の JDK 内の SunJSSE を使用するサーバは、不正なメッセージタイプだけを受け付けます (現在のところ、一般に使用されている Web ブラウザの大半は不正なメッセージを送信します)。

    J2SDK 1.4.1 または 1.4.2 の SunJSSE を使用するクライアントは、次のシステムプロパティを使用して、アクティブなメッセージタイプを制御できます。

com.sun.net.ssl.rsaPreMasterSecretFix
true  RFC 2246 に基づく適正動作を使用
false  不正な動作を使用

大半のサーバがいずれかのメッセージタイプを受け付ける場合、J2SDK 1.4.0 の SunJSSE を使用するサーバと連携するために、デフォルトは false になります。

 リリース  デフォルトの動作  スイッチ
 J2SDK 1.4.1 および 1.4.2  不正な動作  false
 J2SDK 1.4.0  不正な動作  なし


国際化

国際化の拡張機能と変更を参照してください。

JAXP

仕様バージョン: 1.1
リファレンス実装 (RI) バージョン: 1.1.4

XML 構文解析

このリリースには、Apache Crimson-1.1.3+ (制御バグが修正された Crimson 1.1.3 最終バージョン) が付属しています。

注:

  • プラグイン可能なパーサをサポートするため、2 つのファクトリクラスが用意されています。アプリケーションで javax.xml.parsersorg.xml.saxorg.w3c.dom DOM Level 2 Core パッケージ内の JAXP API しか使用しない場合は、基本となる実装パーサごとに独立した方法でライブラリを使用できます。

既知のバグと最新の修正情報については、http://xml.apache.org/crimson/index.html を参照してください。 最新の JAXP リリースの詳細については、JAXP FAQ を参照してください。

セキュリティの問題

XML では、再帰的なエンティティ定義はできませんが、入れ子構造のエンティティ定義は可能です。このため、外部ソースの XML データを受け付けるサーバは、「サービス妨害攻撃」を受ける可能性があります。たとえば次の SOAP ドキュメントのエンティティ定義は、非常に深い入れ子構造になっています。このようなドキュメントでは、エンティティを展開する際、CPU 負荷率が 100% になり多くのメモリが消費されます。

<?xml version="1.0" encoding ="UTF-8"?>
<!DOCTYPE foobar[
<!ENTITY x100 "foobar">
<!ENTITY x99 "&x100;&x100;">
<!ENTITY x98 "&x99;&x99;">
...
<!ENTITY x2 "&x3;&x3;">
<!ENTITY x1 "&x2;&x2;">
]>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=...>
<SOAP-ENV:Body>
<ns1:aaa xmlns:ns1="urn:aaa" SOAP-ENV:encodingStyle="...">
<foobar xsi:type="xsd:string">&x1;</foobar>
</ns1:aaa>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

外部 XML データを受け付けないシステムでは、この問題について特に考慮する必要はありません。次のいずれかの方法で、問題の発生を防ぐことができます。

新しいシステムプロパティを使ってエンティティの展開を制限する
システムプロパティ entityExpansionLimit を設定すると、既存のアプリケーションのコードを再コンパイルすることなく、展開するエンティティの合計数を制限できるようになります。展開エンティティ数が上限に達すると、パーサから致命的なエラーがスローされます。デフォルトでは、展開エンティティ数は制限されていません。展開エンティティ数を制限すると、XML パーサが XML 1.0 仕様に準拠しなくなるためです。

展開エンティティ数を制限するには、Java コマンド行に次のようなオプションを入力して、システムプロパティを設定します。
-DentityExpansionLimit=100000
 
新しいパーサプロパティを使って DTD の使用を禁止する
パーサプロパティ http://apache.org/xml/features/disallow-doctype-decl を True に設定することもできます。このように設定した場合、DOCTYPE 宣言を含む XML ドキュメントを受信すると、致命的なエラーがスローされます。なお、このプロパティのデフォルト値は False です。このプロパティは、通常、文書タイプ定義 (DTD) を含む SOAP メッセージを受け付けない SOAP ベースのアプリケーションで使用すると便利です。

XSLT 処理

JAXP RI には、解釈変換エンジン Xalan が付属しています。ここでは、次の項目について説明します。

  • 解釈 XSLT プロセッサ (Xalan)

注:
XSLT は、JAXP 変換パッケージによってサポートされます。実装に依存しないで XSLT の基本機能にアクセスする方法の詳細については、javax.xml.transform を参照してください。

解釈 XSLT プロセッサ (Xalan)

この実装には、xalan-j 2.4.1+ (制御バグが修正された Xalan バージョン 2.4.1) が付属しています。詳細については、Apache の Xalan サイトを参照してください。

その他の既知のバグの最新の修正情報については、Xalan の Read Me (http://xml.apache.org/xalan-j/readme.html) を参照してください。

カスタムクラスローダの問題

変換ファクトリでカスタムクラスローダを使用すると、問題が発生することがあります。

JAXP の変換ファクトリは、「システムクラスローダ」よりも「コンテキストクラスローダ」を優先します。このため、カスタムクラスローダを使用するアプリケーションでは、カスタムクラスローダを変換ファクトリが使用するコンテキストクラスローダに設定する必要があります。現在のスレッドにカスタムクラスローダを設定する方法は、次のとおりです。

try {
  Thread currentThread = Thread.currentThread();
  currentThread.setContextClassLoader(customClassLoader);
}
catch (SecurityException e) {
  // ...
}

マルチスレッドアプリケーションでは、すべてのスレッドに (新しいスレッドを作成するたびに) カスタムクラスローダを設定する必要があります。アプリケーションにコンテキストクラスローダを設定する権限がない場合、セキュリティ例外がスローされます。

Microsoft Windows でのプラットフォームのタイムゾーンの検出

Microsoft Windows オペレーティングシステムのインストールで、夏時間を使用しないタイムゾーン (例: 東京、大阪、札幌) を選択した場合、[自動的に夏時間の調整をする] のグローバルシステム設定がオフになります。このように設定された場合、Java ランタイムは、タイムゾーン ID (例: Asia/Tokyo) としてではなく、GMT オフセット形式 (例: GMT+09:00) でプラットフォームのタイムゾーンを検出します。このインストール上の問題を解決するには、意図的に設定をオフにする場合を除いて、インストールの終了後に以下の手順で設定を変更します。
  1. コントロールパネルにある [日付と時刻] を開きます。
  2. [タイムゾーン] タブにある夏時間を使用するタイムゾーン (例: (GMT-08:00) 太平洋標準時 (米国およびカナダ);ティファナ) を選択し、次に [自動的に夏時間の調整をする] チェックボックスの選択をオンにしてから [適用] ボタンを押します。
  3. 使用するタイムゾーンを選択し直し、[OK] ボタンを押します。

Windows XP の Samba マウントドライブのディレクトリ

Windows XP (32 ビットまたは 64 ビット版) で Samba マウントドライブを使用しているとき、FileOutputStream(name) コンストラクタが呼び出され、同じ名前の空のディレクトリが存在する場合、このディレクトリは削除されます。これは J2SE プラットフォームのバグではありませんが、バグレポート 4693219 として追跡されています。

直列化

J2SDK 1.4.0、1.4.1 または 1.4.2 により直列化された java.lang.Throwable およびサブクラス (すべての例外を含む) のインスタンスを、Internet Explorer ブラウザが使用する Microsoft Windows JDK 1.1 実装で直列化復元することはできません。この種のオブジェクトを直列化復元しようとすると、ClassNotFoundException がスローされます。この問題は、バグレポート 4634165 に記載されています。

浮動小数点例外

プロセッサの浮動小数点ユニット (FPU) には通常、特定の浮動小数点イベントでその動作を制御する制御ワードがあります。浮動小数点イベントとは、例えばオーバーフロー (有限値を超える値を生成した場合)、アンダーフロー (小さすぎる値を生成した場合)、ゼロ除算 (例: 1.0/0.0) の場合に起きるイベントです。 Java は正確にこのようなイベントの結果を定義します。 Java は、IEEE 754 浮動小数点規格のデフォルトの戻り値を使用します (例えば、オーバーフローまたはゼロ除算の場合は正の無限大または負の無限大のどちらかを生成する)。 他の言語環境では、異なる結果となる可能性があります (例えば、ゼロ除算の場合、無限大ではなく例外を生成してプログラムを停止する)。 異なる浮動小数点のセマンティクスのプログラムを Java プログラムで呼び出した場合、その呼び出されたプログラムは、自身のセマンティクスを実装するために FPU 制御ワードを変更する可能性があります。しかし、これら呼び出されるプログラムは、FPU 制御ワードを以前の値に戻すようになっていなければなりません。そのようになっていない場合は、外部プログラムの終了後、誤った浮動小数点例外とともに終了してしまう可能性があります。 市販の DLL の中には、呼び出しスレッドに戻る際に、FPU 制御ワードを元に戻さないものがあることが知られています。浮動小数点例外とともに終了してしまう場合は、その原因としてその可能性を考慮する必要があります。

この問題に関する例は、バグ 4644270 を参照してください。

統合ライブラリ

CORBA、Java IDL、Java RMI-IIOP

このリリースでは、CORBA、Java IDL、Java RMI-IIOP テクノロジにおける次のバグが修正されています。

  • バグ 4728756 が修正されました。 v1.4.1 の CopyObject は、org.jdom.Document オブジェクトに対して整列化例外をスローします。一方、v1.4.2 の CopyObject は、org.jdom.Document オブジェクトに対して整列化例外をスローしません。

  • バグ 4764130 が修正されました。 v1.4.1 では、接続中に ClientDelegate.addServiceContexts() によって SendingContextRuntime が送信されたかどうかが記録されていました。しかし、この方法では、ClientDelegate.addServiceContexts() による接続の記録が早く行われすぎる可能性があります。v1.4.2 では、最終段階で SendingContextRuntime の記録が送信されます。

  • バグ 4771005 が修正されました。 v1.4.1 では、クライアントインターセプタのインストール時に PIORB のパフォーマンスが低下するという問題がありました。v1.4.2 では、ClientRequestInterceptor 使用時の PIORB のパフォーマンスが改善されています。

  • バグ 4730878 が修正されました。 v1.4.1 の PortableRemoteObject.narrow(...) は、結果を java.rmi.Remote にキャストしていました。これに対して、v1.4.2 の PortableRemoteObject.narrow(...) は、結果を java.rmi.Remote にキャストしません。

Java Naming and Directory Interface API

JNDI の拡張機能と変更を参照してください。

ユーザインタフェース

Java Sound テクノロジ

Java Sound の拡張機能と変更を参照してください。

Java 2D テクノロジ

  • Microsoft Windows プラットフォームでは、J2SE 1.4.1 以降の Java 2D 機能は、DirectDraw および Direct3D のさまざまなオフスクリーン描画機能を使用して実装されています。このため、Direct3D ドライバにバグが存在するとシステムクラッシュ (ブルースクリーン) が発生する可能性があります。グラフィカルアプリケーション実行中にこの問題に遭遇した場合は、ドライバの更新を考慮してください。特定のカードの最新ドライバは、通常、ご使用のコンピュータ、ビデオカード、あるいはビデオチップの製造元の Web サイトから入手できます (http://www.nvidia.comhttp://www.atitech.com など)。

    Windows 2000 システムのサブセットで Direct3D を使用すると、システムクラッシュが発生することがあります (既知の問題)。その場合、アプリケーション起動時に、次のコマンド行フラグを指定してください。

    -Dsun.java2d.d3d=false
    
    このフラグは、Direct3D を強制的に無効にします。こうすることにより、Direct3D 固有の問題を回避します。

    次のフラグも使用できます。

    -Dsun.java2d.ddoffscreen=false
    
    このフラグは、オフスクリーンイメージ (Swing バックバッファなど) の DirectDraw と Direct3D を無効にします。

    それでも問題が解決されない場合は、アプリケーション起動時に次のフラグを指定してみてください。

    -Dsun.java2d.noddraw=true
    
    このフラグは、DirectDraw と Direct3D を完全に無効にします。こうすることにより、これらの API とドライバによってシステム上に生じる問題を回避します。

    パフォーマンス関連のフラグについては、ホワイトペーパー『High Performance Graphics』の「Flags for Controlling Performance and Quality」の節を参照してください (PDF 形式でも入手可能)。

  • 高速オフスクリーンの表面に単純なプリミティブを大量に描画すると、GDI リソースのリークにより、JRE がクラッシュしたり、配下のグラフィックサブシステムが破壊されたりすることがあります。この問題は、バグ 4766813 として追跡されています。 この問題を回避するには、オフスクリーンの高速化機能をオフにします。
    -Dsun.java2d.ddoffscreen=false
    

日本語ロケールのフォント

日本語版 Red Hat 7.* には、デフォルトで JIS X 0201 用の TrueType フォントが含まれないため、日本語フォントプロパティファイル font.properties.ja には JIS X 0201 の定義が含まれていません。この問題を回避するには、TrueType JIS X 0201 フォントをインストールし、それに合わせて font.properties.ja ファイルを修正する必要があります。

インプットメソッド

インプットメソッドの拡張機能と変更を参照してください。

AWT

このリリースの AWT 機能を使用する際の注意事項を以下に示します。 AWT の拡張機能と変更も参照してください。
  • アジア言語版の Windows NT がインストールされているマシンに英語版の Visual C++ 6.0 をインストールした場合、TextArea コンポーネントのアジア言語のテキストが正常に表示されないことがあります。アジア言語版の Windows NT 4.0 を実行しているマシンに Microsoft Exchange または Microsoft Office 97 をインストールした場合も、同じ問題が発生します。この問題は、日本語版 Windows NT では報告済みですが、その他の非ラテン系言語版 Windows NT (中国語版、韓国語版など) でも発生する可能性があります。

    この問題は、プログラムのインストール時に、アジア言語版 Riched32.dll ファイルが英語版 Riched32.dll ファイルで置き換えられることによって発生します。このファイルを再度アジア言語版に置き換えれば、問題は解消されます。

詳細については、AWT のリリースノートを参照してください。

Swing

  • 最近の Microsoft Windows プラットフォーム (Windows 2000、Windows XP) では、通常、ニーモニックは表示されません。これらのプラットフォームでは、alt キーを押すとニーモニックを表示できます。Swing の Windows Look & Feel では、alt キーを押してもニーモニックが表示されない場合があります。次のコードを使用すれば、この問題は解決できます。
    frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
         KeyStroke.getKeyStroke(KeyEvent.VK_ALT, Event.ALT_MASK, false),
         "repaint");
    

    この問題に関する詳細情報は、バグ情報 4736093 を参照してください。

  • テキストコンポーネントでは、キーバインドの登録に Keymap が使用されなくなりました。これは、キーバインドが InputMap と ActionMap の組み合わせに完全に移行したためです。引き続き Keymap を使用できますが、Swing が Keymap 内のバインドを登録することはありません。詳細は、バグレポート 4682626 を参照してください。

詳細については、Swing のリリースノートを参照してください。

配備

アプレット

アプレットの変更を参照してください。

Java Plug-in テクノロジ

従来のアプレット形式で、object という名前の属性を PARAM エレメントと一緒に使用すると、Sun VM で例外が発生します。「code」または「object」を指定する必要があります (両方は必要ありません) 。Microsoft VM では、例外は発生しません。これは、互換性の問題です。Sun VM で例外を回避するには、アプレットで object という名前の属性を PARAM エレメントと一緒に使用しないでください。

Java Plug-in 1.4.2 を NetscapeTM 6.x ブラウザに組み込んで使用すると、Java スクリプトからアプレットを起動する場合にブラウザのウィンドウが閉じてしまうなどの異常な動作が見られる場合があります。これは、ブラウザのバグで、Netscape 7.0 ブラウザを使用することにより回避できます。

Netscape 7 インストーラでは、「推奨」、「フルインストール」、「カスタム」の 3 種類のインストール方法を選択できます。Java Plug-in は、推奨インストールまたはフルインストールを選択した場合、Netscape 7 ブラウザでは正しく動作しないことがあります。具体的には、アプレットを起動しようとするとブラウザが閉じるという問題が発生することがあります。この問題を回避するには、Netscape 7 のインストール時に「カスタム」オプションを指定して、「品質フィードバックエージェント」をインストール対象から除外してください。

Java Plug-in のインストール時には、Web ブラウザを停止して再起動する必要があります。Microsoft Windows プラットフォームでは、Netscape 7 のクイック起動機能を使用して、ブラウザをバックグラウンドで実行しながら Plug-in をインストールすることができます。この場合は、システムトレー内のクイック起動アイコンから短時間でブラウザを起動できます。Netscape 7 を完全に停止するには、システムトレー内のクイック起動アイコンから Netscape 7 を終了する必要があります。

v1.4.1 では、Java Plug-in のキャッシュの問題により "java.lang.IllegalStateException: zip file closed" という例外が発生していましたが、この問題は v1.4.2 で修正されました。4740901 を参照してください。

このリリースでの重要なバグ修正および RFE については、Java Plug-in の拡張機能と変更を参照してください。

Java Web Start テクノロジ

Java Web Start の拡張機能と変更を参照してください。 詳細情報は、Java Web Start テクノロジ 1.4.2 リリースノートでも確認できます。

Java Update

Java Update (v1.4.2_01 以降で利用可能) は SDK/JRE の新機能です。この機能は、フレキシブルかつユーザが選択した方法で、Java の最新のアップデートを提供します。Java Update の詳細は、拡張および変更点を参照してください。

v1.4.2 の [ヘルプ] ボタンを押すと [Get Java] ボタンを参照しますが、これは v1.4.2_01 以降にのみ存在します。

ツールとツールアーキテクチャ

Java Platform Debugger アーキテクチャ

JPDA の拡張機能と変更を参照してください。

Java Virtual Machine Profiler インタフェース

JVMPI は、引き続き、システムに付属しているデフォルトのガーベジコレクタのみでサポートされます。オプションのガーベジコレクタは、JVMPI をサポートしません。注: JVMPI は、常に外部インタフェースです。JVMPI は、次のメジャーリリースで削除され、標準インタフェースに置き換えられる予定です。

Java コンパイラ (javac)

コンパイラの拡張機能と変更を参照してください。

Javadoc ツール

v1.4.2 における Javadoc の主なバグ

  • v1.4.2 では、コメントを継承できない (その他のメンバをオーバーライドしない 、実装しない、または覆い隠さない) メンバ内で {@inheritDoc} を使用すると、javadoc がハングアップします。このとき、有効なメッセージは一切表示されません。バグ4812240:

  • Internet Explorer でフレームを表示すると、メインパネルに不要な水平スクロールバーが表示されます。簡単な回避策については、バグレポートを参照してください。バグ 4852280

v1.4.2 における主なバグ修正

  • -link や -linkoffline を使用して外部メソッドへのリンクが生成されるようになった。 バグ 4615751

  • クラス / インタフェース間の相互参照が生成されるようになった。 バ グ 4628281
  • @link が -link で設定された外部クラスにリンクされるようになった。 バ グ 4652655

  • 「直列化された形式」へのリンクに、クラスへのアンカーが含まれるようになった。 バグ 4521661
Javadoc の新機能および修正されたバグは、 What's New in Javadoc 1.4.2に記載されています。

Jarsigner ツール

署名のない JAR を jarsigner で検証すると、JAR に署名がないことは表示されず、java.lang.IllegalStateException が起こります。これは、jarsigner コードの条件に反する J2SE 1.4.2 の変更が原因です。 バグ 4874885 (未公開)

ツールの互換性

Sun ONE Studio (旧 Forte for Java) と NetBeans

Sun ONE Studio 3.0, Community Edition と NetBeans 3.2.1 は、J2SDK v1.4.1 または v1.4.2 と連携して動作します。ただし、Forte for Java 2.0 と NetBeans 3.2 は、J2SDK v1.4.1 または v1.4.2 と連携して動作しません。

libsafe ライブラリ

  • libsafe ライブラリ - Avaya Labs Research から入手可能な libsafe ライブラリ 1.x の制限により、"Invalid initial heap size: -Xms8m" というメッセージが表示されて Java 2 SDK ツールの実行が失敗することがあります。-Xms オプションを明示的に指定した場合も、java アプリケーション起動ツールの実行に失敗します。この制限は、libsafe ライブラリの最新リリース (バージョン 2.0) で修正されています。libsafe ライブラリ 2.0 は、http://www.research.avayalabs.com/project/libsafe/ からダウンロードできます。