Devoxx Belgium 2019 - Day 2

LINEでは年に1回の海外カンファレンス参加補助があるので、ベルギーのDevoxxに来ています。
(夏のJVMLSは自費です)

Devoxxは月・火のDeep Dive Daysとと水・木・金のConference Daysにわかれていて、今日はDeep Dive Daysの2日目です。
https://devoxx.be/tuesday-schedule/

会場はKinepolisという映画館
f:id:nowokay:20191106093910j:plain

映画館だけあって、スクリーンはでかいし席はすわりごこちいいし後ろの席からも見やすいです。

Solving Memory Leaks in the JVM

Kirkさんのセッションです。Deep Diveということで、3時間のコマです。
https://devoxx.be/talk/?id=109305 f:id:nowokay:20191106101215j:plain

セッションとしては、VIsualVMやjClarity、jcmd、jmapを使ってメモリリークを探す説明でした。
f:id:nowokay:20191106101416j:plain

しかしながら、英語がよく聞き取れなかったり説明をききのがしてたりで、なんのためにそのコマンドでオブジェクトがたくさん使われてるか発見するのかというのがよくわからなかった・・・
YouTubeでは字幕もつくので、見直すといいんではなかろうか・・・

Migrating AWS Lambda's frontend from Java 8 to 11

もとのタイトルは「Learnings from migrating a production service from JDK8 to JDK 11」でしたが、プレゼンタイトルではLambda FrontendのMigrationということになっていました。
https://devoxx.be/talk/?id=106451
f:id:nowokay:20191106102039j:plain

それでLambdaの説明が始まると出ていく人が結構いましたが、Lambda上で動かすコードをMigrateするのではなくて、Lambda自体の認証などを行うフロントエンド部分をMigrateしたという話で、おもしろかったです。

Java 8からJava 11でパフォーマンスにインパクトがあったのはG1GCがデフォルトになったこととCompact Stringだとのこと。
f:id:nowokay:20191106095653j:plain
あと、-XX:+UseStringDeduplicationで文字列の重複をなくすとメモリ利用が80%へったけどGC停止時間は増えたと。結局これどうしたんだろう?ライブラリ中の文字列重複を省いていったのかな。

デプロイは小さなリージョンから大きなリージョンへ。
f:id:nowokay:20191106095008j:plain

結果としてGC停止時間はかなり減っています。
f:id:nowokay:20191106095937j:plain

あと、レイテンシーが99パーセンタイルだと20%減って、99.99パーセンタイルだと33%減った、と。
f:id:nowokay:20191106095847j:plain

総じて、バグはなくパフォーマンスもよくなってよかった、という話でした。

GraalVM native images explained

Olegさんの、GraalVM native imageのセッション。身振り大きく説明していて、楽しかった。
https://devoxx.be/talk/?id=104405
f:id:nowokay:20191106102128j:plain

とりあえず前提として、native imageによるAOTと通常のJVMでのJITでこういう違いがあるよ、という話。
f:id:nowokay:20191106103433j:plain

クラスひとつでどれだけコンパイル時間がかかるんだ、ってことに関しては、システムクラスがたくさん使われているという話なのだけど、それを説明するために利用しているクラスを全部可視化するというのをやっていて、これすごく興味ある。
f:id:nowokay:20191106102250j:plain

あと、リフレクション使ってるコードに対してnative-image-agentを使って自動的に利用クラスの設定ファイルを出力するというデモをやっていました。
こんな感じで入力されたメソッドを呼び出すデモ。
f:id:nowokay:20191106103400j:plain

普通にnative imageを作るとうまく実行されないので、設定ファイルが必要なのでJava Agentを使うと。
f:id:nowokay:20191106102643j:plain

こんなJSONができています。

[
{
  "name":"HelloReflection",
  "methods":[{"name":"foo","parameterTypes":[] }]
}
]

あと、プログラムから読み込むリソースファイルなどは設定を書いておく必要があるけどMicronautとかは あらかじめ書いていてくれるよ、という話。
f:id:nowokay:20191106102920j:plain

最終的にはJITのいいところも取り込まれればいいよね、ってことでした。
f:id:nowokay:20191106103613j:plain

Choosing a JDK: Ask the Distributors

JDKバイナリ配布する人にいろいろ聞いてみよう、というBOFです。 https://devoxx.be/talk/?id=21103
f:id:nowokay:20191106103824j:plain

まんなかにいるAzulのSimon Ritterさんによる進行で、右はBellSoftのLibericaの人。左のひとはだれだったかよくわからない・・・
あと、プロジェクタの左側にSAP Machineの人が座っていました。
そんな感じで、JDKのバイナリ配布をしてる人たちがいろいろ話すBOFでした。

JavaLinuxみたいにいろいろなディストリビューションがあるんだという話。

Javaが動くVMの一覧。
f:id:nowokay:20191106103817j:plain

BOFにしては人が多くて50人くらい入っていました。 いろいろ挙手があったのだけど、Oracle JDKを使ってる人という質問には半分以上が手をあげていた。
Java 8を使ってる人がほとんどで、Java 11が1/4、13を使ってる人も少し、という感じ。
Intel CPUがほとんどで、ARM使ってる人が2人かな。
あと、Dockerで動かしてる人が1/3くらいいて、その半分はKubernetes

OpenJDKのDocker Imageを使ってる人という質問に手をあげる人はだれもいなくて、ダウンロードはたくさんあるので木になるとSimonさんは言ってた。

Dockerの話になったのは、Docker Imageを提供しないのかという質問をした人がいたからで、その人は最小のイメージが欲しいといっていたので、Libericaの人がAlpineを使えと切ってすてていた。そういえばLibericaの人は(Project Portola)https://openjdk.java.net/projects/portola/やってる人だったな。

サポートはどういう風にやっているかという質問があって、パッチについて - A: OpenJDKに還元する。変更は他のディストリビューションにも広まる - B: OpenJDKに提供しない

という選択肢があるし、お金払ってサポートするのだからBのほうがいいかもしれないけど、コミュニティに情報を共有するほうがいい、って言ってた気がする。

Oracle JDKとOpenJDKの違いについて、会場の人がJavaFXは入ってないしJava SEでもない、どこもJavaFXを入れていないということを言う人がいたんだけど、前にいるSimonさんとLibericaの人が「We do!!!」って手をあげたのがおもしろかった。

終了

電車で帰ります。
f:id:nowokay:20191106110914j:plain

今日のベルギービールはPrimus。
f:id:nowokay:20191106110901j:plain

まあ、普通のピルスナーなんで、ベルギーまで来て飲むほどのものではないけど、他の店が閉まっていたので・・・
BOFまで聞いて帰ると21時とかで店がしまっていて選択肢がなくなるのがつらい。
でもBier Centralでハンバーガーのほうがよかったかな。

今日もノンアルのヒューガルデンを買って帰ったのだけど、お店のおにいさんに「お前は酒飲みに見えるのになんでノンアルを買うんだ!」と聞かれました。
日本から来て、これは日本で売ってないというと、日本の酒はニッカとかヤマサキとかウイスキーが好きだと言っていました。
f:id:nowokay:20191106110838j:plain

ということで、明日からはConference Daysです。おやすみなさい。