java.lang.*パッケージとjava.util.*パッケージの拡張機能

次の項目について説明します。

Java SE 8での拡張機能

配列の並列ソート

配列の並列ソート機能では、Arraysクラスで現在提供されている同じ一連のソート操作が追加されていますが、分岐/結合フレームワークを利用する並列実装も提供されます。JSR 166分岐/結合並列化共通プールを使用して配列の並列ソートを提供する新しいユーティリティ・メソッドがjava.util.Arraysに追加されました。それらのメソッドはparallelSort()と呼ばれ、すべてのプリミティブ・データ型およびComparableオブジェクト用にオーバーロードされます。詳細は、JEP 103を参照してください。

新しいメソッドについては、Javaチュートリアル(配列に関するトピックおよび分岐/結合に関するトピック)に説明されています。

標準のBase64エンコーディングおよびデコーディング

Base64エンコーディング・スキームを使用するアプリケーションには、Multipurpose Internet Mail Extensions (MIME)と、HTTPヘッダー用のエンコード・パスワードがあります。これらのアプリケーションはテキスト・データのエンコードおよびデコードを行います。Base64エンコーディングおよびデコーディング用の新しいAPIがjava.utilパッケージに導入されました。Base64クラスは、Base64データをエンコードおよびデコードするEncoderおよびDecoderインスタンスを取得するためのファクトリ・メソッドを定義します。Base64SampleおよびBase64Sample2は、Base64クラスについて記述したコード例です詳細は、「JEP 135: Base64 Encoding and Decoding」を参照してください。

符号なし算術演算のサポート

符号なし整数演算をサポートするためのメソッドがJavaライブラリに追加されました。整数は32ビットから成る数値で、そのうちの1ビットは符号用に予約されていますが、このような符号なしメソッドを使用すると、32ビットすべてを使用できるようになります。parseUnsignedLongtoUnsignedStringdivideUnsignedcompareUnsignedなどのstaticメソッドがLongクラスに追加され、divideUnsignedcompareUnsignedparseUnsignedIntremainderUnsignedtoUnsignedStringなどのメソッドがIntegerクラスに追加されました。これらのメソッドにはプリミティブ・データ型の最適化機能が含まれているため、算術演算にBigDecimalBigIntegerを使用するよりも処理速度が向上します。

Java SE 8でのその他の問題

分野: コア・ライブラリ/ java.lang.reflect
概要: 指定されたInvocationHandlerパラメータがnullの場合に、java.lang.reflect.Proxy(InvocationHandler h)コンストラクタがNullPointerExceptionをスローするようになりました。
非互換性の性質: 動作
説明: null引数で動的プロキシ・インスタンスを構成する既存のコードはNullPointerExceptionを取得するようになります。いずれにしてもそのメソッドが呼び出されたときは、nullプロキシ・インスタンスは必要がなく、NullPointerExceptionがスローされることになるため、そのように使われる可能性はほとんどないと予想されます。
RFE: 4487672

Java SE 7での拡張機能

さらに、次の拡張機能が導入されています。

分野: API:言語
Standard/Platform: Java SE 7
概要:カスタム・クラス・ローダーが非循環式のクラス・ローダー委譲モデルに準拠していない場合は、クラス・ロード時にデッドロックが発生する可能性があります。クラスの並行ロード、およびクラス・ロード操作のためのより詳細なロック・メカニズムをサポートするために、新しいAPIがjava.lang.ClassLoaderクラスに追加されました。カスタム・クラス・ローダーでこの機能を活用するには、推奨モデルと要件について「Class Loader API Modifications for Deadlock Fix」ドキュメントを参照し、カスタム・クラス・ローダーを適切に実装する必要があります。

