logo

Java 8の機能

オラクルは、2014 年 3 月 18 日に Java の新バージョンを Java 8 としてリリースしました。これは、ソフトウェア開発プラットフォーム用 Java の革命的なリリースでした。これには、Java プログラミング、JVM、ツール、ライブラリへのさまざまなアップグレードが含まれています。

Java 8 プログラミング言語の機能強化

Java 8 は、Java プログラミングに次の機能を提供します。

  • ラムダ式、
  • メソッドのリファレンス、
  • 機能的なインターフェース、
  • ストリームAPI、
  • デフォルトのメソッド、
  • Base64エンコード・デコード、
  • インターフェース内の静的メソッド、
  • オプションクラス、
  • コレクタークラス、
  • ForEach() メソッド、
  • Rhino JavaScript エンジン、
  • 並列配列ソート、
  • 注釈の入力と繰り返し、
  • IOの強化、
  • 同時実行性の強化、
  • JDBCの機能強化など

ラムダ式

ラムダ式は、関数型スタイルでコードを記述するのに役立ちます。式を使用して SAM インターフェイス (単一抽象メソッド) を実装する明確かつ簡潔な方法を提供します。これは、データの反復、フィルタリング、抽出に役立つコレクション ライブラリで非常に役立ちます。

詳細と例については、次を参照してください。 ここをクリック


メソッドのリファレンス

Java 8 メソッドリファレンスは、関数インターフェースのメソッドを参照するために使用されます。コンパクトで簡単なラムダ式です。メソッドを参照するためにラムダ式を使用するたびに、ラムダ式をメソッド参照に置き換えることができます。

詳細と例については、次を参照してください。 ここをクリック


機能インターフェイス

抽象メソッドを 1 つだけ含むインターフェイスは、関数型インターフェイスと呼ばれます。デフォルトおよび静的メソッドをいくつでも持つことができます。オブジェクトクラスのメソッドも宣言できます。

機能インターフェイスは、単一抽象メソッド インターフェイス (SAM インターフェイス) とも呼ばれます。

詳細と例については、次を参照してください。 ここをクリック


オプション

Java は、Java 8 で新しいクラス Optional を導入しました。これは、Java アプリケーションで NullPointerException を処理するために使用されるパブリックの最終クラスです。輸入しなければなりません java.util このクラスを使用するためのパッケージ。特定の変数の値の存在を確認するメソッドを提供します。

詳細と例については、次を参照してください。 ここをクリック


それぞれに

Java は、要素を反復するための新しいメソッド forEach() を提供します。これは Iterable インターフェイスと Stream インターフェイスで定義されます。

これは、Iterable インターフェイスで定義されたデフォルトのメソッドです。 Iterable インターフェイスを拡張したコレクション クラスは、forEach() メソッドを使用して要素を反復できます。

このメソッドは、関数インターフェイスである単一のパラメーターを受け取ります。したがって、ラムダ式を引数として渡すことができます。

詳細と例については、次を参照してください。 ここをクリック


日付/時刻 API

Java では、Java 8 以降、新しい日付と時刻 API が導入されました。java.time パッケージには、Java 8 の日付と時刻クラスが含まれています。

詳細と例については、次を参照してください。 ここをクリック


デフォルトのメソッド

Java は、インターフェース内にデフォルトのメソッドを作成する機能を提供します。インターフェイス内で定義され、default キーワードでタグ付けされたメソッドは、デフォルト メソッドと呼ばれます。これらのメソッドは非抽象メソッドであり、メソッド本体を持つことができます。

詳細と例については、ここをクリックしてください。


Rhino JavaScript エンジン

Nashorn は JavaScript エンジンです。 JVM (Java Virtual Machine) で JavaScript コードを動的に実行するために使用されます。 Java はコマンドライン ツールを提供します JavaScript コードを実行するために使用されます。

JavaScript コードは次の 2 つの方法で実行できます。

  1. jjsコマンドラインツールを使用し、
  2. Java ソース コードに埋め込むことによって。

詳細と例については、ここをクリックしてください。


文字列結合者

Java は、java.util パッケージに新しい最終クラス StringJoiner を追加しました。これは、区切り文字で区切られた一連の文字を構築するために使用されます。カンマ(,)、ハイフン(-)などの区切り文字を渡すことで文字列を作成できるようになりました。

ブラウザの設定はどこにありますか

