Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Great Ideas in GraalVM

1,991 views

Published on

2018/08/23(Wed)の【京都】LINE Developer Meetup #43で使用したスライドです。

GraalVMのPolyglot(Language、RDBMS)について触れています。

Published in: Technology
  • Be the first to comment

Great Ideas in GraalVM

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

×