JJUGナイトセミナーの個人的なメモ
きしださんの話
- 基本的にはQiitaの話
- 言語とAPIの話
- JEP8つAPI2つ
- プログラムを書くことに影響はない
- switch文はまだpreviewなのでプロダクトには使わない方がいい
- 12に入るものと13の可能性高いやつの紹介
switchのはなし
- ステートメントから式へ
- javacなどで enable previewしないと使えない
- 多分仕様が変わるので今は積極的に使うなと
- 複数caseできる
- case句に複数値をもてる
- arrow構文
- ラムダ式使える
- break不要
- 見やすい、書きやすい
- ブロック書くときは複数処理を持つとき
- switchが式になるよ
- 全てに対応するケースが必要(数値化・文字列はdefault必須)
注意事項
- javacなどで enable previewしないと使えない
- breakで値が返すところが怪しい(break-withになりそう)
- javaの言語仕様として-の入ってるキーワードが増えそう
- break-with
- package-private(明示的に宣言するようになるなら)
JVM Constant API
- Java言語仕様の内部にシンボルリファレンスてのがあって、シンボルリファレンスをAPIから使えるようにする
- クラスファイルつくるときにリフレクションをがちゃがちゃやるときに使うらしい
- あんまりプログラミングしてて意識することはない
CDS Archives
- システムに関するクラス情報をまとめていい感じにしてくれる
- 起動がちょっとはやくなる
Shennandoah
- G1GCとzgcの間埋めてくれるのかと
- シェナンドって読むらしい
Microbenchmark Suite
- 普通の人はつかわない(さくらばさん)
- JDKのパフォーマンス見るやつなんで、JDK開発者以外は用ない
その他API変更
Collectors.teeing
- 2つのCollectorsの値を使いたいとき
- countingとjoiningとか
- teeing(Collectors, Collectors), (c, s) -> ....)
- teeingの中でネストすれば3つでも4つでもいける
String.transform()
- mapからgetしてさらにその戻り値でmapからgetするとき
- str.transform(Class:get).transform(Class:get)みたいな
String.indent()
- str.indent(3)みたいな感じ
- インデントついてかえってくる
- マイナス値もいける
- ホワイトスペースなければ無視される
NumberFormat.getCompactNumberInstance()
- .formatに数値渡せば変換される
- 兆まで対応
FileMismatch
- ふたつのファイルのうち、最初に異なった位置を返す
- どこが違うかも教えてくれる
skipNBytes
- きしださんのQiitaみたら書いてある
Java13あるかも
- switchの正式化
- Jpackage
- NullPointerExceptionの仕様変更
switch
- preview外れそう
- break-with
- default-withはない
- package-privateはあるかも
JPackage
- JavaFXpackagerと中身おなじ
- きしださんのブログみて
- JDKを含んだファイルツリーを作ってパッケージングしてみたいなことができるらしい
NullPointerExceptionの仕様変更
- どこでぬるぽが起きたかわかりやすくなるかも
RawStringLiteralsの復活
- 元々は開業などを含んだ文字列をバッククオートで囲む
- でも安易じゃねってなったらしい
- ダブルクオート3つ?
- 13でpreviewも間に合わないかもしれん
David Buckさんの話
- JVMエンジニアさん
- weblogicについては何もわからん
デモ
- Shenandoahを使います
- Oracle JDKには入ってない
- RedHatのプロジェクトなので
- 自分からは話せないwww
- 終わりますwww
ZGCの話
ZGCとは
- zとはなにか
- zfs(zettabyte file system)てのがあった
- zettabyteは1000の7乗=10億テラバイト
- zebibyteは1024の7乗
- zfsとzgcは関係あんまりない
- JDK11以降のGC
- Scalable Low-Latency なGC
- 複数TBまでヒープ対応可能
- 10ms以下の停止(実際はもっと早い)
- チューニングは基本いらん(ヒープサイズのみ指定すればOk)
- 15%以下のオーバーヘッド
- current : Region式
- tracing : NUMA対応
- Compactiong : Load barriers
- Single Generetion : Colored pointers
ZGCの特徴
- どんなにでかいヒープを使ってもレスポンスは変わらん
- ルート参照には影響食らう
- Javaの実行スレッドの数を抑える
- スレッドスキャニング以外はコンカレントでGCできる
- めっちゃ画期的らしい
- アドレス空間が4TB予約される
- チューニングでGCのワーカスレッドもいじれるけど実行スレッドが減るよ