詳細と例については、ここをクリックしてください。


コレクター

Collectors は、Object クラスを拡張した最終クラスです。要素をコレクションに蓄積したり、さまざまな基準に従って要素を要約したりするなどのリダクション操作を提供します。

詳細と例については、次を参照してください。 ここをクリック


ストリームAPI

Java 8 java.util.stream パッケージは、要素に対する関数型スタイルの操作を可能にするクラス、インターフェース、列挙型で構成されています。遅延計算を実行します。したがって、必要な場合にのみ実行されます。

詳細と例については、次を参照してください。 ここをクリック


ストリームフィルター

Java ストリームは、指定された述語に基づいてストリーム要素をフィルタリングするためのメソッド filter() を提供します。リストの偶数の要素のみを取得したいとします。filter() メソッドを使用すると、これを簡単に行うことができます。

このメソッドは述語を引数として受け取り、結果の要素のストリームを返します。

詳細と例については、次を参照してください。 ここをクリック


Java Base64 エンコーディングとデコーディング

Java は、暗号化と復号化を処理するクラス Base64 を提供します。そのメソッドを使用するには、ソース ファイルに java.util.Base64 クラスをインポートする必要があります。

このクラスは、各レベルで情報を暗号化するための 3 つの異なるエンコーダーとデコーダーを提供します。

詳細と例については、次を参照してください。 ここをクリック


Java 並列配列のソート

Java は、配列要素を並列にソートするために使用される Arrays クラスの新しい追加機能を提供します。 ParallelSort() メソッドが java.util.Arrays クラスに追加されました。このメソッドは、JSR 166 Fork/Join 並列処理共通プールを使用して配列のソートを提供します。オーバーロードされたメソッドです。

詳細と例については、ここをクリックしてください。


Java 8 のセキュリティ強化

1) Java Secure Socket Extension (JSSE) プロバイダーは、クライアント側でデフォルトでプロトコル Transport Layer Security (TLS) 1.1 および TLS 1.2 を有効にします。

2) 改良されたメソッド AccessController.doPrivileged が追加されました。これにより、他の権限をチェックするためのスタックの完全な走査を妨げることなく、コードがその権限のサブセットをアサートできるようになります。

3) PBEWithSHA256AndAES_128 や PBEWithSHA512AndAES_256 などの Advanced Encryption Standard (AES) およびパスワードベースの暗号化 (PBE) アルゴリズムが SunJCE プロバイダに追加されました。

4) Java Secure Socket Extension (SunJSSE) は、JDK 7 ではデフォルトでクライアント アプリケーションの Server Name Indication (SNI) 拡張機能を有効にし、JDK 8 はサーバー アプリケーションの SNI 拡張機能をサポートします。 SNI 拡張機能は、SSL/TLS プロトコルを拡張して、ハンドシェイク中にクライアントが接続しようとしているサーバー名を示す機能です。

5) SunJSSE は、Authenticated Encryption with Associated Data (AEAD) アルゴリズムをサポートするように拡張されています。 Java Cryptography Extension (SunJCE) プロバイダは、AES/GCM/NoPadding 暗号実装およびガロア/カウンター モード (GCM) アルゴリズム パラメータをサポートするように拡張されました。

6) 新しいコマンド フラグ -importpassword が keytool ユーティリティに追加されます。これは、パスワードを受け入れ、それを秘密鍵として安全に保管するために使用されます。 DKS キーストア タイプをサポートするために、java.security.DomainLoadStoreParameter や java.security.PKCS12Attribute などのクラスが追加されています。

7) JDK 8 では、メッセージ ダイジェスト実装の SHA-2 ファミリの SHA-224 バリアントによって暗号化アルゴリズムが強化されました。

8) 以下を含む NSA Suite B 暗号化のサポートが強化されました。

  • NSA Suite B 暗号化アルゴリズムの OID 登録
  • 2048 ビット DSA キー ペアの生成と、SHA224withDSA や SHA256withDSA などの 2048 ビット DSA キーの追加署名アルゴリズムのサポート。
  • Diffie-Hellman (DH) アルゴリズムのキーサイズ制限が 1024 から 2048 に解除されました。

