SlideShare una empresa de Scribd logo
1 de 31
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すごい

Más contenido relacionado

La actualidad más candente

「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
Batch processing and Stream processing by SQL
Batch processing and Stream processing by SQLBatch processing and Stream processing by SQL
Batch processing and Stream processing by SQL
SATOSHI TAGOMORI
 

La actualidad más candente (20)

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

Similar a Great Ideas in GraalVM

Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internals
Makoto Kato
 
Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発
takeuchi-tk
 
PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -PhoneGap勉強会 - 実践編 -
PhoneGap勉強会 - 実践編 -
Katsumi Onishi
 

Similar a Great Ideas in GraalVM (20)

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

Más de Koichi Sakata

KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 

Más de Koichi Sakata (20)

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

Great Ideas in GraalVM