Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
apkiban
4,239 views
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
2019年6月24日に開催されたJSUG 勉強会の資料です。Spring I/O 2019の参加レポートですので、Spring Framework に関心のある方は是非参考にしてください。
Technology
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Downloaded 13 times
1
/ 31
2
/ 31
Most read
3
/ 31
4
/ 31
5
/ 31
6
/ 31
7
/ 31
8
/ 31
9
/ 31
10
/ 31
11
/ 31
12
/ 31
13
/ 31
14
/ 31
15
/ 31
16
/ 31
17
/ 31
18
/ 31
19
/ 31
20
/ 31
21
/ 31
22
/ 31
Most read
23
/ 31
24
/ 31
25
/ 31
26
/ 31
27
/ 31
28
/ 31
29
/ 31
30
/ 31
31
/ 31
More Related Content
PPTX
Spring Boot ユーザの方のための Quarkus 入門
by
tsukasamannen
PDF
What's new in Spring Batch 5
by
ikeyat
PDF
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
PDF
DockerとPodmanの比較
by
Akihiro Suda
PPTX
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
by
NTT DATA Technology & Innovation
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
by
tamtam180
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PDF
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
Spring Boot ユーザの方のための Quarkus 入門
by
tsukasamannen
What's new in Spring Batch 5
by
ikeyat
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
DockerとPodmanの比較
by
Akihiro Suda
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
by
NTT DATA Technology & Innovation
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
by
tamtam180
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
What's hot
PDF
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
by
ssuser868e2d
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
Springを何となく使ってる人が抑えるべきポイント
by
土岐 孝平
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
PDF
これからSpringを使う開発者が知っておくべきこと
by
土岐 孝平
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
PDF
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
by
Ryo Sasaki
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PDF
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
PDF
Mavenの真実とウソ
by
Yoshitaka Kawashima
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
by
ssuser868e2d
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
Dockerからcontainerdへの移行
by
Kohei Tokunaga
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
Docker Compose 徹底解説
by
Masahito Zembutsu
Springを何となく使ってる人が抑えるべきポイント
by
土岐 孝平
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
これからSpringを使う開発者が知っておくべきこと
by
土岐 孝平
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
DynamoDBの初心者に伝えたい初めて触るときの勘所
by
Ryo Sasaki
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
Mavenの真実とウソ
by
Yoshitaka Kawashima
Similar to GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
PPTX
Guide to GraalVM (JJUG CCC 2019 Fall)
by
Koichi Sakata
PPTX
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
by
Shinji Takao
PDF
Spring native について
by
Takamasa Mitsuji
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
by
NTT DATA Technology & Innovation
PDF
GraalVM Native Imageが見せた未来
by
Rakuten Group, Inc.
PPTX
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
by
Shinji Takao
PPTX
Introduction to GraalVM and Native Image
by
Koichi Sakata
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
by
Koichi Sakata
PDF
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
by
apkiban
PPTX
Introduction to GraalVM
by
Koichi Sakata
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
PPTX
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
by
Koichi Sakata
PDF
Oracle code one 2018 報告会概要
by
Chihiro Ito
PDF
Getting Started GraalVM (再アップロード)
by
tamtam180
Guide to GraalVM (JJUG CCC 2019 Fall)
by
Koichi Sakata
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
by
Shinji Takao
Spring native について
by
Takamasa Mitsuji
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
by
NTT DATA Technology & Innovation
GraalVM Native Imageが見せた未来
by
Rakuten Group, Inc.
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
by
Shinji Takao
Introduction to GraalVM and Native Image
by
Koichi Sakata
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
by
Koichi Sakata
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
by
apkiban
Introduction to GraalVM
by
Koichi Sakata
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
by
Koichi Sakata
Oracle code one 2018 報告会概要
by
Chihiro Ito
Getting Started GraalVM (再アップロード)
by
tamtam180
More from apkiban
PPTX
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
by
apkiban
PDF
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
by
apkiban
PDF
What happens in Spring Cloud Netflix
by
apkiban
PDF
SpringOne Platform 2018 全体報告
by
apkiban
PDF
新しいTERASOLUNA Batch Frameworkとは
by
apkiban
PDF
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
by
apkiban
PDF
TERASOLUNA Framework on the Spring IO Platform
by
apkiban
PPTX
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
by
apkiban
PDF
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
by
apkiban
PPTX
バッチは地味だが役に立つ
by
apkiban
PDF
Spring 5 でSpring Test のここが変わる
by
apkiban
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
by
apkiban
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
by
apkiban
What happens in Spring Cloud Netflix
by
apkiban
SpringOne Platform 2018 全体報告
by
apkiban
新しいTERASOLUNA Batch Frameworkとは
by
apkiban
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
by
apkiban
TERASOLUNA Framework on the Spring IO Platform
by
apkiban
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
by
apkiban
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
by
apkiban
バッチは地味だが役に立つ
by
apkiban
Spring 5 でSpring Test のここが変わる
by
apkiban
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
1.
© 2019 NTT
DATA Corporation 2019/6/24 日本Springユーザ会主催 Spring I/O 2019報告会 株式会社NTTデータ システム技術本部 高須隼太 GraalVMの概要と、Native-Image化による Spring Boot爆速化の夢
2.
© 2019 NTT
DATA Corporation 2 名前:高須 隼太(たかす はやた) 所属:株式会社NTTデータ システム技術本部 インテグレーション技術センタ 仕事:Struts → Springのマイグレーションを専門として 様々な更改プロジェクトを支援しています その他:JSUG 初参加 CodeZineにSpring I/O 2019参加レポートを寄稿予定! 誰?
3.
© 2019 NTT
DATA Corporation 3 Spring I/O 2019の講演内容を元に、 GraalVMって何?すごいの? Springで使えそう? をかいつまんで説明します 何しに来たの?
4.
© 2019 NTT
DATA Corporation 4 1. GraalVMってなに? 2. GraalVMを支える技術 – Graalコンパイラ – Truffle – Native Image 3. GraalVMをSpring Bootで使うには – 起動JDKとしての利用 – Native Image化の現状と課題 – 今後の対応予定 もくじ ※1,2の引用元:『GraalVM for Java developers』 Oleg Šelajev – Oracle
5.
© 2019 NTT
DATA Corporation 5 • Oracleが開発した多言語対応の仮想マシン • JVM言語のネイティブコンパイルに対応 • 2019年5月に本番運用可能バージョン「GraalVM 19.0」リリース GraalVMってなに?
6.
© 2019 NTT
DATA Corporation 6 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
7.
© 2019 NTT
DATA Corporation 7 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
8.
© 2019 NTT
DATA Corporation 8 GraalVM従来のJVM • JIT(Just-In-Time)コンパイラ • Javaで実装されているため、維持保守や改良が容易 • 最適化技術に改良が加えられ、パフォーマンスが向上 Graalコンパイラ HotSpot VM Compiler Interface C1コンパイラ C2コンパイラ HotSpot VM Compiler Interface C1コンパイラ Graal コンパイラ JVMCI C++ Java
9.
© 2019 NTT
DATA Corporation 9 JVMベンチマーク(Renaissance Benchmark Suite) https://renaissance.dev/ • 従来のOpenJDKに比べて、様々なベンチマークで速度が向上!
10.
© 2019 NTT
DATA Corporation 10 Stream APIベンチマーク private double[] values = new double[2000000]; public double mapReduce() { return Arrays.stream(values) .map(x -> x + 1) .map(x -> x * 2) .map(x -> x + 5) .reduce(0, Double::sum); } https://medium.com/graalvm/stream-api-performance-with-graalvm-be6cfe7fbb52
11.
© 2019 NTT
DATA Corporation 11 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
12.
© 2019 NTT
DATA Corporation 12 • 言語インタプリタの実装フレームワーク • 1つのVM上で様々な言語の相互運用が可能(Polyglot VM) • Graalコンパイラを利用して高速実行が可能 Truffle Truffle LLVM Graalコンパイラ
13.
© 2019 NTT
DATA Corporation 13 • Javaから他の言語を簡潔に呼び出し可能 Polyglot import org.graalvm.polyglot.*; public class HelloPolyglotWorld { public static void main(String[] args) throws Exception { System.out.println("Hello World from Java!"); Context context = Context.newBuilder().allowAllAccess(true).build(); context.eval("js", "print('Hello World from JavaScript!');"); context.eval("python", "print('Hello World from Python!')"); context.eval("ruby", "puts 'Hello World from Ruby!'"); context.eval("R", "print('Hello World from R!')"); } }
14.
© 2019 NTT
DATA Corporation 14 JavaScriptベンチマーク(Octane benchmark) https://medium.com/graalvm/oracle-graalvm-announces-support-for-nashorn-migration-c04810d75c1f • Nashorn, Rhinoに比べて、圧倒的に速いJavaScript実行
15.
© 2019 NTT
DATA Corporation 15 GraalVMの主要技術 GraalVM Graal コンパイラ Truffle Native Image
16.
© 2019 NTT
DATA Corporation 16 • JVM言語をAOT(Ahead-Of-Time)コンパイルしたもの • VMが組込まれており、スタンドアロンで実行可能 • アプリ起動時にクラスロードや初期化処理が不要 → 超高速起動が見込める! Native Image https://medium.com/graalvm/understanding-class-initialization-in-graalvm-native-image-generation-d765b7e4d6ed Native Image
17.
© 2019 NTT
DATA Corporation 17 役に立ちそうなことは わかった
18.
© 2019 NTT
DATA Corporation 18 じゃあ、Springでも 使えるのか?
19.
© 2019 NTT
DATA Corporation 19 • Spring Bootの起動JDKの代わりに使うなら超簡単 • インストールフォルダのbin/javaにパスを通すだけ 自分で試してみる
20.
© 2019 NTT
DATA Corporation 20 • Spring Bootの起動JDKの代わりに使うなら超簡単 • インストールフォルダのbin/javaにパスを通すだけ • 起動が少し速くなっている 自分で試してみる $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1561 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.65 seconds (JVM running for 3.283) GraalVM CE 19.0.2 → 2.65秒(9%向上) OpenJDK 12.0.1 → 2.905秒 ※Hello Worldレスポンス返すだけのアプリで計測。繰り返して平均取っても大体同じくらい
21.
© 2019 NTT
DATA Corporation 21 • 残念ながら現時点では制約が多い・・・(そのままではコンパイルできない) じゃあ目玉のNative Image化は? https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md https://github.com/spring-projects/spring-framework/issues/21529 静的なAOTコンパイルを適用するためには、 手動による追加設定・コマンド引数の指定が必要 Springはリフレクションやダイナミックプロキシによる 動的なクラス生成を多用 ↓ https://github.com/spring-projects/spring-framework/issues/22968 Andy Clement (on GitHub) 「FW本体およびツールレベル両方で、 GraalVM用の機能を実装する必要がある」 https://github.com/spring-projects/spring-framework/wiki/GraalVM-native-image-support ※制約の詳細や現在の設定ノウハウ等はGitHub参照
22.
© 2019 NTT
DATA Corporation 22 • 2020年Q2のSpring 5.3でNative-Image化に対応予定! 今後の対応予定はあるの? Juergen Hoeller Spring開発リーダー • Spring Boot Native-Image化機能の「乱雑なプロトタイプ」が開発・公開中 https://github.com/aclement/spring-boot-graal-feature 2020年Q2リリース予定のSpring 5.3では設定が 自動的に行われるよう、GraalVM開発チームと協力 して技術的課題の解決に努めていく。
23.
© 2019 NTT
DATA Corporation 23 • ダウンロード・ビルドする • sample/demo のSpring Bootアプリ (Hello world) をネイティブイメージ化してみる プロトタイプを自分で試してみる① $ git clone https://github.com/aclement/spring-boot-graal-feature.git $ mvn package … [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ spring-boot-graal-feature --- [INFO] Building jar: /xxx/spring-boot-graal-feature/target/spring-boot-graal- feature-0.5.0.BUILD-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS $ sample/demo/compile.sh
24.
© 2019 NTT
DATA Corporation 24 • ダウンロード・ビルドする • sample/demo のSpring Bootアプリ (Hello world) をネイティブイメージ化してみる プロトタイプを自分で試してみる① ※2019/06時点の実装 $ git clone https://github.com/aclement/spring-boot-graal-feature.git $ mvn package … [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ spring-boot-graal-feature --- [INFO] Building jar: /xxx/spring-boot-graal-feature/target/spring-boot-graal- feature-0.5.0.BUILD-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS $ sample/demo/compile.sh • 対象jarを分解して • native化機能のクラスファイルにマージし、 • 引数にクラスパスを指定してnative-imageコマンドを叩く 実装になっている
25.
© 2019 NTT
DATA Corporation 25 • native compileに時間がかかったが、なんとか実行ファイルが完成 プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms
26.
© 2019 NTT
DATA Corporation 26 • native compileに時間がかかったが、なんとか実行ファイルが完成 プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄
27.
© 2019 NTT
DATA Corporation 27 • native compileに時間がかかったが、なんとか実行ファイルが完成 • 早速jar実行と比較してみる プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄ GraalVM CE 19.0.2 (native-image for Mac OS HS) → 0.081秒 $ ./demo … INFO: Started DemoApplication in 0.081 seconds (JVM running for 0.084) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) OpenJDK 12.0.1 → 2.905秒 ※繰り返して平均取っても大体同じくらい
28.
© 2019 NTT
DATA Corporation 28 • native compileに時間がかかったが、なんとか実行ファイルが完成 • 早速jar実行と比較してみる プロトタイプを自分で試してみる② [demo:1255] [total]: 700,054.90 ms → _人人人人人_ > 11分 <  ̄Y^Y^Y^Y^Y^ ̄ GraalVM CE 19.0.2 (native-image for Mac OS HS) → 0.081秒 $ ./demo … INFO: Started DemoApplication in 0.081 seconds (JVM running for 0.084) $ java –jar demo-0.0.1-SNAPSHOT.jar … INFO 1558 --- [main] com.example.demo.DemoApplication : Started DemoApplication in 2.905 seconds (JVM running for 3.487) OpenJDK 12.0.1 → 2.905秒 _人人人人人_ > 35倍 <  ̄Y^Y^Y^Y^Y^ ̄ ※繰り返して平均取っても大体同じくらい
29.
© 2019 NTT
DATA Corporation 29 • 起動速度は流石で、性能が重要なシステムにハマる余地はあるかも • ただ、まだ発展途上感は否めない • 複雑なSpringアプリケーションをNative化できるかは未知数 → Native化可能なクラスは増えているが、まだ全てではない • ビルド時間が非常に長い → OSやスペックによる気もするが・・・ • 来年のリリースに向けて今後に期待! プロトタイプに関する所感
30.
© 2019 NTT
DATA Corporation 30 • GraalVM = 速く、様々な言語に対応している仮想マシン • JDKの代わりに起動に使うだけでも有用かも • Native-Image化で起動速度が爆速になるが、Spring Bootで使う にはまだ課題有 • Spring 5.3で対応予定のため、2020まで待つべし! • 開発中の機能が公開されているので試してみてもいいかも まとめ
31.
© 2019 NTT
DATA Corporation
Download