9) SecureRandom クラスは、秘密鍵または公開鍵、暗号、署名付きメッセージに使用される暗号的に強力な乱数の生成を提供します。 getInstanceStrong() メソッドは JDK 8 で導入され、最も強力な SecureRandom のインスタンスを返します。 RSA 秘密キーと公開キーを作成する必要がある場合に使用する必要があります。 SecureRandom には、他にも次のような変更が含まれています。

  • UNIX プラットフォーム用に 2 つの新しい実装が導入され、ブロック動作と非ブロック動作を提供します。

10) PKIX アルゴリズムを使用して証明書の失効ステータスをチェックする新しい PKIXRevocationChecker クラスが含まれています。ベストエフォートチェック、エンドエンティティ証明書チェック、およびメカニズム固有のオプションをサポートします。

11) Public Key Cryptography Standards 11 (PKCS) は、Windows の 64 ビット サポートを含むように拡張されました。

12) 2 つの新しい rcache タイプが Kerberos 5 に追加されました。type none は rcache がまったくないことを意味し、type dfl は DFL スタイルのファイルベースの rcache を意味します。また、アクセプタが要求したサブキーもサポートされるようになりました。これらは、sun.security.krb5.rcache および sun.security.krb5.acceptor.subkey システム プロパティを使用して構成されます。

13) JDK 8 では、Kerberos 5 プロトコルの移行と制約付き委任が同じレルム内でサポートされます。

14) Java 8 では、デフォルトで弱い暗号化が無効になっています。 DES 関連の Kerberos 5 暗号化タイプは、デフォルトではサポートされていません。これらの暗号化タイプは、krb5.conf ファイルにallow_weak_crypto=true を追加することで有効にできます。

15) サーバー名を null に設定して、バインドされていないサーバーを示すことができます。これは、クライアントが任意のサーバー名を使用してサービスを要求できることを意味します。コンテキストが確立されると、サーバーはキー名 SASL.BOUND_SERVER_NAME を使用してネゴシエートされたプロパティとして名前を取得できます。

16) ネイティブ Java Generic Security Service (JGSS) への Java Native Interface (JNI) ブリッジが Mac OS X でサポートされるようになりました。これを有効にするには、システム プロパティ sun.security.jgss.native を true に設定します。

17) 一時的な DH キーのサイズをカスタマイズするために、新しいシステム プロパティ jdk.tls.ephemeralDHKeySize が定義されています。許容可能な DH キーの最小サイズは、エクスポート可能な暗号スイートまたはレガシー モード (jdk.tls.ephemeralDHKeySize=legacy) を除き、1024 ビットです。

18) Java Secure Socket Extension (JSSE) プロバイダーは、デフォルトでクライアントの暗号スイートの設定を尊重します。ただし、サーバー上で SSLParameters.setUseCipherSuitesOrder(true) を呼び出すことで、サーバーの暗号スイートの設定を尊重するように動作を変更できます。


Java 8 ツールの機能強化

1) jjs コマンドが導入されました。これは、対話型シェル モードで Nashorn エンジンを呼び出すか、スクリプト ファイルを解釈します。

2) JavaFX アプリケーションが正しくパッケージ化されていれば、java コマンドは JavaFX アプリケーションを起動できます。

3) Java コマンドのマニュアル ページ (nroff と HTML の両方) が完全に作り直されました。詳細オプションは、影響を受ける領域に応じて、ランタイム、コンパイラー、ガベージ コレクション、およびサービスアビリティに分割されました。これまで欠落していたいくつかのオプションについて説明します。以前のリリース以降に非推奨または削除されたオプションに関するセクションもあります。

4) 新しい jdeps コマンドライン ツールにより、開発者はクラス ファイルを分析して、パッケージ レベルまたはクラス レベルの依存関係を判断できます。

5) 以前は jcmd ツールを介してローカルでのみアクセスできた診断コマンドにリモートからアクセスできるようになりました。リモート アクセスは Java Management Extensions (JMX) を使用して提供されるため、診断コマンドはプラットフォーム MBean サーバーに登録されているプラ​​ットフォーム MBean に公開されます。 MBean は com.sun.management.DiagnosticCommandMBean インターフェイスです。

6) 新しいオプション -tsapolicyid が jarsigner ツールに含まれており、タイムスタンプ局から署名付きタイムスタンプを要求し、それを署名付き JAR ファイルに添付できるようになります。

