JDK 10:Java10の新機能

Java Standard Edition10の実装であるJDK10は、2018年3月20日にリリースされました。主な改善点には、ローカル変数タイプのほか、ガベージコレクションとコンパイルの機能強化が含まれます。

JDK 10は短期間のリリースである予定であり、JDK10の公開アップデートは6か月以内に終了する予定です。9月に予定されている次のJDK11は、Javaの長期サポート(LTS)バージョンになります。LTSのリリースは3年ごとに行われます。

オラクルは、Javaリリースに6か月のリリースリズムを設定しました。このアップグレードと後継者には、リリースの年月に基づいて名前を付ける計画があり、最初のリリースはJava18.3と呼ばれていました。しかし、異議が唱えられた後、それらの計画は破棄されました。

Java JDK10をダウンロードする場所

JDK 10は、OracleのWebサイトからダウンロードできます。

JDK10の新機能と改善された機能

JDK10の主な機能は次のとおりです。

  • ローカル変数の型推論。Java言語を拡張して、初期化子を使用したローカル変数の宣言に型推論を拡張します。
  • 最悪の場合のレイテンシーを改善するための、G1ガベージコレクターの並列完全ガベージコレクション。
  • アプリケーションクラス-起動時間とフットプリントを最適化するためのデータ共有。既存のクラス-データ共有機能が拡張され、アプリケーションクラスを共有アーカイブに配置できるようになりました。
  • 実験的なジャストインタイムコンパイラであるGraalは、Linux / x64プラットフォームで使用できます。
  • Dockerの認識。Linuxシステムで実行している場合、Java仮想マシン(JVM)はDockerコンテナーで実行されているかどうかを認識します。コンテナ固有の情報(コンテナに割り当てられたCPUの数と合計メモリ)は、オペレーティングシステムにクエリを実行する代わりに、JVMによって抽出されます。(Javaプロセスで使用可能なCPUの数は、指定されたセット、シェア、またはプロセッサーのクォータから計算されます。)
  • Dockerコンテナユーザーがシステムメモリをより細かく制御できるようにする3つの新しいJVMオプション。
  • ホストプロセスからDockerコンテナ内のJavaプロセスにアタッチしようとしたときにアタッチメカニズムを修正するためのバグ修正。
  • 特に多くのスニペットを含む開始ファイルが使用されている場合、jShellREPLツールの起動時間が短くなります。
  • 変更不可能なコレクションの作成をより適切に可能にする新しいAPI。copyOfSet.copyOf、およびMap.copyOf方法は、既存のインスタンスからの新しいコレクションのインスタンスを作成します。新しいメソッドtoUnmodifiableListtoUnmodifiableSetおよびtoUnmodifiableMapに追加されたCollectorsストリームの要素は変更不可能なコレクションに収集することができるように、ストリームパッケージ内のクラス。
  • 言語を拡張して型推論をローカル変数に拡張するためのローカル変数型推論。その目的は、静的型安全性への取り組みを維持しながら、コーディングに関連する「儀式」を減らすことです。
  • さまざまなガベージコレクターのソースコード分離を改善するためのクリーンなガベージコレクターインターフェイス。この取り組みの目標には、HotSpot仮想マシンの内部ガベージコレクションコードのモジュール性の向上と、HotSpotへの新しいガベージコレクターの追加が容易になることが含まれます。
  • G1ガベージコレクターの並列フルガベージコレクション。目的は、並列処理を実装することにより、最悪の場合のレイテンシーを改善することです。
  • HotSpotが、ユーザーが指定したNVDIMMメモリモジュールなどの代替メモリデバイスにオブジェクトヒープを割り当てることができるようにします。この機能は、将来のシステムが異種のメモリアーキテクチャを持つ可能性があることを想定しています。
  • GrallJavaベースのジャストインタイムコンパイラをLinux / x64プラットフォームで実験的に使用できるようにします。
  • 開発を合理化するために、JDKフォレストのリポジトリーを単一のリポジトリーに統合します。これまでのコードベースは複数のリポジトリに分割されていたため、ソースコード管理で問題が発生する可能性があります。
  • アプリケーションクラス-データ共有。プロセス間で共通のクラスメタデータを共有することでフットプリントを削減します。起動時間も改善されます。
  • グローバルVMセーフポイントを実行せずにスレッドでコールバックを実行するためのスレッドローカルハンドシェイク。すべてのスレッドまたはスレッドなしの代わりに、個々のスレッドを停止できます。
  • JDKでのルート認証局証明書のデフォルトセットの提供。目標は、OracleのJava SEルートCAプログラムでルート証明書をオープンソース化して、OpenJDKビルドを開発者にとってより魅力的なものにすることです。

長期的なJavaロードマップ

OracleがJavaSEの次のバージョンおよびそれ以降のバージョンで検討中であると述べたことは次のとおりです。

  • Amber Projectは、Javaコードの記述に関連する式典を減らすために、ローカル変数型推論を含む、より小さく、生産性を重視した言語機能のインキュベーターでした。強化された列挙型。列挙型で型変数を許可し、列挙型定数のよりシャープな型チェックを実行することにより、列挙型構造の表現力を向上させます。ラムダとメソッド参照の使いやすさを向上させるためのラムダの残り物。
  • プロジェクトパナマ。JVMとネイティブコードを相互接続し、JVMからのネイティブ関数呼び出しとJVMからのネイティブデータアクセスを特徴としています。
  • Valhallaは、高度なJava VMと、値型やジェネリックスペシャライゼーションを含む言語機能候補のためのインキュベータープロジェクトです。
  • Project Loom、並行アプリケーションの作成の複雑さを軽減します。この計画では、代替のユーザーモードスレッドの実装、区切られた継続、およびコールスタック操作を含むその他の構造を追加する必要があります。この提案の主な目標は、Javaで記述されたスケジューラーによって管理されるスレッドの代替実装を提供することです。通常のJavaスレッドのJavaプログラミングモデルは維持されますが、パフォーマンスが向上し、フットプリントが削減されます。

新しい6か月のリリーススケジュールでは、1つのリリースを見逃した機能は、次のリリースがリリースされるときにわずか6か月遅れる可能性があります。JDK 10で発表された内容以外に、オラクルは、提案された新しい機能のいずれかが実際にJavaで利用可能になる時期を確約していません。