Skip to content Skip to footer

Java 17 中使用 ScriptEngine 解析 JavaScript 脚本

ScriptEngine

ScriptEngine位于javax.script包下,Java 17中依然可用(移除的是Nashorn模块)。

ScriptEngineManager mgr = new ScriptEngineManager();

ScriptEngine e = mgr.getEngineByName("JavaScript");

String t = "5*7";

System.out.println(e.eval(t).toString());

Nashorn

Nashorn模块在Java 11中被标记为过时,在Java 15中被移除。

查看可用脚本引擎

备注:GraalVM默认只有占位的Placeholder引擎(仅占位,无任何作用)。

new ScriptEngineManager().getEngineFactories();

graal.js

添加依赖

js这个依赖大小为23MB、js-scriptengine大小为600KB。

org.graalvm.js

js

22.3.0

org.graalvm.js

js-scriptengine

22.3.0

代码

// Graal

ScriptEngine graalEngine = new ScriptEngineManager().getEngineByName("graal.js");

graalEngine.eval("print('Hello World!');");

替代品

迁移到 GraalVM JavaScript

https://docs.oracle.com/en/graalvm/enterprise/22/docs/reference-manual/js/NashornMigrationGuide

OpenJDK Nashorn 定制版本

https://github.com/openjdk/nashorn

AviatorScript

https://github.com/killme2008/aviatorscript

Copyright © 2088 乒乓球世界杯几年一次_世界杯冠军 - salooo.com All Rights Reserved.
友情链接