7) 新しいメソッド java.lang.reflect.Executable.getParameters が含まれており、これを使用すると、任意のメソッドまたはコンストラクターの仮パラメーターの名前にアクセスできます。ただし、.class ファイルには、デフォルトでは正式なパラメータ名は保存されません。特定の .class ファイルに仮パラメータ名を保存し、Reflection API が仮パラメータ名を取得できるようにするには、javac コンパイラの -parameters オプションを使用してソース ファイルをコンパイルします。

8) Java 言語仕様 (JLS) セクション 15.21 のバイナリ比較の型規則が、javac によって正しく適用されるようになりました。

9) このリリースでは、com.sun.mirror パッケージに含まれる apt ツールとその関連 API が削除されました。

Javadoc の機能強化

Java SE 8 では、次の新しい API が Javadoc ツールに追加されました。

Javaで整数を文字列に変換する方法
  • 新しい DocTree API には、抽象構文ツリーで表されるソース コードを走査できるスキャナーが導入されています。これにより、コンパイラ ツリー API が拡張され、javadoc コメントのコンテンツへの構造化されたアクセスが提供されます。
  • javax.tools パッケージには、新しいプロセスを実行せずに Javadoc ツールを Java アプリケーションから直接呼び出すことができるクラスとインターフェイスが含まれています。
  • クラスまたはインターフェイスの生成されたドキュメントの「メソッドの概要」セクションが再構成されました。このセクションのメソッドの説明はタイプごとにグループ化されています。デフォルトでは、すべてのメソッドがリストされます。タブをクリックすると、特定のタイプのメソッド (静的、インスタンス、抽象、具象、または非推奨のメソッド (クラスまたはインターフェイスに存在する場合)) を表示できます。
  • javadoc ツールは、javadoc によって生成されたファイル内で、無効な HTML やアクセシビリティの問題など、さまざまな問題を引き起こす可能性がある問題について javadoc コメントの内容をチェックする機能をサポートするようになりました。この機能はデフォルトで有効になっており、新しい -Xdoclint オプションによって制御することもできます。

Pack200の強化

Java プラットフォームで動的型付け言語をサポートする JSR 292 により、Java クラス ファイル形式が更新されました。

Pack200 エンジンは、Java SE 8 クラス ファイルが効果的に圧縮されるように更新されました。現在、定数プール エントリと JSR 292 によって導入された新しいバイトコードを認識できるようになりました。その結果、このバージョンの Pack200 ツールで作成された圧縮ファイルは、古いバージョンの unpack200 ツールと互換性がなくなります。


Java 8 I/O の機能強化

Java 8 では、java.nio.charset.Charset および拡張文字セットの実装にいくつかの改善が加えられています。これには次のものが含まれます。

  • サーバーのパフォーマンスまたはスケーラビリティを向上させる可能性がある新しい SelectorProvider。 /dev/poll SelectorProvider が引き続きデフォルトになります。 Solaris イベント ポート メカニズムを使用するには、システム プロパティ java.nio.channels.spi.Selector を値 sun.nio.ch.EventPortSelectorProvider に設定して実行します。
  • /jre/lib/charsets.jar ファイルのサイズが減少します。
  • java.lang.String(byte[], ∗) コンストラクターと java.lang.String.getBytes() メソッドのパフォーマンスが向上しました。

Java 8 ネットワークの機能強化

1) 新しいクラス java.net.URLPermission が追加されました。これは、特定の URL で定義されたリソースにアクセスするための権限を表します。

2) パッケージ jdk.net が追加されました。これには、プラットフォーム固有のソケット オプションと、すべての標準ソケット タイプでこれらのオプションを設定するためのメカニズムが含まれています。ソケット オプションは jdk.net.ExtendedSocketOptions で定義されます。

3) HttpURLConnection クラスで、セキュリティ マネージャーがインストールされており、接続を開こうとするメソッドが呼び出された場合、呼び出し元は宛先 URL のホスト/ポートの組み合わせに対する 'connect'SocketPermission を所有している必要があります。このリクエストを許可する URLPermission。

自動リダイレクトが有効になっており、この要求が別の宛先にリダイレクトされる場合、呼び出し元にはリダイレクトされたホスト/URL に接続する権限も必要です。


Java 8 同時実行性の強化

java.util.concurrent パッケージには、2 つの新しいインターフェイスと 4 つの新しいクラスが追加されました。

Java.util.concurrent インターフェース

