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ダウンロードサイト
Download GraalVM
GraalVM is an advanced JDK with ahead-of-time Native Image compilation.
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()の結果が表示されます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント