Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ぼくたちは Java アプリケーションの起動速度をどこまで縮められるか

BulBulPaul
November 10, 2022

ぼくたちは Java アプリケーションの起動速度をどこまで縮められるか

AWS Dev Day 2022 で発表したJava アプリケーションの起動速度のアプローチの資料

BulBulPaul

November 10, 2022
Tweet

More Decks by BulBulPaul

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. ぼくたちは Java アプリケーションの 起動速度をどこまで縮められるのか Paul / @bulbulpaul D - 2 Solutions Architect Amazon Web Services Japan
  2. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 自己紹介 ȃȞȑ アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト [関⼼のある技術] Java, Kotlin, Python, Serverless, 釣り BULBULPAUL
  3. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. [お話すること] • JVM 起動時間に関連する仕組みや技術情報 • 起動速度の短縮へのアプローチや今後の展開 [しないこと] • AWS サービスや機能についての解説 • 特定プラットフォーム環境 お話すること / しないこと
  4. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • あらためて Java • クラウドコンピューティングにおけるJava アプリケーションの課題 • JVM の起動の仕組み、起動周辺プロセス • 起動速度の短縮アプローチ • JVM の今後のお話 • まとめ Agenda
  5. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. あらためて… Java
  6. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java Java はアプリケーション開発で使われているプラットフォームの⼀つ Java コードをバイトコードにコンパイルし、JVM上で処理実⾏が可能 バイトコード 機械語 ソースコード Java コンパイラ JIT コンパイラ JVM ※他にもコンポーネント有り ライブラリ JRE JDK
  7. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java の進化 現在OpenJDK コミュニティでOSSとして開発が進められており、 リファレンス実装として提供され、複数のディストリビューターから ビルドしたJDKが提供されている OpenJDK は半年毎のリリースサイクルで開発されており、最新版は Java 19 LTS は 8, 11, 17 ( 2023 年に次の LTS の Java 21 がリリース予定) 他にも商⽤のJDKが展開されてる
  8. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. みなさんは何個 JDK を ご存知でしょうか︖
  9. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. みなさんは何個 JDK を ご存知でしょうか︖ そもそも JDK に種類があることを知らない⽅もいらっしゃる…かな︖
  10. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. さまざまな JDK のディストリビューション • Oracle JDK • Oracle OpenJDK • Red Had OpenJDK • Azul Zulu • BellSoft Liberica JDK • Amazon Corretto • Microsoft Build of OpenJDK • Sap Machine • Open J9 • Eclipse Temurin • Alibaba Dragonwell • etc…
  11. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. クラウドコンピューティングにおける Java アプリケーションの課題
  12. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. クラウドコンピューティングの発展 VM VM ホスト クラウド VM コンテナ / サーバーレス モノリス マイクロサービス 必要に応じた インフラリソースの利⽤ よりクラウドの特徴を ⽣かした実⾏環境へ 単⼀アプリケーションから 複数の⼩さなアプリケーションに
  13. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. クラウドやモダンアプリケーション サーバー コンテナ サーバーレス アプリケーションプロセスのライフサイクルが異なる 必要な量だけ コンテナが 起動/停⽌ イベントに応じて 処理を実⾏/停⽌/ スケール 起動後は 動かしっぱなし
  14. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java と モダンなインフラの組み合わせ時の課題 • JVM + アプリケーションの起動時間が都度発⽣する • JIT コンパイルによるピークパフォーマンスまでの時間
  15. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM + アプリケーションの起動時間 サーバー コンテナ サーバーレス コンテナが 起動毎に必要 イベントに応じた 処理を実⾏毎に必要 起動後は動き続ける のであまり課題に ならない
  16. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ピークパフォーマンスまでの時間 コンテナ JIT の最適化まで ⼀定の時間が必要 毎回ピークパフォーマンスまで 時間が必要。 最適化されても停⽌してしまう。
  17. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java と モダンなインフラの組み合わせ時の課題 • JVM + アプリケーションの起動時間が都度発⽣する Ø 弾⼒性のあるインフラでは初回起動の時間が応答速度やスケールに影響する • JIT コンパイルによるピークパフォーマンスまでの時間 Ø 起動毎に最適化を⾏う必要があり、⾮効率 Ø 最適化に⾄らない場合も ライフサイクルの短い環境下では課題
  18. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java と モダンなインフラの組み合わせ時の課題 • JVM + アプリケーションの起動時間が都度発⽣する Ø 柔軟性のあるインフラでは初回起動の時間が応答速度やスケールに影響する • JIT コンパイルによるピークパフォーマンスまでの時間 Ø 起動毎に最適化を⾏う必要があり、⾮効率 Ø 最適化に⾄らない場合も ライフサイクルの短い環境下では課題 起動時間を縮めることで、Java をクラウドでも活⽤
  19. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. JVM の起動時の仕組み や 起動周辺プロセス
  20. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM の起動時のプロセス JVM を起動 クラスを読み込む インタープリタ実⾏ 実⾏時に JIT コンパイル • アプリケーションが実⾏されている部分 • プロファイルを取得して JIT コンパイル • JVM の起動部分 • Java のバイトコードのロード
  21. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アプリケーションのスタートアップ プラットフォーム上で動かす場合のスタートアッププロセス プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ • コンテナイメージ取得 • パッケージ取得/展開 • JVM 起動 • クラス読み込み • インタプリタ実⾏ • フレームワークの 初期化 • JIT でのネイティブ コード⽣成 JVM の起動時間 アプリ実⾏の 最適化時間
  22. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. 起動速度短縮への アプローチ
  23. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度短縮へのアプローチ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  24. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度短縮へのアプローチ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  25. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. プラットフォームのスタートアップの改善 • コンテナ イメージ/ 実⾏ファイルサイズの削減 Ø Jarの軽量化 Ø カスタムJREでの軽量化
  26. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. コンテナイメージの / 実⾏ファイルサイズの削減 • Jarの軽量化 Ø Micro Framework の活⽤ (Micronaut, Quarkus 等) Ø 不要なDependency の削除 • カスタムJREでの軽量化 • jlink を使って必要最低限の JRE を作成し、Java のコンテナイメージを削減
  27. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Jar の軽量化 実⾏するJar を⼩さくすることでコンテナサイズの削減や アプリケーション取得時の処理を⾼速にする また、JVM にロードするクラスファイルも少なくなる為 起動速度の改善にもつながる [対象例] • 軽量なフレームワークの活⽤ • 不要なライブラリの削除 • サーバーレス環境によっては内部のアプリケーションサーバー
  28. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Application Framework (⼀例) Larger Smaller Micro Framework MicroProfile Based Full Stack
  29. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. カスタムJREでの軽量化 Java 9 で導⼊された jlink を使い必要なライブラリに絞ったJREを作る バイトコード 機械語 ソースコード Java コンパイラ JIT コンパイラ JVM ※他にもコンポーネント有り ライブラリ JRE JDK ここのライブラリを 必要なものに絞る
  30. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. jlink で カスタム JRE を作成 2. jdeps コマンドを使ってアプリケーションに 必要なモジュールを精査 1. デフォルトのモジュールを確認 Coretto 17 約310MB $ java --list-modules [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] . $ jdeps -s ./demo/Example.class Example.class -> java.base Example.class -> java.logging 3. jlink コマンドを使ってJREの作成 例)約50MB $ jlink --add-modules java.base,java.logging \ --output custom-runtime
  31. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度短縮へのアプローチ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  32. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アプリケーション起動時間の最適化 • アプリの起動処理フェーズでの最適化 Ø Class Data Sharing / Application Class Data Sharing Ø AOT Compile / Native Compile
  33. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アプリケーション起動時間の最適化 • アプリの起動処理フェーズでの最適化 Ø Class Data Sharing / Application Class Data Sharing Ø AOT Compile / Native Compile
  34. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM の起動時のプロセス JVM を起動 クラスを読み込む インタープリタ実⾏ 実⾏時に JIT コンパイル クラスファイルを読み込んだ際の アーカイブファイルを再利⽤する
  35. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Class Data Sharing (CDS) 異なるJVM上で同⼀の Class 情報を共有する仕組み。 Class ファイルの読み込んだ情報をアーカイブ化し共有をする。 Java 10 でApplication Class Data Sharing が導⼊され、⼿動で アーカイブを作成して利⽤する事が可能に Java 12 Default CDS でBootstrap CDS のデータが予め添付されて 何もしなくても起動が早くなる Java 13 でDynamic CDS が導⼊され、実⾏時にCDSデータを⽣成する
  36. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. シンプルなWeb APIで検証 Application Framework: Micronaut v3.7.3 JDK: Amazon Correto 17.0.5 CDS: Default CDS, Dynamic CDS 計測項目: • JVMの起動時間(以下をmain メソッドに追加) • アプリケーションの起動時間 -ANAGEMENT&ACTORYGET2UNTIME-8"EAN GET5PTIME
  37. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Dynamic CDS 検証 1. Micronaut のアプリケーションをビルドし、Jarを作成する 2. クラスデータのアーカイブを作成する (実行オプションに -XX:ArchiveClassesAtExit を指定 ) 3. 作成したアーカイブファイルを利用してアプリケーションを起動 (実行オプションに -XX:SharedArchiveFile を指定 ) $ java -XX:ArchiveClassesAtExit=mn.jsa -jar build/libs/demo-0.1.jar $ java -XX:SharedArchiveFile=mn.jsa -jar build/libs/demo-0.1.jar
  38. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 実行結果 CDS JVM 起動速度 (ms) App 起動速度(ms) 無し 134 1021 Default CDS 85 803 Dynamic CDS 75 392 • Default CDS 使うだけでも速い
  39. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 2倍くらい短縮 !
  40. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 別のアプローチ
  41. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM の起動時のプロセス JVM を起動 クラスを読み込む インタープリタ実行 実行時に JIT コンパイル Java のバイトコードをあらかじめ ネイティブコードにコンパイルしておく
  42. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AOT Compile / Native Compile あらかじめネイティブコードにコンパイルをしておくことで JVM起動時の課題を解決する。 実装 • GraalVM native image • Java 9 AOT (Ahead of Time compile) ※ Java 17で削除
  43. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. シンプルなWeb APIで検証 Application Framework: Micronaut v3.7.3 JDK: Amazon Correto 17.0.5 GraalVM 22.3.r17 + native-image 計測項目: • アプリケーションの起動時間
  44. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 実行結果 構成 起動速度 (ms) Java 17 + Default CDS 888 Java 17 + Dynamic CDS 467 GraalVM native image 31 • CDS活用したJVMアプリより 15倍速い!
  45. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. やっぱり Native Compile は 速い…
  46. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AOT or JIT AOT JIT 起動時間 ◯ ✕ CPU/メモリ利用率 ◯ △ パッケージサイズ ◯ △ ピークスループット △ ◯ 最大レイテンシー △ ◯ プラットフォーム非依存 ✕ ◯ コンパイル時間 ✕ ◯ 起動時間のみで見ればAOTがメリットがあるが、JITとの特徴の違いは 適切に押さえた上で利用可否の判断が必要になる
  47. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度短縮へのアプローチ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  48. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度短縮へのアプローチ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  49. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ピークパフォーマンスまでの最適化 JVM を起動 クラスを読み込む インタープリタ実行 実行時に JIT コンパイル JIT の最適化まで 一定の時間が必要 最適化前に停止するなら その最適化は本当に必要なのか?
  50. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. そもそも JIT Compile は 何をしている?
  51. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JIT Compile JVM では3つのJIT コンパイラの種類がある • C1 コンパイラ § クライアント側で使用を想定し、開発者が短いフィードバックループを実現する 為に設計されている • C2 コンパイラ § サーバーサイドでの使用を想定し、プロファイリング後の高いパフォーマンスを 実現する為に設計されている • 階層型コンパイラ (Java 8以降デフォルト) § C1 + C2 を組み合わせた階層型のコンパイラ
  52. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JIT Compile のレベル指定 サーバーレスの Lambda で実行するような、ライフサイクルが短い アプリケーションやメソッドが何度も呼び出されないようなの場合 JIT コンパイルの最適化の恩恵を受けないケースがあり得る その場合にはあえてJIT コンパイルの最適化レベルを指定して 起動時間の短縮を狙うことが可能
  53. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 階層型コンパイル Java 8 以降のデフォルトの設定 プロファイリングを行い、状況に応じて 適切なコンパイルレベルでJIT コンパイル が行われる ただ、プロファイリングや最適化には オーバーヘッドがある Level 0: インタープリタ Level 1: C1 Profile無し Level 2: C1 Basic Profile Level 3 : C1 Full Profile Level 4: C2 Compilation Level
  54. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Lambda での階層型コンパイルレベル指定 • JIT の階層型コンパイルのレベルを 1 に指定する • Lambda Layer を使って起動のラッパースクリプトで JVM のオプションを設定する #!/bin/sh shift export _JAVA_OPTIONS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1" java "$@" 階層型コンパイルの 上限レベルを指定 https://aws.amazon.com/jp/blogs/news/increasing-performance-of-java-aws-lambda-functions-using-tiered-compilation/
  55. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 実行結果 設定 起動タイプ 実行時間 デフォルト設定 Cold Start 5338 Warm Start 93 階層型コンパイル の上限を1に設定 Cold Start 2086 Warm start 32 https://github.com/aws-samples/aws-lambda-java-tiered-compilation-example • コールドスタートで約60%の改善 • ウォームスタートで約65%の改善
  56. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ピークパフォーマンスまでの最適化 JVM を起動 クラスを読み込む インタープリタ実行 実行時に JIT コンパイル JIT の最適化まで 一定の時間が必要 最適化されてる状態で アプリを保持できれば 良いのでは?
  57. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Project CRaC 実行中に Java インスタンスからチェックポイントを作成する機能の研 究をするプロジェクト 現状は Linux 環境での実装が進めらている。 内部で Linux の CRIU を活用したインスタンスのイメージを作成する。 OpenJDK のリリースには含まれていない ( まだ 実験的な取り組みの状態 ) https://openjdk.org/projects/crac/
  58. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. CRIU Checkpoint Restore in Userspace の略 プロセスの動いているメモリ状態などをイメージにダンプし そのイメージからのリストア起動を実現するツール CPU Registers Memory Dump
  59. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. CRaC Co-ordinated Restore at Checkpoint チェックポイントを作成し、アプリケーションにも復元を認識させる https://openjdk.org/projects/crac/ チェックポイントの 作成 復元処理
  60. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. CRaC Co-ordinated Restore at Checkpoint チェックポイントを作成し、アプリケーションにも復元を認識させる チェックポイントの 作成 この段階でソケットやファイルが 開かれていないようにする 必要がある • Micronaut がCRaCをサポート https://micronaut-projects.github.io/micronaut-crac/latest/guide/
  61. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. シンプルなWeb APIで検証 Application Framework: Micronaut v3.7.3 OS: Ubuntu 18.04 JDK: OpenJDK 17-crac 計測項目: • アプリケーションの起動時間
  62. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 実行結果 構成 起動速度 (ms) Java 17 + Default CDS 1021 Java 17 + Dynamic CDS 467 GraalVM native image 31 Java 17 + CRaC 41 • Native Compile と 遜色のない速度 • JIT Compile 最適化状態から 開始も可能
  63. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 実行結果 構成 起動速度 (ms) Java 17 + Default CDS 1021 Java 17 + Dynamic CDS 467 GraalVM native image 31 Java 17 + CRaC 40 • Native Compile と 遜色のない速度 • JIT Compile 最適化状態から 開始も可能 JVM のまま 起動速度が22倍!
  64. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM のメリットを活かして 起動速度も改善!
  65. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JVM のメリットを活かして 起動速度も改善! ※但し、Early Access の機能の為、要注意
  66. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 起動速度のアプローチまとめ プラットフォームの スタートアップ ランタイムの スタートアップ アプリケーションの スタートアップ アプリケーションの ウォームアップ ① プラットフォーム個別の 最適化 ② アプリケーション起動の最適化 ③ ピークパフォーマンスまでの最適化
  67. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. JVM のこれからのお話
  68. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Java は確実に現実課題に対して発展している • CDS • Application Class Data Sharing • Default CDS Archives • Dynamic CDS Archives • コンテナ関連 • Alpine Linux Port • cgroups v2 support • コンテナ用途に合わせた JVM オプションの追加 • etc…
  69. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Project Leyden 起動時間、ピークパフォーマンスまでの時間、および Java のフットプリントを 改善するプロジェクト 静的ランタイムイメージ ≒ ネイティブ実行コードを作成することで起動時間の 改善を図る [Static Java] • アプリケーションを構成するJavaコードのネイティブコンパイル • “閉じた世界”の実現による、追加的なクラスロードの防止。使用されない メソッドやフィールドを取り除くことでデッドコードを排除し、生成する バイナリを小さくする • ビルド時にアプリケーションの一部を初期化することで、さらなる最適化を 可能にすると同時に、以降の起動時における冗長な処理を回避する機能 https://openjdk.org/projects/leyden/
  70. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Oracle が GraalVM関連技術をOpenJDKへ寄贈 GraalVM CE のJava関連コードを OpenJDK コミュニティへ寄贈を発表 Graal Compiler や Graal Native Image の関連技術の設計/開発は Open JDKコミュニティで継続される形に これによりJIT や AOT Compiler の発展が期待される。 https://www.graalvm.org/2022/openjdk-announcement/
  71. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ
  72. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ • アプリケーションライフサイクルを意識したアプローチ • プラットフォームの起動時間 → Jar の軽量化, カスタムJRE • JVM / アプリ起動時間 → CDS, AOT / Native Compile • 起動後の最適化までの時間 → JIT 最適化レベル調整, CRaC • OpenJDK の機能(jlink, CDS等)の活用して改善が可能 • JVM は これからも Project Leyden や CRaC 等のアプローチで 起動速度の改善の可能性がある
  73. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.