インターフェース 説明
パブリック静的インターフェイス CompletableFuture.AsynchronousCompletionTask これは、非同期メソッドによって生成された非同期タスクを識別するために使用されるマーカー インターフェイスです。これは、非同期アクティビティの監視、デバッグ、追跡に役立つ場合があります。
パブリック インターフェイス CompletionStage これは、別の CompletionStage が完了したときにアクションを実行するか値を計算する、非同期計算のステージを作成します。

Java.util.concurrent クラス

クラス 説明
public class CompletableFuture extends Object 実装 Future、CompletionStage これは明示的に完了できる Future であり、完了時にトリガーされる依存関数とアクションをサポートする CompletionStage として使用できます。
public static class ConcurrentHashMap.KeySetView extends Object 実装 Set、Serializable これは、ConcurrentHashMap をキーのセットとして表示したもので、オプションで共通の値にマッピングすることで追加を有効にすることができます。
パブリック抽象クラス CountedCompleter は ForkJoinTask を拡張します トリガーされたときに完了アクションが実行され、保留中のアクションが残っていない ForkJoinTask。
パブリック クラス CompletionException は RuntimeException を拡張します 結果またはタスクの完了中にエラーまたはその他の例外が発生すると、例外がスローされます。

java.util.concurrent.ConcurrentHashMap クラスの新しいメソッド

ConcurrentHashMap クラスの最新リリースでは、いくつかの新しいメソッドが導入されています。これには、さまざまな forEach メソッド (forEach、forEachKey、forEachValue、および forEachEntry)、検索メソッド (search、searchKeys、searchValues、および searchEntries)、および多数の削減メソッド (reduce、reduceToDouble、reduceToLong など) が含まれます。他のさまざまなメソッド (mappingCount および newKeySet) も同様に追加されました。

java.util.concurrent.atomic の新しいクラス

最新のリリースでは、新しいクラス DoubleAccumulator、DoubleAdder、LongAccumulator、LongAdder の小さなセットを通じて、スケーラブルで更新可能な変数のサポートが導入されています。アトミック変数と比較して大幅なスループットの向上を実現する競合削減技術を内部的に採用しています。

クラス 説明
public class DoubleAccumulator extends Number 実装 Serializable これは、提供された関数を使用して更新された実行中の double 値を一緒に維持する 1 つ以上の変数に使用されます。
public class DoubleAdder extends Number 実装 Serializable これは、最初にゼロの二重和を維持する 1 つ以上の変数に使用されます。
public class LongAccumulator extends Number 実装 Serializable これは、提供された関数を使用して更新された実行中の長い値を一緒に維持する 1 つ以上の変数に使用されます。
public class LongAdder extends Number 実装 Serializable これは、最初にゼロの長い合計を維持する 1 つ以上の変数に使用されます。

java.util.concurrent.ForkJoinPool クラスの新しいメソッド

このクラスには、2 つの新しいメソッド getCommonPoolParallelism() および commonPool() が追加されており、それぞれ共通プールまたは共通プール インスタンスの目標並列処理レベルを返します。

方法 説明
パブリック静的 ForkJoinPool commonPool() 共通プールインスタンスを返します。
パブリック static int getCommonPoolParallelism() 共通プールの目標並列処理レベルを返します。

新しいクラス java.util.concurrent.locks.StampedLock

新しいクラス StampedLock が追加されました。これは、読み取り/書き込みアクセス (書き込み、読み取り、およびオプティミスティック読み取り) を制御するための 3 つのモードを備えた機能ベースのロックを追加するために使用されます。このクラスは、3 つのモード間の変換を条件付きで提供するメソッドもサポートします。

クラス 説明
public class StampedLock extends Object 実装 Serializable このクラスは、読み取り/書き込みアクセスを制御するための 3 つのモードを備えた機能ベースのロックを表します。

Java API for XML Processing (JAXP) 1.6 の機能強化

Java 8 では、XML Processing (JAXP) 1.6 用の Java API が追加されています。サービス構成ファイルからサービスをロードするには、java.util.ServiceLoader によって定義されるサービス プロバイダー ローダー機能を使用する必要があります。

この理由は、将来の Java SE プラットフォームのモジュール化を考慮して、JAR ファイル以外の手段で、場合によってはサービス構成ファイルを使用せずにサービスプロバイダをデプロイできるようにするためです。


Java仮想マシンの機能強化

invokespecial 命令の検証が強化され、現在のクラスまたはその直接のスーパークラスのインスタンス初期化メソッドのみを呼び出すことができるようになりました。


