OCHaCafe2 #2 一体何モノなの?GraalVM入門編 行ってきた | Advent Calendar 2019
IT系の勉強会行ってきた Advent Calendar 2019 - Adventar の18日目
個人的には使いどころがどこなのかわかってないGraalVMの話。
一体何モノなの?GraalVM入門編
- 言語のランタイムのひとつ、Oracleラボで開発されたものがOSSが公開
- Graal(JITコンパイラ), Truffleを持つ多言語に対応したJVM
- 単一ランタイムで複数のプログラミング言語を動かせる
- サイズの小さいJVMコンテナを作れる
- エディションが2つ
CommunityEditionと機能拡張されたEnterpriseEdition
OracleCloudではGraalVM EEが無償利用可能
内部で使われてる名称
- Graal:Javaで再実装されたJITコンパイラ
- Truffle:多言語対応のための仕組み、任意の言語インタプリタを実装するためのフレームワーク、ASTを生成するAPIを提供
- Sulong:LLVMビットコードのインタープリタ
NativeImageについて
- JITはインタプリタ型、AOTなので事前コンパイラ型
- JITは動き方に合わせた最適化が実行される
- AOTは起動後初期のパフォーマンスに強み
- JSの関数実行結果をJavaの変数に入れるとかが可能になる
- デモ:jarとネイティブの違い 0.3msと0.003msくらい違う
SQLからJavaScript実行したり多言語間での呼び出しが可能なのはすごいが、
実運用で保守や改修するときに地獄を見そうでちょっと怖かった。
用途としてはコマンドラインツール作るときか、マイクロサービス用のフレームワークで実行が早いjarを作る必要がある場面くらいなんだろうか。