SlideShare a Scribd company logo
GraalVMの素敵な話
ポノス株式会社
じゅくちょー/阪田 浩一
#LINE_DM
@jyukutyo
Java
Virtual
Machine
- Java仮想マシン
http://www.graalvm.org/
http://www.graalvm.org/
Windows
対応作業中
GraalVM = HotSpot VM + α
GraalVMの+α部分
• Graal
– JITコンパイラ
• Truffle
– 言語実装フレームワーク/ASTインタプリタ
• Substrate VM
– Java AOTコンパイルコード構築のための
ランタイムライブラリとツール
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
http://www.graalvm.org/
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
Polyglot
Polyglot
HotSpot VM
JVMCI
Graal
JVM言語 Truffle
LLVMJS R Ruby
C C++
Fortran
インタプリタ
Polyglot on the JVM with Graal
単体の言語を
高パフォーマンスに
実行できるだけではない
例) JavaScriptコードから
Rubyコードを
“低コスト”で呼び出せる
JavaScriptからRuby
js>vararray= Polyglot.eval("ruby","[1,2,42,4]")
js> array[2]
42
[GRAALVM_HOME]/bin/polyglot --shell --jvm
https://www.sakatakoichi.com/entry/graalvmpolyglot
Chromeでのデバッグ
Interoperability
例) SQL文で
JavaScriptの関数を
呼び出せる
9. Polyglot in the database
Top 10 Things To Do With GraalVM
SQLからJavaScript
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文から
validatorモジュールの
isEmail関数を呼び出している
(Node.js)
データベースに
GraalVMを
組み込んでいる
GraalVMは
Node.js v8.11.1
に対応
GraalVM組み込みデータベース
• Oracle Database
–Oracle Multilingual Engine
(Oracle MLE)
• MySQL
–MySQL MLE Plugin
–近日中にMySQL Labsにて公開予定
Node.jsのモジュールを
データベースにデプロイする
dbjsコマンドでのデプロイ
$ dbjs deploy -uscott -p tiger
-c localhost:1521/ORCLCDB validator
+validator.js
...
├─┬isEmail
│ └──SCALAR FUNCTION VALIDATOR.ISEMAIL("p0" IN VARCHAR2) RETURN
NUMBER
...
自作関数も利用可能
$ echo "export function helloworld() : string
{ return 'HelloWorld'; }" > helloworld.ts
$ dbjs deploy -u scott -p tiger
-c localhost:1521/ORCLCDB helloworld.ts
+ helloworld.js
└─┬ helloworld
└── SCALAR FUNCTION HELLOWORLD.HELLOWORLD RETURN VARCHAR2
自作関数も利用可能
$sqlplus scott/tiger@localhost:1521/ORCLCDB
SQL>select helloworld() fromdual;
HELLOWORLD()
----------------------------------------------------
HelloWorld
データベースは
JavaScriptのみ対応
次はPythonの予定
まとめ
GraalVMすごい

More Related Content

PPTX
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
PPTX
Introduction to GraalVM and Native Image
PDF
CSRを自動生成する!
PDF
Starting qt5beta at_raspberry_pi Qtnagoya#6
PPTX
UniRx勉強会 reactive extensions inside(公開用)
PDF
Linuxのユーザーランドをinitから全てまるごとgolangで書く
PPTX
RgGen ご紹介
PDF
Qt5 の Input Method
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Introduction to GraalVM and Native Image
CSRを自動生成する!
Starting qt5beta at_raspberry_pi Qtnagoya#6
UniRx勉強会 reactive extensions inside(公開用)
Linuxのユーザーランドをinitから全てまるごとgolangで書く
RgGen ご紹介
Qt5 の Input Method

What's hot (20)

PDF
組み込みLinuxでのGolangのススメ
PPTX
WebRTC mediasoup on raspberrypi3
PDF
minneで学ぶクラウド脳
PDF
Qt5 の新機能 2012/12/15
PDF
Cプログラマのためのカッコつけないプログラミングの勧め
PDF
Pyconjp2014_implementations
PDF
組み込みLinuxでのGolangのススメ(Go con版)
PPTX
Rxに入門しようとしている
ODP
Perlと本気で向き合いたくない人と向き合う僕ら
PDF
Power Assert and perl.js
PDF
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
PDF
Cythonの一喜一憂
PDF
Pynqでカメラ画像をリアルタイムfastx コーナー検出
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
Inside FastEnum
PDF
Batch processing and Stream processing by SQL
PDF
Vivado hlsのシミュレーションとhlsストリーム
PDF
Markup Template Engine introduced Groovy 2.3
組み込みLinuxでのGolangのススメ
WebRTC mediasoup on raspberrypi3
minneで学ぶクラウド脳
Qt5 の新機能 2012/12/15
Cプログラマのためのカッコつけないプログラミングの勧め
Pyconjp2014_implementations
組み込みLinuxでのGolangのススメ(Go con版)
Rxに入門しようとしている
Perlと本気で向き合いたくない人と向き合う僕ら
Power Assert and perl.js
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
【Unite Tokyo 2019】Understanding C# Struct All Things
Cythonの一喜一憂
Pynqでカメラ画像をリアルタイムfastx コーナー検出
ng-japan 2015 TypeScript+AngularJS 1.3
Inside FastEnum
Batch processing and Stream processing by SQL
Vivado hlsのシミュレーションとhlsストリーム
Markup Template Engine introduced Groovy 2.3
Ad

Similar to Great Ideas in GraalVM (20)

PPTX
Introduction to GraalVM
PPTX
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
PDF
全部入り!WGPで高速JavaScript+HML5体験
PDF
VMを改めて学んで見る
PDF
Web技術勉強会 第31回
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
PPTX
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
PDF
Javaで1から10まで書いた話(sanitized)
PDF
Groovy Bootcamp 2015 by JGGUG
PPTX
Guide to GraalVM (JJUG CCC 2019 Fall)
PDF
Javaの登場と発展
PDF
Grailsのススメ(仮)
PDF
JVMの中身を可視化してみた
PDF
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
PDF
Firefox mobile for android internals
PDF
Java によるクラウドネイティブ の実現に向けて
PPTX
Webエンジニアによるスマートフォンアプリ開発
PPTX
Phone gap+javascriptスマホアプリ開発(入門編)
PDF
PhoneGap勉強会 - 実践編 -
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Introduction to GraalVM
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
全部入り!WGPで高速JavaScript+HML5体験
VMを改めて学んで見る
Web技術勉強会 第31回
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Javaで1から10まで書いた話(sanitized)
Groovy Bootcamp 2015 by JGGUG
Guide to GraalVM (JJUG CCC 2019 Fall)
Javaの登場と発展
Grailsのススメ(仮)
JVMの中身を可視化してみた
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
Firefox mobile for android internals
Java によるクラウドネイティブ の実現に向けて
Webエンジニアによるスマートフォンアプリ開発
Phone gap+javascriptスマホアプリ開発(入門編)
PhoneGap勉強会 - 実践編 -
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Ad

More from Koichi Sakata (20)

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

Great Ideas in GraalVM