Java Mission Control 5.3 は Java 8 に含まれています

Java Mission Control (JMC) は、効率的かつ詳細なデータ分析を可能にし、高度で目立たない Java の監視と管理を実現する高度なツール セットです。 JMC には、コードのパフォーマンス、メモリ、レイテンシなどの一般的な分析領域のセクションが用意されています。

日本語と簡体字中国語の Babel 言語パックが、JDK 8 に含まれる Java Mission Control にデフォルトで含まれるようになりました。


Java 8 国際化の機能強化

1) Unicode の機能強化

JDK 8 には Unicode 6.2.0 のサポートが含まれています。以下の機能が含まれています。

  • トルコ リラ記号を含む 733 の新しい文字。
  • 7 つの新しいスクリプト:
    • メロイティック象形文字
    • メロイティック筆記体
    • ソラ・ソンペン
    • チャクマ
    • シャラダ
    • タクリ
    • ミャオ族
  • 11 個の新しいブロック: 上記の新しいスクリプト用の 7 ブロックと、次の既存のスクリプト用の 4 ブロックを含みます。
  • アラビア語拡張-A
  • スンダ語サプリメント
  • Meek 拡張機能の会議
  • アラビア語の数学アルファベット記号

Unicode CLDR データと java.locale.providers システム プロパティの採用

Unicode コンソーシアムは、「利用可能なロケール データの最大かつ最も広範な標準リポジトリで世界の言語をサポートする」ことを目的とした Common Locale Data Repository (CLDR) プロジェクトをリリースしました。 CLDR はロケール データの事実上の標準になりつつあります。 CLDR の XML ベースのロケール データは JDK 8 リリースに組み込まれていますが、デフォルトでは無効になっています。

ロケール データには 4 つの異なるソースがあります。

  • CLDR は、Unicode CLDR プロジェクトによって提供されるロケール データを表します。
  • HOST は、基礎となるオペレーティング システムの設定に対する現在のユーザーのカスタマイズを表します。これはユーザーのデフォルトのロケールでのみ機能し、カスタマイズ可能な設定は OS によって異なる場合がありますが、主に日付、時刻、数値、通貨の形式がサポートされています。
  • SPI は、インストールされている SPI プロバイダーに実装されているロケール依存のサービスを表します。
  • JRE は、以前の JRE リリースと互換性のあるロケール データを表します。

目的のロケール データ ソースを選択するには、java.locale.providers システム プロパティを使用します。データ ソースを優先順序でリストします。例: java.locale.providers=HOST,SPI,CLDR,JRE デフォルトの動作は、次の設定と同等です: java.locale.providers=JRE,SPI


Java 8 の新しいカレンダーおよびロケール API

JDK 8 には、2 つの新しいクラス、いくつかの新しいメソッド、および既存の静的メソッドの新しい戻り値が含まれています。

サービスプロバイダー用の 2 つの新しい抽象クラスが java.util.spi パッケージに追加されました。

クラス 説明
パブリック抽象クラス CalendarDataProvider は LocaleServiceProvider を拡張します これは、ロケールに依存するカレンダー パラメーターを提供するサービス プロバイダーの抽象クラスです。
パブリック抽象クラス CalendarNameProvider は LocaleServiceProvider を拡張します これは、カレンダー フィールド値のローカライズされた文字列表現 (表示名) を提供するサービス プロバイダーの抽象クラスです。

静的メソッドが番号付けシステムの Locale.UNICODE_LOCALE_EXTENSION を認識できるようになりました。

方法 説明
public static Final DecimalFormatSymbols getInstance(Locale ロケール) これは、指定されたロケールの DecimalFormatSymbols インスタンスを取得するために使用されます。このメソッドは、Java ランタイム自体によってサポートされるロケールと、インストールされた DecimalFormatSymbolsProvider 実装によってサポートされるロケールの DecimalFormatSymbols インスタンスへのアクセスを提供します。ロケールが null の場合は、NullPointerException がスローされます。

カレンダー API に新しいメソッドを追加しました。

方法 説明
public boolean isSupportedLocale(ロケールロケール) 指定されたロケールがこのロケール サービス プロバイダーによってサポートされている場合、true を返します。指定されたロケールには、サポートを決定する際に考慮する必要がある拡張子が含まれている場合があります。 java.util.spi.LocaleServiceProviderクラスで定義されています
パブリック String getCalendarType() このカレンダーのカレンダー タイプを返します。カレンダーの種類は、Unicode Locale Data Markup Language (LDML) 仕様によって定義されます。 java.util.Calendarクラスで定義されています。

