mike-neckのブログ

Java or Groovy or Swift or Golang

GraalVM の espresso を試してみただけの試したエントリー

みんな Java やってる?

どーも mike です!

GraalVM 編、第XX話は GraalVM のエクスペリメンタルなプロダクト espresso

Java bytecode を Java の上で実行?!

ついに、試してみたよ〜

それでは、スタート!!!

(以上、最近お気に入りのユーチューバーの前口上)

GraalVM というのは C2 コンパイラー部分を Java で置きかけるというプロダクトなのですが(理解があっている自信なし) 、その結果として、 Truffle というフレームワークにより、他言語(例えば、 JavaScript/ Python / LLVM IR)の実行環境を提供できるようになっています。では、このフレームワークJava の bytecode を実行するのも理屈上可能だよね?ということで開発されているのが Java on Truffle 、別名 espresso というものです。

というわけで、早速インストールしていきたいと思います。

java コマンドが GraalVM の java を向くように設定した上で、

gu install native-image espresso

と入力します。

f:id:mike_neck:20210306005127p:plain

次に次のように Java ファイルを書いてみましょう。

$ cat <<EOF > Espresso.java
heredoc> class Espresso {
heredoc>   public static void main(String[] args) {
heredoc>     var v = System.getProperty("java.vm.version");
heredoc>     System.out.println(v);
heredoc>   }
heredoc> }
heredoc> EOF

あとは javac して、実行するだけです。

f:id:mike_neck:20210306005334p:plain

実行の際にはオプション -truffle を指定します

f:id:mike_neck:20210306005425p:plain

これでは通常実行時との比較がわからないので、 -truffle オプション無しで実行してみましょう

f:id:mike_neck:20210306005525p:plain

java.vm.version の値が異なっていることがわかります。

今回はここまで!


次回予告

次回、 espresso を活用した espresso-jshell 試します。お楽しみに!

チャンネル登録、高評価よろしくねー


参考 : しげ旅 というユーチューブチャンネル