GraalVMは、異なるプログラミング言語を同じランタイム環境で動作させ、相互運用性を提供する強力なランタイムです。この投稿では、GraalVMの中でのJVM言語とTruffle言語の違い、そしてそれらを統合するPolyglot APIについて簡潔に説明します。
1. JVM言語とは?
JVM言語は、Java仮想マシン(JVM)上で動作するプログラミング言語の総称です。代表的なものには以下の言語があります:
- Java
- Kotlin
- Scala
- Groovy
これらの言語はすべてバイトコードにコンパイルされ、JVM上で実行されます。
2. Truffle言語とは?
Truffle言語は、GraalVMのTruffleフレームワークを使って実装された言語です。GraalVM環境では、Truffle言語もJVM言語と同様に、他の言語と統合して使用することができます。代表的なTruffle言語は以下の通りです:
- Python
- JavaScript
- Ruby
GraalVM上でのPython実装はGraalPyと呼ばれ、Truffleフレームワークを使って実装されています。
3. Polyglot APIとは?
Polyglot APIは、異なる言語同士の連携を可能にするGraalVMの中核機能です。これを利用することで、JVM言語とTruffle言語が同じアプリケーション内でシームレスにやり取りできるようになります。
Polyglot APIの例
以下は、JavaからPythonコードを呼び出す例です:
import org.graalvm.polyglot.*;
public class Main {
public static void main(String[] args) {
// GraalVMコンテキストの作成
try (Context context = Context.create()) {
// Pythonコードを実行
context.eval("python", "print('Hello from Python')");
}
}
}