Calendar.getDisplayName メソッドと Calendar.getDisplayNames メソッドに、カレンダー名の形式を決定する新しいスタイル指定子が追加されました。


指定子 説明
パブリック静的最終整数 SHORT_FORMAT これは、形式に使用される短縮名を示す getDisplayName および getDisplayNames のスタイル指定子です。
パブリック静的最終整数LONG_FORMAT これは、形式に使用される長い名前を示す getDisplayName および getDisplayNames のスタイル指定子です。
パブリック静的最終整数 SHORT_STANDALONE これは、カレンダー ヘッダーとしての月の略称など、独立して使用される短縮名を示す getDisplayName および getDisplayNames のスタイル指定子です。
パブリック静的最終整数LONG_STANDALONE これは、カレンダー ヘッダーとしての月の名前など、独立して使用される長い名前を示す getDisplayName および getDisplayNames のスタイル指定子です。

ロケールの (オプションの) 拡張を処理するための 2 つの新しい Locale メソッド。

方法 説明
public boolean hasExtensions() このロケールに拡張子がある場合は true を返します。
public Locale のstripExtensions() このロケールのコピーを拡張子なしで返します。このロケールに拡張子がない場合は、このロケール自体が返されます。

2 つの新しい Locale.filter メソッドは、RFC 4647 で定義されているように、指定された基準に一致する Locale インスタンスのリストを返します。

方法 説明
public static リストフィルター(リスト優先リスト、コレクションロケール) RFC 4647 で定義されているフィルタリング メカニズムを使用して、一致する Locale インスタンスのリストを返します。これは、モードが Locale.FilteringMode.AUTOSELECT_FILTERING の場合の filter(List, Collection, FilteringMode) と同等です。
public static リスト フィルター (リスト優先順位リスト、コレクション ロケール、Locale.FilteringMode モード) RFC 4647 で定義されているフィルタリング メカニズムを使用して、一致する Locale インスタンスのリストを返します。

2 つの新しい Locale.filterTags メソッドは、RFC 4647 で定義されているように、指定された基準に一致する言語タグのリストを返します。

方法 説明
public static List filterTags(List priorityList, Collection tags) RFC 4647 で定義されている基本的なフィルタリング メカニズムを使用して、一致する言語タグのリストを返します。これは、モードが Locale.FilteringMode.AUTOSELECT_FILTERING の場合の filterTags(List, Collection, FilteringMode) と同等です。
public static List filterTags(リスト priorityList、コレクション タグ、Locale.FilteringMode モード) RFC 4647 で定義されている基本的なフィルタリング メカニズムを使用して、一致する言語タグのリストを返します。

2 つの新しい検索メソッドは、RFC 4647 で定義された検索メカニズムを使用して、最も一致するロケールまたは言語タグを返します。

方法 説明
public static Locale lookup(リスト優先リスト、コレクションロケール) RFC 4647 で定義されている検索メカニズムを使用して、最も一致する言語タグの Locale インスタンスを返します。
public static String lookupTag(リスト priorityList,コレクション タグ) RFC 4647 で定義されている検索メカニズムを使用して、最も一致する言語タグを返します。

その他の Java 8 バージョンの機能強化

JDK 8u5の機能強化

1) アプリケーションに対してセキュリティ プロンプトが表示される頻度が減少しました。


JDK 8u11の機能強化

1) JRE のインストールまたは更新時にスポンサーからのオファーを抑制するオプションは、Java コントロール パネルの [詳細設定] タブで使用できます。

2) Entry-Point 属性を JAR ファイル マニフェストに含めて、RIA (リッチ インターネット アプリケーション) の有効なエントリ ポイントとして 1 つ以上のクラスを識別できます。


JDK 8u20の機能強化

1) javafxpackager ツールの名前が javapackager に変更されました。このツールは、自己完結型アプリケーション バンドラーの新しい引数によって強化されました。

インターフェースとは何ですか

次の機能強化は Java ツールに関連しています。

  • Restricted Transactional Memory (RTM) に関連する実験的な JIT コンパイラ オプションが追加されました。
  • 文字列の重複排除に関連するいくつかのオプションが追加されました。
  • Advanced Encryption Standard (AES) 組み込みに関連するいくつかのオプションが追加されました。
  • ガベージ コレクション オプションの組み合わせは非推奨になりました。

