GraalVM 単語

グラールバーチャルマシン

1.8千文字の記事
これはリビジョン 2583476 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

GraalVMとは、さまざまな言語がシームレスに動作する仮想マシンである。

概要

GraalVMとは複数の言語をシームレスに動かす仮想マシンである。2018年4月17日にOracleによってversion 1.0が発表された。

サポートする言語同士でお互いを呼び出すことができ、その際にパフォーマンスの低下がないことを特長とする。

公式サイト

プラットフォーム

オープンソースのCommunity EditionではLinuxのみだが、有償のEnterprise EditionはMacOSもサポートする。

対応言語

サポートする言語は以下の通り。

  • JavaをはじめとするJVM言語(バイトコードを受け付ける)。
  • Node.jsを含むJavaScript(TypeScriptも入るのだろうか)。
  • LLVMによるC言語、C++、Rust(LLVMの中間コード(: bitcode)を受け入れる)。
  • Ruby, R, Pythonも実験的レベルでサポートするとのこと。

参考

GraalVMでなく、Graalというものがあり、GraalVMに含まれるJITコンパイラを指す。

Graal: 聖杯を意味する単語(英語ではGrailに相当)

動作原理

内部に複数の処理系を抱えているようだ。バージョン1.0時点では各処理系は現時点の最新版のようだが、各言語のデファクトスタンダードやリファレンス実装の変化についていけないリスクも

Java仮想マシン(JVM言語)

内部にOpenJDK 8を持っているようである。JVM言語はバイトコードに変換されるので、OpenJDKのJava仮想マシンで実行される。

Node.js(JavaScript)

ブラウザから独立して動作するJavaScriptインタプリタNode.jsも含まれているようだが、後述のようにJavaScriptの処理系はGraalVM自身も別に持っている。

Truffle

Javaで書かれたTruffle(トリュフの英語綴り、フランス語はtruffe)という構文解析器があり、JVM言語以外の言語はこちらが処理する。

LLVM(C, C++, Rust等)

コンパイルにLLVMを用いる言語は一旦bitcodeという中間コードに変換されるが、この中間コードのインタプリタがあり、それを実行するということのようである。対応する言語の例としてC言語、C++、Rustがあがっっている。LLVMを使用する言語であればSwiftやObjective-Cなどもいけそうな気がするが、名前があがっていないのはAppleと仲でも悪いのだろうか。

  • Sulong: GraalVMの一部であるbitocodeインタプリタ

JavaScript, Ruby, R, Python

JavaScriptを実行する機能は(JavaにもJavaScriptエンジンNashornが搭載されているが)独自に実装されているよう。他の試験的なサポート言語であるRuby, R, Pythonもこれを用いて独自に実装したもので、標準的インタプリタが内部に組み込まれているわけではない。

Native Image

ネイティブコード(機械語)への変換もサポートしている。バイトコードの実行時コンパイルを介さないので理論的にはJavaの実行が高速になるはずだが、バージョン1.0の段階では仮想マシンの起動時間はなくなるもののJava仮想マシンよりも速度が落ちる(改善予定)とのことで、多言語と連携する時に使用するということのようである。速度が改善されたとしても、Oracleのことだから有償版専用の機能とかになりそう。

仮想マシンにあるライブラリは使えないので、リフレクションなどで実行時にクラスを選んでロードするプログラムは動かないようだ。

関連項目

  • Oracle
  • Java
  • 仮想マシン
  • Node.js
  • LLVM
  • .NET Framework
  • オープンソース
  • プログラミング関連用語の一覧

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2026/01/09(金) 13:00

ほめられた記事

最終更新:2026/01/09(金) 12:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP