JDKリリース・ノート               JDK 8リリース・ノート


JDK 8の新機能


Java Platform, Standard Edition 8は、主要機能リリースです。このドキュメントでは、Java SE 8と、Java SE 8のOracle実装であるJDK 8に含まれる機能と拡張機能についてまとめます。コンポーネント名をクリックすると、そのコンポーネントの拡張機能に関する詳細説明が表示されます。

  • Javaプログラミング言語

    • このリリースでは、新しい言語機能であるラムダ式が導入されます。ラムダ式を使用すれば、機能をメソッドの引数として(つまりコードをデータとして)扱うことができます。ラムダ式により、単一メソッドのインタフェース(関数型インタフェースと呼ばれる)のインスタンスをより簡潔に表現できます。

    • メソッド参照により、すでに名前のあるメソッドについて、読みやすいラムダ式を利用できます。

    • デフォルト・メソッドにより、ライブラリのインタフェースに新しい機能を追加でき、古いバージョンのライブラリのインタフェースに対して記述されたコードとのバイナリ互換性が保証されます。

    • アノテーションの繰り返し機能により、同じ宣言や型の使用箇所に対して同じアノテーションの型を複数回適用できます。

    • 型アノテーションにより、宣言部に限らず、型が使用される任意の場所にアノテーションを適用できます。プラガブルな型システムとともに利用することで、コードの型チェックが強化されます。

    • 型推論が強化されました。

    • メソッド・パラメータのリフレクションが可能になりました。

  • コレクション

    • 新しいjava.util.streamパッケージのクラスでは、要素のストリームに対する関数型スタイルの操作をサポートするStream APIが提供されます。Stream APIはCollections APIに統合されます。Collections APIは、コレクションに対するバルク操作(順次的または並列的なマップ/リデュース変換など)を可能にします。

    • キーが衝突するHashMapのパフォーマンスが向上しました。

  • Compactプロファイルには、Java SEプラットフォームの事前定義サブセットが含まれます。この機能により、完全なプラットフォームを必要としないアプリケーションを小型デバイス上にデプロイして実行できます。

  • セキュリティ

    • クライアント・サイドTLS 1.2がデフォルトで有効化されます。

    • AccessController.doPrivilegedの新しいバリアントにより、スタック全体を横断したその他の権限チェックを妨げることなく、コードで一部の権限をアサートできます。

    • パスワード・ベースの暗号化に対して、より強力なアルゴリズムが導入されます。

    • JSSEサーバーでSSL/TLS Server Name Indication(SNI)拡張がサポートされます。

    • AEADアルゴリズムのサポート:SunJCEプロバイダが拡張され、AES/GCM/NoPadding暗号実装やGCMアルゴリズム・パラメータがサポートされるようになりました。さらに、SunJSSEプロバイダが拡張され、AEADモード・ベースの暗号スイートがサポートされるようになりました。Oracle Providers DocumentationのJEP 115を参照してください。

    • KeyStoreが拡張され、新しいDomain KeyStore型のjava.security.DomainLoadStoreParameter、およびkeytoolユーティリティの新しいコマンド・オプション-importpasswordなどが追加されました。

    • SHA-224メッセージ・ダイジェストがサポートされます。

    • NSA Suite B暗号化のサポートが拡張されました。

    • 高エントロピー乱数生成のサポートが拡張されました。

    • X.509証明書の失効チェックを構成するための新しいjava.security.cert.PKIXRevocationCheckerクラスが追加されました。

    • Windows用の64ビットPKCS11が導入されます。

    • Kerberos 5 Replay Cachingでの新しいrcache型が導入されます。

    • Kerberos 5 Protocol TransitionとConstrained Delegationがサポートされます。

    • Kerberos 5の脆弱な暗号化タイプがデフォルトで無効化されます。

    • GSS-API/Kerberos 5メカニズムでSASLがバインドされません。

    • 複数のホスト名に対してSASLサービスを利用できます。

    • Mac OS XでネイティブJGSSへのJNIブリッジを利用できます。

    • SunJSSEプロバイダで、より強力な一時的DHキーがサポートされます。

    • JSSEで、サーバー・サイド暗号スイートの設定のカスタマイズがサポートされます。

  • JavaFX

    • このリリースでは新テーマのModenaが実装されました。詳しくは、fxexperience.comのブログを参照してください。

    • 新しいSwingNodeクラスを利用して、開発者はSwingのコンテンツをJavaFXアプリケーションに埋め込むことができます。SwingNodeのJavadocおよびEmbedding Swing Content in JavaFX Applicationsを参照してください。

    • DatePickerコントロール、TreeTableViewコントロールなどの新しいUIコントロールが導入されます。

    • javafx.printパッケージで、JavaFX Printing API用のパブリック・クラスが提供されます。詳しくは、Javadocを参照してください。

    • 3D Graphics機能に3Dシェイプ、カメラ、ライト、サブシーン、マテリアル、ピッキング、アンチエイリアスの機能が追加されました。新しいAPIクラスとして、Shape3D(サブクラス:BoxCylinderMeshViewSphere)、SubSceneMaterialPickResultLightBase(サブクラス:AmbientLightPointLight)、SceneAntialiasingがJavaFX 3D Graphicsライブラリに追加されました。このリリースでは、Camera APIクラスも更新されています。詳しくは、javafx.scene.shape.Shape3Djavafx.scene.SubScenejavafx.scene.paint.Materialjavafx.scene.input.PickResultjavafx.scene.SceneAntialiasingの該当クラスのJavadocと、Getting Started with JavaFX 3D Graphicsドキュメントを参照してください。

    • WebViewクラスで新機能と拡張機能が提供されます。HTML5の追加機能(Web Sockets、Web Workers、Webフォントなど)について詳しくは、Supported Features of HTML5を参照してください。

    • 双方向テキストや複雑なテキスト・スクリプト(タイ語、ヒンディー語など)のコントロールでの利用、テキスト・ノードでの複数行、複数スタイルなど、テキスト・サポートが拡張されました。

    • このリリースではHiDPIディスプレイのサポートが追加されました。

    • CSS Styleable*クラスがパブリックAPIになりました。詳しくは、javafx.cssのJavadocを参照してください。

    • 新しいScheduledServiceクラスを使用すれば、サービスの自動的な再起動が可能になります。

    • JavaFXがARMプラットフォームに対応するようになりました。ARM用のJDKには、JavaFXの基本コンポーネント、グラフィック・コンポーネント、コントロール・コンポーネントが含まれます。

  • ツール

    • Nashornエンジンを起動するためのjjsコマンドが提供されます。

    • javaコマンドによりJavaFXアプリケーションを起動できます。

    • javaのmanページが改訂されました。

    • クラス・ファイルを解析するためのjdepsコマンドライン・ツールが提供されます。

    • Java Management Extensions(JMX)により診断コマンドにリモートからアクセスできます。

    • jarsignerツールに、タイムスタンプ局(TSA)による署名付きタイムスタンプをリクエストするためのオプションが追加されました。

    • Javacツール

      • javacコマンドの-parametersオプションを使用して仮パラメータ名を保管し、Reflection APIにより仮パラメータ名を取得できます。

      • Java言語仕様(JLS)15.21の項に示される等価演算子の型ルールがjavacコマンドによって正しく適用されるようになりました。

      • javadocの実行時に生成されるファイル内での各種問題(無効なHTML、アクセス可能性の問題など)を引き起こすような問題がjavadocコメント内容に含まれているかどうかを、javacツールでチェックできるようになりました。この機能は、新オプションの-Xdoclintによって有効化されます。詳しくは、"javac -X"の実行結果を参照してください。この機能はjavadocツールでも利用でき、javadocではデフォルトで有効です。

      • javacツールに、必要に応じてネイティブ・ヘッダーを生成する機能が追加されました。この機能により、ビルド・パイプラインの個別の手順としてjavahツールを実行する必要がなくなります。この機能はjavacの新オプション-hを使用することで有効化されます。このオプションを使用して、ヘッダー・ファイルを書き込むディレクトリを指定します。ヘッダー・ファイルは、ネイティブ・メソッド、またはjava.lang.annotation.Native型の新しいアノテーションが付けられた定数フィールドを含むすべてのクラスに対して生成されます。

    • Javadocツール

      • javadocツールでは新しいDocTree APIがサポートされます。このAPIを使用すれば、Javadocコメントを抽象構文ツリーとしてトラバースできます。

      • javadocツールで新しいJavadoc Access APIがサポートされます。このAPIを使用すれば、新しいプロセスを実行しなくても、Javaアプリケーションから直接Javadocツールを起動できます。詳しくは、javadocの新機能のページを参照してください。

      • javadocの実行時に生成されるファイル内での各種問題(無効なHTML、アクセス可能性の問題など)を引き起こすような問題がjavadocコメント内容に含まれているかどうかを、javadocツールでチェックできるようになりました。この機能はデフォルトで有効化され、新オプションの-Xdoclintにより制御することもできます。詳しくは、"javadoc -X"の実行結果を参照してください。この機能はjavacツールでも利用できますが、javacではデフォルトで無効です。

  • 国際化

    • Unicodeが拡張され、Unicode 6.2.0のサポートが追加されました。

    • Unicode CLDRデータとjava.locale.providersシステム・プロパティが取り入れられました。

    • 新しいカレンダー/ロケールAPIが追加されました。

    • カスタムのリソース・バンドルを拡張機能としてインストールできるようになりました。

  • デプロイメント

    • サンドボックス・アプレットおよびJava Web Startアプリケーションの場合に、URLPermissionを使用して、アプレットやアプリケーションの起動元サーバーに接続を戻すことができるようになりました。SocketPermissionは付与されなくなりました。

    • すべてのセキュリティ・レベルで、メインJARファイルのJARファイル・マニフェスト内にPermissions属性を指定することが必要になります。

  • Date-Timeパッケージ - 包括的な日時モデルを提供する新しいパッケージ・セットです。

  • スクリプト

    • Nashorn JavaScriptエンジンが導入されます。

  • Pack200

    • Pack200により、コンスタント・プール・エントリおよびJSR 292によって導入された新しいバイトコードがサポートされます。

    • JDK8では、JSR 292、JSR 308、JSR 335で仕様が定義されているクラス・ファイル変更機能がサポートされます。

  • IOとNIO

    • Solarisのイベント・ポート・メカニズムに基づき、Solaris向けの新しいSelectorProvider実装が追加されました。利用するには、システム・プロパティのjava.nio.channels.spi.Selectorの値をsun.nio.ch.EventPortSelectorProviderに設定して実行します。

    • <JDK_HOME>/jre/lib/charsets.jarファイルのサイズが削減されました。

    • java.lang.String(byte[], *)コンストラクタおよびjava.lang.String.getBytes()メソッドのパフォーマンスが向上しました。

  • java.lang and java.utilパッケージ

    • 並列の配列ソート

    • Base64の標準エンコーディング/デコーディングが導入されます。

    • 符号なし演算がサポートされます。

  • JDBC

    • JDBC-ODBCブリッジが廃止されました。

    • JDBC 4.2に新機能が導入されます。

  • Java DB

    • JDK 8にはJava DB 10.10が含まれます。

  • ネットワーク

    • java.net.URLPermissionクラスが追加されました。

    • セキュリティ・マネージャがインストールされている場合に、java.net.HttpURLConnectionクラスでは、接続を開くリクエストのコールに権限が必要になります。

  • 並行処理

    • java.util.concurrentパッケージにクラスとインタフェースが追加されました。

    • java.util.concurrent.ConcurrentHashMapクラスに、新規に追加されたストリーム機能とラムダ式に基づいた集計操作に対応するためのメソッドが追加されました。

    • java.util.concurrent.atomicパッケージに、スケーラブルな更新可能変数に対応するためのクラスが追加されました。

    • java.util.concurrent.ForkJoinPoolクラスに、共有プールに対応するためのメソッドが追加されました。

    • 読取り/書込みアクセスを制御する3つのモードによって機能ベースのロックを行うためのjava.util.concurrent.locks.StampedLockクラスが追加されました。

  • Java XML - JAXP

  • HotSpot

    • Advanced Encryption Standard(AES)を使用するためのハードウェア固有設定が追加されました。Intelハードウェア向けのハードウェアベースのAES固有設定を有効にするUseAESフラグとUseAESIntrinsicsフラグを利用できるようになりました。ハードウェアはバージョン2010年以降のWestmereハードウェアである必要があります。たとえば、ハードウェアAESを有効化するには次のフラグを使用します。

      -XX:+UseAES -XX:+UseAESIntrinsics
      

      ハードウェアAESを無効化するには次のフラグを使用します。

      -XX:-UseAES -XX:-UseAESIntrinsics
      
    • PermGenが廃止されました。

    • メソッド呼出し用のバイトコード命令で、Javaプログラミング言語のデフォルト・メソッドがサポートされます。

  • Java Mission Control 5.3リリース・ノート

    • JDK 8にはJava Mission Control 5.3が含まれます。

Java技術者必読! Java Magazine 最新号公開中

Left Curve
Java SDKとツール
Right Curve
Left Curve
Javaリソース
Right Curve