Submit Search
Upload
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
•
Download as PPTX, PDF
•
1 like
•
775 views
Koichi Sakata
Follow
2019/10/24 Oracle Groundbreakers APAC 2019 Tour in Tokyo GraalVM入門
Read less
Read more
Technology
Report
Share
Report
Share
1 of 85
Download now
Recommended
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
NTT DATA Technology & Innovation
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
Recommended
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
NTT DATA Technology & Innovation
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji Kubota
Async DeepDive basics
Async DeepDive basics
Kouji Matsui
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
Spring native について
Spring native について
Takamasa Mitsuji
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Yahoo!デベロッパーネットワーク
Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
Java 9 and Future #jjug
Java 9 and Future #jjug
Yuji Kubota
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
More Related Content
What's hot
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Kouji Matsui
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji Kubota
Async DeepDive basics
Async DeepDive basics
Kouji Matsui
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
Spring native について
Spring native について
Takamasa Mitsuji
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Yahoo!デベロッパーネットワーク
Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
Java 9 and Future #jjug
Java 9 and Future #jjug
Yuji Kubota
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
What's hot
(20)
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Unified JVM Logging
Unified JVM Logging
これからの「async/await」の話をしよう
これからの「async/await」の話をしよう
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Async DeepDive basics
Async DeepDive basics
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Spring native について
Spring native について
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Java仮想マシンの実装技術
Java仮想マシンの実装技術
Java 9 and Future #jjug
Java 9 and Future #jjug
今日から始めるLaravel
今日から始めるLaravel
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Similar to Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
Gradle handson
Gradle handson
Nemoto Yusuke
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
kyon mm
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
tamtam180
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
Grailsのススメ(仮)
Grailsのススメ(仮)
Tsuyoshi Yamamoto
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
Oracle Code One - Java KeynoteとJava SE
Oracle Code One - Java KeynoteとJava SE
Yuichi Sakuraba
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
masanori kataoka
Java in the World of Container by David Buck
Java in the World of Container by David Buck
オラクルエンジニア通信
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
伸男 伊藤
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
Yoichiro Sakurai
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
Similar to Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
(20)
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
TruffleSqueakの紹介
TruffleSqueakの紹介
Gradle handson
Gradle handson
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
Play jjug2012spring
Play jjug2012spring
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Grailsのススメ(仮)
Grailsのススメ(仮)
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Oracle Code One - Java KeynoteとJava SE
Oracle Code One - Java KeynoteとJava SE
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
Java in the World of Container by David Buck
Java in the World of Container by David Buck
JVMの中身を可視化してみた
JVMの中身を可視化してみた
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
明日から使えるgradle
明日から使えるgradle
More from Koichi Sakata
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Koichi Sakata
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
Koichi Sakata
Great Ideas in GraalVM
Great Ideas in GraalVM
Koichi Sakata
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
Koichi Sakata
Kanjava 201804 Java News
Kanjava 201804 Java News
Koichi Sakata
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
from Java EE to Jakarta EE
from Java EE to Jakarta EE
Koichi Sakata
Java release cadence has been changed and about Project Amber
Java release cadence has been changed and about Project Amber
Koichi Sakata
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説
Koichi Sakata
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
“Purikura” culturein Japan andour web application architecture
“Purikura” culturein Japan andour web application architecture
Koichi Sakata
デブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わった
Koichi Sakata
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
日本からJavaOneに行こう!
日本からJavaOneに行こう!
Koichi Sakata
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
How Scala code is expressed in the JVM
How Scala code is expressed in the JVM
Koichi Sakata
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Koichi Sakata
DevLOVE関西 5年目、10年目の自分戦略 20141030
DevLOVE関西 5年目、10年目の自分戦略 20141030
Koichi Sakata
JITコンパイルはじめの一歩
JITコンパイルはじめの一歩
Koichi Sakata
More from Koichi Sakata
(20)
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
Great Ideas in GraalVM
Great Ideas in GraalVM
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
Kanjava 201804 Java News
Kanjava 201804 Java News
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
from Java EE to Jakarta EE
from Java EE to Jakarta EE
Java release cadence has been changed and about Project Amber
Java release cadence has been changed and about Project Amber
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
“Purikura” culturein Japan andour web application architecture
“Purikura” culturein Japan andour web application architecture
デブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わった
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
日本からJavaOneに行こう!
日本からJavaOneに行こう!
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
How Scala code is expressed in the JVM
How Scala code is expressed in the JVM
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
DevLOVE関西 5年目、10年目の自分戦略 20141030
DevLOVE関西 5年目、10年目の自分戦略 20141030
JITコンパイルはじめの一歩
JITコンパイルはじめの一歩
Recently uploaded
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Recently uploaded
(9)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
1.
2019年11月25日 阪田 浩一 /
ヤフー株式会社 GraalVM入門
2.
自己紹介 2 • 阪田 浩一
(@jyukutyo) • ヤフー株式会社 大阪拠点所属 • 第9代黒帯〜プログラミング言語(Java)〜 • JVMがとてつもなく好き • 関西Javaエンジニアの会 代表&創設者
3.
Oracle Code OneにおけるGraalVM 3 •
セッション数が激増 • 2017: 4 • 2019: 37 • 内容はさまざま (機能については後述) • GraalVMそのもの • フレームワークでのネイティブイメージ活用 • Polyglot関連
4.
GraalVMについての誤解 4 ❌ Javaの ネイティブイメージを 生成するためのツール
5.
このセッションのゴール 5 GraalVMの概要を知り、 触ってみたくなること
6.
GraalVMを一言で言うと 6 ユニバーサルVM
7.
ここでのユニバーサルとは 7 あらゆる言語の 実行環境となれる 能力と機能が あること
8.
従来のJVMで実行できる言語 8 • Java • JVM用に新たに作成したもの •
Scala, Kotlin, Groovyなど • 他言語をJVM上に実装したもの • JRubyなど • など多数
9.
現在GraalVMで実行できる言語 9 • JVMで実行できる言語すべて • JavaScript •
Ruby • Python • R
10.
GraalVMの構造 10 JVM (HotSpot VM) +
α
11.
+ α 機能の1つ 11 •
Truffle: 言語実装用のライブラリ • このライブラリを用いて実装した言語は、 すべてGraalVM上で実行できる • トラフル (英)、トリュフ (仏)
12.
Truffleで実装した言語 12 • GraalJS (JavaScript) •
ECMAScript 2019 仕様互換実装、Node.js v10.16.3 • TruffleRuby (Ruby, Experimental) • Ruby 2.6.2 ベ ー ス • GraalPython (Python , Experimental) • Python3.7準拠 • FastR (R , Experimental) • GNU R 3.5.1 互換実装
13.
デモ 13 GraalVMで JavaScriptを実行
14.
セットアップ 14 https://www.graalvm.org/
15.
GraalVMの2つのエディション 15 • Community Edition
(CE) • OSS (クラスパス例外付き GPL v2) • Enterprise Edition (EE) • ライセンス契約が必要 (評価は無償) • CEよりパフォーマンスがよい • CEよりネイティブコードのセキュリティ を強化している
16.
Oracle Labsが 開発 16
17.
GraalVM EEも Always Freeの 対象です 17
18.
以降は CEを前提にします 18
19.
デモ 19 GraalVMで JavaScriptを実行
20.
(なお、Java 11で Nashornは非推奨に なりました) 20
21.
単に各言語を 実行できるだけでは ない 21
22.
パフォーマンスを大幅に 低下させることなく、 言語間で 相互呼び出しができる 22
23.
デモ 23 JavaScriptから Javaを呼び出す
24.
GraalVMのビジョン 24 パフォーマンスを 犠牲にせず、 言語間の抽象化をする
25.
GraalVMとは 25 さまざまな言語を 実行できる (polyglot)、 ユニバーサルVM
26.
開発ツールの サポートもある 26
27.
Google Chrome DevToolsでのデバッグ 27
28.
Graal VisualVM 28
29.
デモ 29 Chrome DevTools でのデバッグ
30.
あの処理、 別の言語のライブラリを 使うとすぐできるのに… 30
31.
GraalVMとHotSpot VMの違い 31 HotSpot VM Compiler
Interface C2C1 HotSpot VM C++ GraalVM Compiler Interface GraalVM JITコンパイラC1 HotSpot VM JVMCI Java
32.
GraalVM JITコンパイラ 32 • JVMCI
(JVM Compiler Interface) を用いて 作成した新JITコンパイラ • 以前は単にGraalと言われていた • Javaで書かれている
33.
ベンチマーク 33 現時点のベンチマーク結果は、右下の URLからご確認ください https://renaissance.dev/
34.
アロケーションの多い アプリケーションには、 GraalVM JITコンパイラが 有効 34
35.
たとえば リアクティブストリーム で構築したものや 35
36.
Scalaなど 関数型プログラミング モデルで構築したもの 36
37.
Twitter社の事例 37 • OpenJDKベースの独自JDKに、GraalVM JITコ ンパイラをバックポート •
2年前2017年には、すでに本番環境で活用 • 数千台のサーバ、Scalaアプリケーション • サーバリソースを削減し、台数削減 • 大きなコスト削減になった
38.
GraalVM JITコンパイラ 38 • Truffleで実装した言語は、 GraalVM
JITコンパイラでの動作を 前提とする
39.
GraalVMで動作する言語 39 HotSpot VM JVMCI GraalVM JITコンパイラ JVM⾔語
Truffle LLVMJS R Python C C++ Fortran Ruby Java, Kotlin, Scala, JRubyなど
40.
言語実装のしくみ 40 対象言語のASTの インタプリタを Truffle APIを用いて Javaで実装する
41.
対象コードのASTと インタプリタの両方を 評価することで 高性能のコードを 生成できる 41
42.
ゴールドマン・サックス社の事例 42 • 1990年代初め、独自に言語を開発 • 現在までコードが増え続ける •
言語自体の運用開発が課題に
43.
ゴールドマン・サックス社の事例 43 • その言語をTruffleベースに移行 • 他言語との相互呼び出しが可能に •
言語実装のメンテナンス性が向上した • 実行パフォーマンスが向上した • 事例発表動画 • Oracle Code One 2018: https://www.youtube.com/watch?v=MUECwHdr07Q
44.
究極的には 44 自分で実装した プログラミング言語を GraalVMで実行できる
45.
私もやってみました 45 https://github.com/jyukutyo/JVM-Math-Language
46.
言語実装サンプル 46 • GraalVMのリポジトリ内 • SimpleLanguage •
https://github.com/graalvm/simplelanguage • Simpleとあるけれど、簡単ではない
47.
ここまでの内容 47 • GraalVM • GraalVM
JITコンパイラ • Truffle: 言語実装用ライブラリ • パフォーマンスを犠牲にせず 言語間の抽象化をする
48.
ここまで ネイティブイメージの 話題なし 48
49.
GraalVMのネイティブイメージ生成 49 • ネイティブイメージ (実行可能なバイナリ) を生成する機能 •
生成したイメージ (ファイル) をそのまま 実行する • つまり、起動にJVM (JDK/JRE) が不要
50.
この機能と、 今までの機能に 何の関連が?? 50
51.
答えは、 Oracle Database 51
52.
Oracle Database 52 • ユーザ定義関数をJavaで作成できる しかし、 •
GraalVMの機能を組み込めば、Javaは もちろん、他言語も使える • 機能の更新は、GraalVM側に任せられる
53.
Oracle Databaseに GraalVMを組み込む 53
54.
Oracle Databaseへ組み込むには 54 • JVMが課題 •
サイズが大きい • 初期化処理が長い • メモリ使用量が大きい • そのままでは、データベースでの 利用はできない
55.
GraalVM自体を ネイティブイメージに する! 55
56.
ネイティブイメージにすると 56 • JVMが不要 • サイズが小さく済む •
起動時間が短くなる • メモリ使用量が少なくなる • ただし、同じプラットフォームでしか 動作しない
57.
Oracle Database MLE 57 •
MLE: Multilingal Engine • https://www.oracle.com/technetwork/database/multilingual- engine/overview/index.html • MySQLでもMLE Pluginを開発中 select validator.isEmail('alice@example.com’) from dual;
58.
こうした経緯で開発した ネイティブイメージ 生成機能が GraalVMの機能の1つ となった 58
59.
デモ 59 ネイティブイメージ 生成
60.
+ α 機能の1つ 60 •
Substrate VM • ネイティブイメージの生成ツール、実行VM • 実行時、GCやスレッドのスケジューリング、 コードのキャッシュなどを実施 • 単にVMであって、JVMではない
61.
ネイティブイメージ生成プロセス 61 アプリケーション ライブラリ JDK Substrate VM 下記の繰り返し: 解析ポイント ↓ 初期化処理実⾏ ↓ ヒープのスナップショット⽣成 ELFファイル コード (textセクション) イメージヒープ (dataセクション)
62.
生成時に 初期化処理を実行し、 起動時間を 短縮する 62
63.
生成において、 混乱しやすい部分を いくつか紹介します 63
64.
生成時の初期化 64 import java.util.Date; class InitializedDate
{ static final Date INITIALIZED_DATE = new Date(); } class InitializeSample { public static void main(String[] args) { System.out.println("INITIALIZED_DATE: " + InitializedDate.INITIALIZED_DATE); System.out.println("main: " + new Date()); } } 2つの日付は、異なる??
65.
初期化タイミング 65 • アプリケーションのクラスは、 すべて実行時に初期化 • それ以外のクラスは、生成時初期化 •
--initialize-at-build-time=[クラス名] • 生成時に初期化 • --initialize-at-run-time=[クラス名] • 実行時に初期化
66.
生成時初期化を指定すると… 66 import java.util.Date; class InitializedDate
{ static final Date INITIALIZED_DATE = new Date(); } class InitializeSample { public static void main(String[] args) { System.out.println("INITIALIZED_DATE: " + InitializedDate.INITIALIZED_DATE); System.out.println("main: " + new Date()); } } $ ./initializesample INITIALIZED_DATE: Wed Oct 23 15:05:19 JST 2019 main: Wed Oct 23 15:08:07 JST 2019
67.
リフレクションやJNIのサポート 67 • 現在は利用可能に 1. 生成時の静的解析 •
Class.getMethod(String, Class[]) など 2. 設定ファイルに明示的に記述 • 参考: Tracing Agent
68.
リフレクション利用設定 68 [ { "name" : "java.lang.String", "fields"
: [ { "name" : "value", "allowWrite" : true } ], "methods" : [ { "name" : "format", "parameterTypes" : ["java.lang.String", "java.lang.Object[]"] } ] } ]
69.
ライブラリでの対応 69 • 設定ファイルを META-INF/native-imageに配置 • 生成時に自動的に読み込まれる
70.
ネイティブイメージの現状 70 • Experimental • サポートプラットフォーム •
x86 64ビットシステム • LinuxまたはmacOS
71.
ネイティブイメージのメリットまとめ 71 • 起動時間が短くなる • メモリ使用量が少なくなる •
サイズが小さくなる
72.
どんなアプリケーション でも、 ネイティブイメージに する方がよいのか? 72
73.
JITコンパイル (JVM) と AOTコンパイル (GraalVM) 73
74.
https://twitter.com/thomaswue/status/1145603781108928513
75.
ネイティブイメージが適切なケース 75 • FaaS • 起動してすぐに終了する •
クラウドで実行する 大規模アプリケーション • リソースを節約し、コストを削減する
76.
ネイティブイメージ対応フレームワーク 76 • Micronaut • Quarkus •
Helidon • Spring Framework, Bootも対応作業中 (現在はExperimental)
77.
GraalVMのリリースロードマップ 77 • 3ヶ月ごと、年4回のリリース • 2019/11
– GraalVM 19.3 • 2020/02 – 20.0 • 2020/05 – 20.1 • 2020/08 – 20.2 • 2020/11 – 20.3
78.
11月の19.3にて、 Java 11対応予定! (現状8のみ) 78
79.
GraalVMのリリースロードマップ 79 • 年間最後のリリースは、LTS • 2019/11
– 19.3 • 2020/11 – 20.3 • 次の1年間、アップデートを提供 • 19.3は、2020年末まで • 20.3は、2021年末まで • CEのケースであり、EEは別となる
80.
OpenJDKとは別の、 独立した開発 80
81.
GraalVMのパッチアップデート 81 • 1月、4月、7月、10月 • 2020/02
– 20.0 • 2020/04 – 20.0.1(CPU) <- LTS以外は1回のみ ... • 2020/11 – 20.3 • 2021/01 – 20.3.1(CPU) • 2021/04 – 20.3.2(CPU) • 2021/07 – 20.3.3(CPU) • 2021/10 – 20.3.4(CPU)
82.
AOTでも JITと同じくらいの ピーク時パフォーマンス が今後の目標、 とのこと 82
83.
まとめ GraalVMとは 83 • GraalVM
JITコンパイラ • Truffle • 言語実装用ライブラリ • SubstrateVM • ネイティブイメージ用ツール
84.
GraalVMの2つのモード 84 • JITモード • JVMとGraalVM
JITコンパイラで アプリケーションを実行 • AOTモード • ネイティブイメージを生成し、JVMなしで アプリケーションを実行 • どちらのモードのことなのか、意識する
85.
GraalVMのサンプル事例 85 • GraalVM JITコンパイラ単体で、 ピーク時のパフォーマンスを向上させる •
Truffleで、複数言語を活用した アプリケーションを構築 • SubstrateVMで、ネイティブイメージを 生成し、起動時間短縮とリソース消費削減
Download now