しゃべぶろ

気になった技術の備忘録を残します。

JJUG ナイトセミナー 3/28 参加してきた

概要

3/28日実施された、JJUGナイトセミナーに参加してきた。
今回のテーマは「Java 12リリース記念」ということで、
Java12の新機能および、ZGCの仕組みについて聞いてきた。

Java12の言語やAPIに関する変更 by きしだなおきさん

  • JEP 325 Switch式(プレビュー)
    • switchステートメントが式として使えるようになる。
    • caseに複数の値を指定出来るようになった。
    • プレビュー機能なのでjavac時に--enable-previewをつける必要がある。
      • 仕様変更が入りそうなのであまり取り入れない方が良い。
      • アロー構文を使うとbreak不要でswitchを使える。
  • Collectors.teeing
    • ふたつのCollectorの結果をまとめられる。
    • 3つ以上のCollerctorを使いたい場合は、teeingの中でteeingを呼べば実現出来る。
  • String.transform
    • 値→関数の順で書けるようになっている??
  • FIles.mismatch
    • ファイル違う箇所を返してくれる。
  • InputStream.skipNBytes
    • スキップするByte数を超えてしまうとExceptionを返却する。
    • skipはExceptionを返却しない。
  • Java13に入りそうなこと
    • Switch式の正式化
      • 13でpreviewが外れるかも。
      • ただし、break-withキーワードになる可能性がある。
    • JPackage
  • Default CDS Archives
    • クラスデータをあらかじめ作成して共有するという仕組み
    • JDK12からはbin/server/classes.jsaがあらかじめ含まれている。
    • Javaの起動が少し速くなったいるはず。
  • Java Flight Recorderツール
    • Javaのプロセスに入って、Javaのログを取得してくれる。

The Z Garbage Collector by Devid Buckさん

  • JDK11以降の新しいGC
    • どんなに大きいデータ量でもLow-Latencyで動作する
    • Compactionをすることが断片化を抑えることが出来る。
    • Single Generationなので1つの世代のみ管理する。
    • ヒープと生存データのサイズが停止時間に影響しない。
    • CMSやG1でStop The World起きてしまう処理が、ZGCだと一部しか起きない。
  • ZGCの仕組み
    • 最初に4TBのメモリ空間を確保する?
    • Coloerd Pointers(タグを含むポインター)
      • 利用されていないビットにメタデータを格納する
      • 32bitのJVMはサポート対象外
  • 利用方法
    • -XX:+UseZGCをつける
    • 開発中なので-XX:+UnlockExperimentalVMOptionsをつける必要がある。

参加してみて

Java12にすることで今までより、少し便利に書けるようになるという印象を受けた。
ZGCに関してはすごいの一言、ただマシンのスペックにも依存するので、適切なGCを選択するのが良いのかな。