验证是否使用了 GraalVM
Verify if GraalVM is used
由于 Nashorn 停产,我们目前正在尝试将我们的(仍然 Java 8)应用程序(非常大的单体)从 Nashorn 更改为 GraalVM。由于该应用程序在多个项目中被用作库,而不是使用整个 GraalVM 运行时,我们决定只将必要的 jar 添加到 class 路径(到目前为止似乎有效)。
为了使用 GraalVM,我将所有出现的 getEngineByName 更改为 graal.js,如下所示:
ScriptEngineManager sem = new ScriptEngineManager(null);
scriptEngine = sem.getEngineByName("graal.js");
由于应用程序非常复杂,了解应用程序的各个方面都比较困难,我想知道是否有一种方法可以验证Java脚本引擎与准备好的Java脚本字符串作为输入?我的目标是编写一个单元测试来验证每个以 JavaScript 作为输入的方法,如果真的使用了 GraalVM。
实现此目标的最佳方法是什么?
您可以将脚本引擎的 class 名称与 com.oracle.truffle.js.scriptengine.GraalJSScriptEngine 进行比较
像这样:
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("graal.js");
String engineName = scriptEngine.getClass().getName();
boolean isGraalJS = engineName.equals("com.oracle.truffle.js.scriptengine.GraalJSScriptEngine");
System.out.println(isGraalJS);
由于 Nashorn 停产,我们目前正在尝试将我们的(仍然 Java 8)应用程序(非常大的单体)从 Nashorn 更改为 GraalVM。由于该应用程序在多个项目中被用作库,而不是使用整个 GraalVM 运行时,我们决定只将必要的 jar 添加到 class 路径(到目前为止似乎有效)。
为了使用 GraalVM,我将所有出现的 getEngineByName 更改为 graal.js,如下所示:
ScriptEngineManager sem = new ScriptEngineManager(null);
scriptEngine = sem.getEngineByName("graal.js");
由于应用程序非常复杂,了解应用程序的各个方面都比较困难,我想知道是否有一种方法可以验证Java脚本引擎与准备好的Java脚本字符串作为输入?我的目标是编写一个单元测试来验证每个以 JavaScript 作为输入的方法,如果真的使用了 GraalVM。
实现此目标的最佳方法是什么?
您可以将脚本引擎的 class 名称与 com.oracle.truffle.js.scriptengine.GraalJSScriptEngine 进行比较 像这样:
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("graal.js");
String engineName = scriptEngine.getClass().getName();
boolean isGraalJS = engineName.equals("com.oracle.truffle.js.scriptengine.GraalJSScriptEngine");
System.out.println(isGraalJS);