2) ガベージ コレクション チューニング ガイドが Java HotSpot 仮想マシンに追加されました。 Java HotSpot VM に含まれるガベージ コレクターについて説明しており、特に大量のデータ (数ギガバイト) を処理し、多くのスレッドがあり、トランザクション レートが高い場合に、どのガベージ コレクターがアプリケーションのパフォーマンスを最適化できるかを判断するのに役立ちます。 。


JDK 8u31 の機能強化

1) このリリースでは、SSLv3 プロトコルが Java コントロール パネルの詳細オプションから削除されました。


JDK 8u40の機能強化

Javaツール

1) 承認された標準オーバーライド メカニズム (JDK-8065675) と拡張メカニズム (JDK-8065702) が非推奨になったため、-XX:+CheckEndorsedAndExtDirs が追加されました。このオプションは、これらのメカニズムの既存の使用法を識別するのに役立ち、JDK 7u80 および JDK 8u40 でサポートされています。

2) Java Flight Recorder (JFR) は、商用機能のロックを解除し、アプリケーションの実行時に JFR を有効にするさまざまな方法を提供します。

これには、jcmd 診断コマンドや Java Mission Control 内のグラフィカル ユーザー インターフェイス (GUI) コントロールなどの Java コマンド ライン オプションが含まれます。この柔軟性により、起動時に適切なオプションを提供したり、後で JFR と対話したりすることができます。

3) オプション -XX:StartFlightRecording=parameter=value には、新しいパラメータ dumponexit=true があり、JVM が制御された方法で終了するときに JFR データのダンプ ファイルを生成するかどうかを指定します。

4) 制限付きトランザクション メモリ (RTM) に関連するオプションは実験的ではなくなりました。これらのオプションには、-XX:RTMAbortRatio=abort_ratio、-XX:RTMRetryCount=number_of_retries、-XX:+UseRTMDeopt、および -XX:+UseRTMLocking が含まれます。

5) Java 8 では、Application Class Data Sharing (AppCDS) が導入されました。 AppCDS は CDS (クラス データ共有) を拡張し、標準の拡張ディレクトリとアプリケーション クラス パスのクラスを共有アーカイブに配置できるようにします。これは商用機能であり、実験的なものとはみなされません。

6) 新しいオプション -XX:+ResourceManagement および -XX:ResourceManagementSampleInterval=value が追加されました。

7) ラージページに関する追加情報が追加されました。ラージ ページ (ヒュージ ページとも呼ばれる) は、標準のメモリ ページ サイズよりも大幅に大きいメモリ ページです。大きなページはプロセッサの変換ルックアサイド バッファを最適化します。 Linux オプション -XX:+UseHugeTLBFS、-XX:+UseSHM、および -XX:+UseTransparentHugePages が文書化されています。

8) オプション -XX:ObjectAlignmentInBytes=alignment が文書化されています。

JJSツール

1) オプション --optimistic-types=[true|false] が追加されました。再コンパイルの最適化を解除するオプティミスティックな型の仮定を有効または無効にします。

2) オプション -- language=[es5] が jjs ツールに追加されました。 ECMAScript 言語のバージョンを指定します。

Javapackagerツール

1) OS X バンドラーで新しい引数が使用可能になりました。 mac.CFBundleVersion 引数は、使用される内部バージョン番号を識別します。

2) mac.dmg.simple 引数は、AppleScript コードの実行に依存する DMG カスタマイズ手順をスキップするかどうかを示します。

Jcmdツール

Jcmd ツールは、Java Flight Recorder (JFR) と動的に対話するために使用されます。これを使用して、商用機能のロックを解除したり、飛行記録を有効/開始/停止したり、システムからさまざまなステータス メッセージを取得したりできます。

Jstatツール

jstat ツールが更新され、メタスペースの特別な部分である圧縮クラススペースに関する情報が追加されました。

仮想マシン

スケーラブルなネイティブ メモリ追跡 HotSpot VM 機能は、VM のメモリ リークを診断し、メモリ リークが VM 内にない場合をユーザーに明確にするのに役立ちます。 Native Memory Tracker は、大規模なシステムでも自己シャットダウンせずに実行でき、小規模なプログラムで許容されると考えられる以上にパフォーマンスに重大な影響を与えることもありません。