GraalVM 単語

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

2.1千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

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

概要

GraalVMとは複数の言語をシーレスに動かす仮想マシンである。サポートする言語同士でお互いを呼び出すことができ、その際にパフォーマンスの低下がないことを特長とする。

2018年4月17日Oracleによってversion 1.0 RC1が発表されたが、その後1年ほどRCの状態が続いていた。2019年5月10日、RCがとれてversion 1.0になるかと思いきや、version 1.0 RC16からいきなりversion 19.0.0となった。2019年にリリースされたから19.0.0という方式である。

公式サイト

プラットフォーム

LinuxMacOSサポートから始まったが、WindowsDockerサポートしている。

対応言語

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

参考

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を使用する言語であればSwiftObjective-Cなどもいけそうな気がするが、名前があがっていないのはAppleと仲でも悪いのだろうか。

JavaScript, Ruby, R, Python, WebAssembly

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

JavaをわざわざTruffleで実行するJava on Truffleexitというものも追加されている。Java実装されたJava仮想マシンを用いるらしい。プロジェクト名はEspressoexit

Native Image

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

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

関連項目

この記事を編集する
流行語100

掲示板

おすすめトレンド

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

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

急上昇ワード改

最終更新:2024/11/30(土) 00:00

ほめられた記事

最終更新:2024/11/29(金) 23:00

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

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

OK

追加に失敗しました。

OK

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

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

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

OK

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

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

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

TOP