验证是否使用了 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);