JJUG CCC 2021 Spring 参加メモ

2021/5/23に開催されたJJUG CCC 2021 Springで聞いたセッションのメモです。
あくまで個人認識レベルのメモなので、誤りなどあるかもです。

GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?

動画: https://youtu.be/UhOHGMnCZqQ

  • 表題の通り試してみたという内容
  • 生のTomcatを利用
  • 起動時間短縮(90%減)・MemoryFootprintを減らせるというメリット
  • スループットはそこまで改善なし、誤差範囲かも(16%減)

今どき?のJavaにおける例外処理についての考察

動画: https://youtu.be/QBnqkx8-5H4

  • Javaの例外処理、throwしたものをドメイン層で取得するのイケてないしいい方法考えてみるという内容
  • Elmのように、エラーの可能性がある型を用意・パターンマッチングで例外処理とするのがいいかも?Java 16のSeald Classが使うといいかも

あなたの勘と経験は本当に合っていると断言できますか? プロダクション環境での計測のススメ

動画: https://youtu.be/qgVG8AVrM7M

  • 継続的に本番環境でプロファイリングして、製造改善に役立てようって話
  • 「推測するな、計測せよ」
  • Google Cloud Profilerで試した
    • オンプレでも利用可能かつ無料
    • pprofという形式でエクスポートできる
    • 不要コードがどれだけあるかを探すのにJaCoCoを利用

ソフトウェアアーキテクチャの選び方

動画: https://youtu.be/_u7I79Gtg_o

  • DDD・アーキテクチャ関連で有名な成瀬さんの発表
  • BGM、字幕の感じが完全にYouTuberのそれで見やすい。図も凝っててわかりやすかった
  • 「難しいけどシンプルは成り立つ」
  • アーキテクチャ選定に関して、「メンバーの習熟度に合わせて選ぶ」という観点は目から鱗
  • 特にJavaに特化した話でもないので応用効きそう

オンライン広告入札システムとZGC

動画: https://youtu.be/loGP6UJ_DlE

  • 次世代のGC実装、ZGCを使って高スループット・低レイテンシを目指す
  • GCの最適化にはOputunaを利用
  • ZGCが目指すのは、停止時間をヒープに依存せず最小限にすること
  • ZGCは1回のGCは高速である一方で、めちゃくちゃ回数は多い
  • いろいろ行ったが、求めていた改善は叶わなかった。メモリ100GB未満ではあまり効果ない?TBレベルで真価を発揮するという考察

How Should Java Developers Build Front-Ends Today?

動画: https://youtu.be/kQxTuZ8bUI0

  • Javaエンジニアはどの技術でフロントを書くべきか?
  • 英語セッションだけどスライドがとてもわかりやすかった
  • 最初に評価基準を決めて、分野ごとに評価(Web, Mobile, Desktop)
  • 流行りは宣言的(Declarative)、命令的(Imperative)はもう古い
  • もちろん最終的な判断はあなた、コンテキストによって最適解は変わる
  • ざっくりおすすめのサマリ
    • Web: React > Angular > Vue.js (JSF, Thymeleafはおすすめしない)
    • Mobile: React使いならReact Native > Flutter、そうでないならFlutter > React Native > Xamarin(MAUIに期待)
    • Desktop: ...Webで十分では?
  • FlutterはDardだけど、DartはJavaと似てるよ