SlideShare a Scribd company logo
GraalVMが照らす未来
関西Javaエンジニアの会
阪田 浩一
#kanjava
About Me
• 阪田 浩一 (Koichi Sakata)
• KanJava JUG Leader/Founder
•
• Twitter: @jyukutyo
• Blog: sakatakoichi.com
• JVMになりたい人
– GCとJITコンパイラに関心
http://www.graalvm.org/
Today’s Target
つかみづらい
GraalVMの概要を
把握する
Question
GraalVMは
JVM?
GraalVMは
JVMの機能を
すべて包含します
既存のJVMにできることは
すべてできます
ベースはHotSpot VM
ただし、
JITコンパイラが
異なります
HotSpotVM
Compiler Interface
C2C1
HotSpotVM
C++
GraalVM
Compiler
Interface
GraalC1
HotSpotVM
JVMCI
Java
GraalVM ≠ Graal
Graalは
Javaで書かれた
JITコンパイラ
Graalは
GraalVMの機能の核
GraalはJDKにもある
http://openjdk.java.net/jeps/317
Java 10以降でGraalを使う
java
-XX:+UnlockExperimentalVMOptions
-XX:+UseJVMCICompiler
-XX:+PrintCompilation
Main
Summary
• GraalVMは
–JVMにできることがすべてできる
–JITコンパイラGraalとは異なる
Graal JITコンパイラの
何がいいの?
Pros
1. Javaで書かれている
– C++で書かれたC2は、複雑化した
– コントリビュートを受けやすく
Pros
2. Graal向けに作られた
言語実装用フレームワークTruffleが
ある
Truffle
• トラフル(トリュフ)
• 言語実装用フレームワーク
– ASTインタプリタ構築の基盤を提供する
Truffleで実装した言語を
(Graalを通し)
GraalVM上で実行できる
何がうれしいの?
さまざまな言語を
実行できる環境として
高パフォーマンス
Polyglot on the JVM with Graal
さらに、その言語間で
相互に呼び出しできる
Truffleでの言語実装
HotSpot VM
JVMCI
Graal
JVM Lang Truffle
LLVMJS R Ruby
C C++
Fortran
Interpreter
Truffleでの言語実装
• TruffleRuby (Ruby)
– https://github.com/graalvm/truffleruby
• FastR (GNU R)
– https://github.com/graalvm/fastr
• Graal.js (JavaScript)
– ECMAScript 2018/Node.js 10.15.0
– https://github.com/graalvm/graaljs
• SimpleLanguage (学習用)
– https://github.com/graalvm/simplelanguage
Interoperability
Java <-> Truffle言語
はもちろん
Truffle言語間でも
(Ruby <-> JavaScriptなど)
e.g.) Call Ruby code
from JavaScript
Execute Ruby Code in JavaScript
js> var array = Polyglot.eval("ruby",
"[1,2,42,4]")
js> array[2]
42
[GRAALVM_HOME]/bin/polyglot --shell --jvm
https://www.sakatakoichi.com/entry/graalvmpolyglot
デバッグ
Debug on Chrome
デモ
自分で言語を実装することも
• 四則演算する言語を実装してみた
– https://github.com/jyukutyo/JVM-Math-Language
GraalVMとは
高パフォーマンスな
多言語実行環境
Introduction to GraalVM
Polyglot
=
多言語を実行できる
GraalVM
• 研究から生まれたプロダクト
– Oracle Labs
– ヨハネス・ケプラー大学
• オーストリア
• Compiler and JVM Research at JKU
– GraalやTruffleについての論文多数
• 大学内にOracle Labsのブランチがある
• オープンソース(Community Edition: 後述)
• https://github.com/oracle/graal
Now working
for Windows
Summary
• GraalVMは
–高パフォーマンスな多言語実行環境
–Polyglot VM
ネイティブイメージ化は
何なの?
Custom Part in GraalVM
• Graal
– JIT Compiler
• Truffle
– Language Implementation Framework
• Substrate VM
– Runtime Library and Tools for Java AOT Compiled
Code
AOTコンパイル
(Ahead-of-Time)
=
事前コンパイル
実行可能な
ネイティブイメージに
コンパイルすること
つまり、JVM不要
クラスロードなし
起動が高速になる!
JITコンパイルしないので
ピーク時の
パフォーマンスは落ちる
AOTコンパイルは
JITコンパイルと
違うのでは…?
AOT/JITコンパイル
• AOTコンパイル
– コードから機械語に
• JITコンパイル(JVMでの)
– バイトコードとプロファイルデータから
機械語に
バイトコード
と実行時の情報
から
機械語に
AOTコンパイル
コードをバイトコードに
変換するとして、
プロファイルデータなしでの
JITコンパイル
と捉えてみる
実装がこうなっている、
というより
あくまで捉え方の観点
他のJVM言語のコードも
ネイティブイメージに
できる以上、
遠からずな捉え方
https://openjdk.java.net/jeps/295
https://twitter.com/thomaswue/status/1145603781108928513
Summary
• Substrate VMは
–ネイティブイメージを生成する
小型の仮想マシン
GraalVMができる
具体的なこと
Top 10 Things To Do With GraalVM
1. High-performance
modern Java
2. Low-footprint, fast-
startup Java
3. Combine JavaScript, Java,
Ruby, and R
4. Run native languages on
the JVM
5. Tools that work across all
languages
6. Extend a JVM-based
application
7. Extend a native
application
8. Java code as a native
library
9. Polyglot in the database
10.Create your own
language
これから
何が起こるのか?
ネイティブイメージで
起動時間が短くなり
FaaSでもJavaが〜
処理ごとに
それが得意な言語を
使える
解析にはR、
機械学習にはPython、
Webフレームワークには
Javaを使う、など
(あくまで例)
デモ
データベースなど
ミドルウェアに
GraalVMが組み込まれ、
プログラミング言語を
使えるようにする
9. Polyglot in the database
Top 10 Things To Do With GraalVM
たとえば
ユーザ関数
他の言語のライブラリに
ある関数を
使えたら便利
Execute JavaScript Function in SQL
SQL> select validator.isEmail('alice@example.com’)
from dual;
VALIDATOR.ISEMAIL('ALICE@EXAMPLE.COM’)
-------------------------------------- 1
SQL> select validator.isEmail('bob@example') from dual;
VALIDATOR.ISEMAIL('BOB@EXAMPLE’)
-------------------------------- 0
https://www.sakatakoichi.com/entry/graalvmembeddeddb
SQL内でNode.jsの
validatorモジュールに
ある関数を使う
GraalVM-Embedded Database
• Oracle Database
– Oracle Multilingual Engine
(Oracle MLE)
• MySQL
– MySQL MLE Plugin
• Available shortly from MySQL Labs
Deploy With dbjs Command
$ dbjs deploy -uscott -p tiger
-c localhost:1521/ORCLCDB validator
+validator.js
...
├─┬isEmail
│ └──SCALAR FUNCTION VALIDATOR.ISEMAIL("p0" IN VARCHAR2) RETURN
NUMBER
...
Wrap Up
GraalVM is AWESOME!
Fin.

More Related Content

What's hot (20)

PDF
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
PDF
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
 
PDF
Unified JVM Logging
Yuji Kubota
 
PDF
これからの「async/await」の話をしよう
Kouji Matsui
 
PDF
MySQL/Ruby終了のお知らせ
Masahiro Tomita
 
PPTX
今日から始めるLaravel
Masaru Matsuo
 
PDF
Ruby紹介
Masahiro Tomita
 
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
PDF
Async DeepDive basics
Kouji Matsui
 
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
Yuta Matsumura
 
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
PDF
Laravel5.1 Release
Yuuki Takezawa
 
PPTX
.NET Compiler Platform
信之 岩永
 
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
PPTX
Project Jigsaw #kanjava
Yuji Kubota
 
PDF
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
 
PDF
Qt5 の新機能 2012/12/15
Takumi Asaki
 
PDF
キメるClojure
Yoshitaka Kawashima
 
PPTX
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
 
PDF
Laravel 5.1 LTSでサービスを作る
infinite_loop
 
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
 
Unified JVM Logging
Yuji Kubota
 
これからの「async/await」の話をしよう
Kouji Matsui
 
MySQL/Ruby終了のお知らせ
Masahiro Tomita
 
今日から始めるLaravel
Masaru Matsuo
 
Ruby紹介
Masahiro Tomita
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
Async DeepDive basics
Kouji Matsui
 
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
Yuta Matsumura
 
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
Laravel5.1 Release
Yuuki Takezawa
 
.NET Compiler Platform
信之 岩永
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
Project Jigsaw #kanjava
Yuji Kubota
 
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
 
Qt5 の新機能 2012/12/15
Takumi Asaki
 
キメるClojure
Yoshitaka Kawashima
 
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
sogdice
 
Laravel 5.1 LTSでサービスを作る
infinite_loop
 

Similar to Introduction to GraalVM (9)

PPTX
Great Ideas in GraalVM
Koichi Sakata
 
PPTX
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
NTT DATA Technology & Innovation
 
PPTX
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
PDF
Getting Started GraalVM (再アップロード)
tamtam180
 
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
PDF
Groovy Grails eXchage 2014 報告
Tsuyoshi Yamamoto
 
PDF
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
PDF
OSvのご紹介 in OSC2014 Tokyo/Fall
Takuya ASADA
 
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
Great Ideas in GraalVM
Koichi Sakata
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
Getting Started GraalVM (再アップロード)
tamtam180
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
Groovy Grails eXchage 2014 報告
Tsuyoshi Yamamoto
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
OSvのご紹介 in OSC2014 Tokyo/Fall
Takuya ASADA
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
Ad

More from Koichi Sakata (20)

PPTX
Introduction to JIT Compiler in JVM
Koichi Sakata
 
PPTX
Bytecode Manipulation with a Java Agent and Byte Buddy
Koichi Sakata
 
PPTX
Graal in GraalVM - A New JIT Compiler
Koichi Sakata
 
PPTX
Kanjava 201804 Java News
Koichi Sakata
 
PPTX
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
 
PPTX
from Java EE to Jakarta EE
Koichi Sakata
 
PPTX
Java release cadence has been changed and about Project Amber
Koichi Sakata
 
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
 
PPTX
KANJAVA PARTY 2017 前説
Koichi Sakata
 
PPTX
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
PPTX
“Purikura” culture in Japan and our web application architecture
Koichi Sakata
 
PPTX
デブサミ2017 Javaコミュニティ作ったら人生変わった
Koichi Sakata
 
PPTX
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
 
PPTX
日本からJavaOneに行こう!
Koichi Sakata
 
PPTX
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 
PDF
How Scala code is expressed in the JVM
Koichi Sakata
 
PDF
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Koichi Sakata
 
PDF
DevLOVE関西 5年目、10年目の自分戦略 20141030
Koichi Sakata
 
PDF
JITコンパイルはじめの一歩
Koichi Sakata
 
PDF
関ジャバ 20130731 invokedynamic
Koichi Sakata
 
Introduction to JIT Compiler in JVM
Koichi Sakata
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Koichi Sakata
 
Graal in GraalVM - A New JIT Compiler
Koichi Sakata
 
Kanjava 201804 Java News
Koichi Sakata
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
 
from Java EE to Jakarta EE
Koichi Sakata
 
Java release cadence has been changed and about Project Amber
Koichi Sakata
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
 
KANJAVA PARTY 2017 前説
Koichi Sakata
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
“Purikura” culture in Japan and our web application architecture
Koichi Sakata
 
デブサミ2017 Javaコミュニティ作ったら人生変わった
Koichi Sakata
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
 
日本からJavaOneに行こう!
Koichi Sakata
 
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 
How Scala code is expressed in the JVM
Koichi Sakata
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Koichi Sakata
 
DevLOVE関西 5年目、10年目の自分戦略 20141030
Koichi Sakata
 
JITコンパイルはじめの一歩
Koichi Sakata
 
関ジャバ 20130731 invokedynamic
Koichi Sakata
 
Ad

Recently uploaded (10)

PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 

Introduction to GraalVM