GraalVM
Java仮想マシン(JVM) およびJITコンパイラの技術を利用した多言語対応の汎用仮想マシン。
Twitter社でも取り入れられている。
特徴
多言語対応
JVM
- Scala
- Kotlin
- Groovyなど
Java以外の言語の実行にも対応している。総称して「JVM言語」。JRubyやJythonといった,既存言語のJVM用実装もJVM言語。
GraalVM
- JavaScript
- R言語
- Ruby
- Python
- C/C++
のようなLLVMベース(?)の言語の実行にも対応。同一の仮想マシンを用いて異なる複数の言語を実行できるだけでなく,複数の言語のコードが混在したプログラムを実行することもできる。
機能
Graal
JVM用の新しいJITコンパイラ。
JavaのJITコンパイラは,コンパイラが生成したJavaバイトコードを読み込んで機械語を生成する。現在のJVMは,このJITコンパイラのエンジン部分のみを差し替えて実行できる仕組みを備えている。GraalVMは,このJITコンパイラ部分にGraalを採用することで高速化を実現。
Truffle
自前のプログラミング言語を実装するためのフレームワーク。
Truffleはプログラムのソースコードを解析してAST(抽象構文木)を生成するためのAPIを提供しています。JVM言語に関してはもともとGraalで実行できるため,TruffleはJavaScriptやRubyなどJVM言語以外の言語のために使われている。
Javaの実行がめちゃくちゃ早い
- GraalVMに搭載されているGraalはモダン実装を取り入れたコンパイラ。コンパイラエンジンをGraalに置き換えるだけでパフォーマンスが向上するケースも。
- 様々な言語もJavaの実行ファイルに変換され、高パフォーマンスで実行される。
まとめ
- VMの多言語対応の走り
- Springなどの動的にクラスを作り出すものにはまだ対応していない
- CEがリリースされたらしいので今度試してみたい
- Dockerhubにもあがってた!