JavaでGraalJSの使い方

JavaでGraalJSの使い方

Scripting for the Java Platform

JavaにはJavaScriptエンジンが搭載されています。

jdk6でRhino

jdk6でRhinoが登場しました。が、jdk8からNashornというエンジンが代わりに登場しました。

JEP 174: Nashorn JavaScript Engine

jdk8でNashhorn

jdk8でNshhornが登場しました。

jkd8から追加されたjjsコマンドが追加されています。このコマンドの引数にjsファイルを渡すとjsを実行することが出来ます。

C:\test>jjs hoge.js
Warning: The jjs tool is planned to be removed from a future JDK release
hogehoge! ★標準出力しているだけ

しかしNashhornもjdk15で削除されています。

JEP 372: Remove the Nashorn JavaScript Engine

GraalJS

jdk15からJavaScriptエンジンが必要になった場合はGraalJSが有力のようです。

GraalVMをインストールすれば動作します。Comunity Editionは無償です。

GraalVMダウンロードサイト

social-network
GraalVM compiles your Java applications ahead of time into standalone binaries that start instantly, provide peak perfor...

JavaでGraalJSの使い方

GraalVMをダウンロードして、このVMを使用します。

ScriptSample.java

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ScriptSample {
  public static void main(String[] args) {
  ScriptEngine scriptEngine =
    new ScriptEngineManager().getEngineByName("graal.js");
    try {
      System.out.println(scriptEngine.eval("fnc = (a,b)=>{ return a + b }"));
      System.out.println(scriptEngine.eval("fnc(21, 22)"));
      System.out.println(scriptEngine.eval("const hoge = 'test'; hoge;"));
    } catch (ScriptException e) {
      e.printStackTrace();
    }
  }
}

jsコードにJavaコードを埋める

今度はjsファイルの中にJavaコードを埋めてみます。

C:\test>js --jvm ファイル名.js

として実行します。

test.js

const now = java.time.LocalDateTime.now();
print("now = " + now);

test.jsを実行します。

C:\test>js --jvm test.js
now = 2021-06-29T16:24:16.288519700

LocalDateTime.now()の結果が表示されます。

コメント

タイトルとURLをコピーしました