JJUG CCC (Japan Java User Group Cross Community Conference) 2019 Fallに参加してきました。 日本で最大規模のJavaのイベントです。最近のJava動向を全然追えていなかったのでキャッチアップすることが目的で参加しました。
今北産業
私の参加したセッションの中でも、最近のJava界隈の動向として幅広くの人に有益な情報だと思ったこと(完全に主観なので異論は認める)を以下に3つ記載します。詳細は後述します。
- Java 13の機能追加・修正は5個あるうち、目玉はヒアドキュメント。Switch文の戻り値の書き方が
break
からyield
に変わるといった変更もある。 - Java 14の機能追加・修正は13個 (未確定なもの含む) あるうち、目玉は
instanceof
のパターンマッチが使えることと、NullPointerExceptionのエラーメッセージに発生状況と箇所を明確に返してくれるようになること。 - Javaをコンテナ化しようとした際、起動時間の遅さがネックとなっていたが、Java 13、14あたりで大分改善されている。また、GraalVMのNative Image(バイナリ吐くやつ)を利用することで起動時間は短縮できるようになるが、スループットとの兼ね合いがあるので注意。
特に印象に残ったセッションについて詳述します。
Java 13、14の話
毎度おなじみ久保田さんのセッション。今北産業に載せたJava 13のヒアドキュメントについては12スライド、Java 14のNPE、パターンマッチについては、29スライド、35スライドに載ってます。知りたいことがギュッと毎回まとまっていて大変助かります。 Javaのリリースサイクルが変わってから細かく機能がアップデートされていて良いですねー。
www.slideshare.net
Javaのコンテナ化に関する話
きしださんのセッション、jyukutyoさんのセッションを通しで聞き、今Javaアプリケーションをコンテナ化するのに何すればいいか、なんとなく分かってきました。元々この2つのセッションはコンテナ向けのセッションではなく、個人的な解釈で上記見出しをつけているのであらかじめご了承ください。
Java 12以降であればClass Data Sharing(CDS)があるのでJava自身の機能で起動時間を高速にできるのでひとまずそれから始めてみると良いこと、それで要件満たせなければGraalVMを使ってバイナリ吐いてコンテナサイズ小さくする、起動時間短くすると案内できればいいのかなーと今の立場を考えながら考えてました。勿論スループットとの兼ね合いがあるので、JVMをそのまま使うか、ネイティブイメージ化するかは天秤にかける必要があります。
www.slideshare.net
Kafkaの大規模運用の話
LINEのKafka運用に関する話。 Kafkaに関する方針の説明と共に、実際に起きた障害に対して恒久対応方針を決めるのにどうやって調査をしたかを話されていたセッション。 RAID Controller起因でロック制御が想定されてない取り合いをしていて、Writeが想定されないロックをされてて遅延が生じ、何故遅延が発生したかを調べるのに最終的にCのコードを書いてフックさせて調査する過程を話されていました。本気の調査の過程を垣間見えてよかったのと、恒久対応をガッツリやらせてくれる組織体制が素晴らしいことが印象に残りました。
参加したセッション
- Head toward Java 13 and Java 14
- 入門例外
- Reliablitity Engineering Behind the Most Trusted Kafka Platform
- JavaオンプレシステムをAKS + Quarkusに移行した話
- アンカンファレンス - JVMの何か
- Javaの起動速度といかに戦うか
- 多言語対応の仮想マシンGraalVMが照らす未来
- JVMs in Containers: Best Practices
全体で50を超えるセッションがあったので1/5程度しか見れてないですが、今回参加したセッションで満足できたのでまた次回も参加します。JJUG参加し始めてからもう3年近く経つと思うと早いもんだ。。。