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 の文書を参照してください。