分野: API: 言語
Standard/Platform: JDK 7
概要: 以前は、javax.lang.model.typeパッケージの2つの例外型MirroredTypeExceptionMirroredTypesExceptionは無関係でした。javac実装では、MirroredTypesExceptionがスローされるべきところでMirroredTypeExceptionがスローされていました。この問題に対処するためもあって、MirroredTypeExceptionMirroredTypesExceptionのサブクラスになりました。この変更はバイナリ互換であり、既存の注釈プロセッサの動作を通常は保持します。ただし、この変更によってクライアント・プログラムのソースの互換性が失われる可能性があります。そのような場合は、catch節の順序を変更することで、プログラムは再度コンパイル可能になるはずです。

分野: API: 言語
Standard/Platform: JDK 7
概要: このリリースの言語の変更をモデル化するために、javax.lang.model.type.TypeVisitorインタフェースにメソッドが追加されるなど、いくつかの更新がjavax.lang.model.*に加えられました。そのような追加により、TypeVisitorインタフェースを直接実装しているライブラリとはソースの互換性がなくなります。ただし、そのような追加はこのAPIの展開の一部として予見されていました。また、ライブラリはそのようなインタフェースを直接実装するのではなく、ユーティリティ・ビジターの1つを拡張するよう、明示的に警告されていました。
RFE: 6933147

分野: API: 言語
Standard/Platform: JDK 7
概要: メソッドRuntime.exec(String command, String[] envp, File dir)はコマンド文字列を、デフォルトの区切り文字セット(空白文字、タブ文字、改行文字、復帰改行文字および用紙送り文字)を使用する呼出しnew StringTokenizer(command)によって、実行可能ファイルの名前とその引数で構成されるトークンに分割します。すなわち、このメソッドは空白を区切り文字として使用して、コマンド文字列をトークンに分割します。

Windowsオペレーティング・システムでは、コマンド・パラメータを空白文字で分割するとエラーになることがあります。特に、commandパラメータに、空白を含む実行可能ファイルへのパスが含まれている場合、new StringTokenizer(command)の呼出しによって、間違った実行可能ファイル名が抽出されます。たとえば、Runtime.getRuntime().exec("C:\\My Programs\\foo.exe bar")の呼出しにより、引数Programs\foo.exeおよびbarを指定してプログラムC:\Myを起動しようとします。この呼出しは、実行可能ファイルC:\Myが見つからないことを示す例外で失敗する可能性があります。

従来のアプリケーションでセキュリティ・マネージャが使用されていない場合(クラスSecurityManagerを参照)、システム・プロパティjdk.lang.Process.allowAmbiguousCommandsfalse以外の任意の値で指定することによって、空白を含むパス名を、メソッドRuntime.execで正しく解析することができるようになります。(Javaチュートリアルのシステム・プロパティに関するトピックを参照してください。)または、パス名を引用符で囲むこともできます。たとえば、Runtime.getRuntime().exec("\"C:\\My Programs\\foo.exe\" bar")の呼出しにより、引数barを指定してC:\My Programs\foo.exeを起動しようとします。

: Update 25の後の更新では、あいまいなコマンドを許可するシステム・プロパティの名前はjdk.lang.Process.allowAmbiguousCommandsです。

分野: API: ユーティリティ
Standard/Platform: JDK 7
概要: 以前は、java.util.TreeMapのエラーのため、空のTreeMapsおよびTreeSetsに無効なnull要素やComparableを実装していない要素を挿入できました。空のTreeMapsまたはTreeSetsに無効な要素を1つだけ挿入できました。さらに要素を挿入すると、想定されたNullPointerExceptionまたはClassCastExceptionが発生していました。コレクションに対する他の操作も、ほとんど失敗していました。JDK 7以降は、空のTreeMapまたはTreeSetに無効なnull要素やComparableを実装していない要素を挿入すると、NullPointerExceptionがスローされます。RFE: 5045147

Java SE 6での拡張機能

java.util

Java SE 5.0での拡張機能

java.lang

java.lang.instrument

java.util

Java SE 1.4での拡張機能

java.lang

java.util.logging

java.util.prefs

Java SE 1.3での拡張機能

java.lang

java.util

java.util.jar
java.util.zip


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.