Skip to content

Instantly share code, notes, and snippets.

@ykubota
Last active November 5, 2020 21:59
Show Gist options
  • Save ykubota/85063803be5b78b32cfaf17a5a8076bf to your computer and use it in GitHub Desktop.
Save ykubota/85063803be5b78b32cfaf17a5a8076bf to your computer and use it in GitHub Desktop.
Java 10の変更点(JEP観点)非互換性観点は別記。

JEP レベルでの Java 10 新機能・変更点

http://openjdk.java.net/projects/jdk/10/

JEPの番号順。非互換性観点だとまだまだあるがそれは別に記載。

var。型推論ローカル変数 var の導入。 開発者にとって一番大きい・便利な変更はこれ。

これまで複数のコンポーネントごとに分けられていた OpenJDK リポジトリを一本化。

HotSpot内部のGC実装のインターフェース作成。 今後ビルド時などに簡単にGC実装を導入したり外しやすくするための取組み。 現時点ではShenandoah、ZGC、Epsilonが追加される見込みで、特にEpsilonはJava 11で導入確定路線。

G1 GCのFull GCをParallel化。(mixed gc や major gcのことではない) 運用者によっては大きい変更だが、そもそもFull GCはお目にかかりたくないですね。

JVM プロセス間でメタデータやクラス情報(Metaspace領域やinternされたString)を共有する仕組。 Oracle JDKの商用機能のOpenJDKマージ第一弾。 Microservices 周りで有用になるかもしれない。

Resouce Management(メモリやスレッドプールのプロセス間での共有・融通)はJava 11の予定。

やってみたレベルの記事はQiitaに投稿済み

アプリケーションスレッド上でコールバックを実行できるようにする(限定的にsafepointに入れるようにする、 スレッド単位でのsafepointポーリングができるようにする)。これまでSTW(アプリケーションスレッド全てを停止する) 必要があったが、個々のスレッドを停止することで実行できるように改善を行うもの。 これによって

  • BiasedLock の改善(影響が当該スレッドのみに限定される)
  • スタックトレース取得の影響軽減
  • スタックトレースのサンプリング改善(全スレッド停止に必要だったシグナル依存を削減することによる改善)
  • メモリバリアの削減 の準備(と一部実施)が見込まれている。

利用者的にはバイアスロックの影響が微軽減するところが多少嬉しいポイントになるかもしれない。

javah が削除された。 残してても良さそうだが Java 8 からjavac -h で代用可能なので問題ない。https://bugs.openjdk.java.net/browse/JDK-7150368

ゆにこーどらんげーじたぐ。 java.util.Locale が強化される。国際化を真面目に取り組んでいるところにとってはここが一番大きい恩恵かも?

NV-DIMMにもJavaヒープが乗る時代が来た。 Intelさん的にはIntel's 3D XPoint memoryをカバーしてlibpmem等を経由せずにI/Oを高速化したい目論見もあるのだろう。いいぞもっとやれ。

ちなみにApache MnemonicというNV-DIMMにアロケートされたヒープ状況に関するヒントを GCに与えることでオーバヘッドを削減して高速化を行うライブラリなんてのもあったのです。

Graaaaaaaaaaaaaaaaal。Project Metropolisの先鋒ですね。 JIT by Java。 将来的に利用者的に一番大きいのはこれだと思うがまだExperimentalなので、もうちょい先の話。

AoTと組合せてServerlessに特化した起動・実行高速化が図れるかも知れません、わからんけど。

David Back-sanかkanjavaのJVMになりたい人に話してもらうのが良さそう。

ルート証明書。

またバージョン体系・表示が変わる。先頭の文字で判断している場合はほぼほぼ影響なし、かな? しれっと"LTS"を表示させてるけど、OpenJDKのLTSどうするんでしょうね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment