- UID
- 2
- 注册
- 2024-01-28
- 消息
- 30
- 金粒
- 金粒3,977粒
- 钻石
- 钻石0颗
- 嗨币
- 嗨币5元
Nashorn是一个java的js引擎,但是他在jdk8以后的版本被剥离了出来,但你可以在Maven Central导入:
获取Nashorn的ScriptEngine:
在JS中引用Java:
更多详情请看:
https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html
https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/shell.html
注意事项
Nashorn仅支持到ECMAScript 5.1,且let, const可能无法正常使用,如需替代品,你可以使用GraalJS
XML:
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.4</version>
<scope>provided</scope>
</dependency>
获取Nashorn的ScriptEngine:
Java:
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine();
在JS中引用Java:
JavaScript:
var Math = Java.type("java.lang.Math"); //引用Java类
var PI = Math.PI; //可以直接引用Math类的PI字段
///////////////
var intArray = Java.type("int[]"); //int数组
var theIntArray = new intArray(100); //创建一个int数组
///////////////
var String = Java.type("java.lang.String"); //字符串类
var exampleString = new String("114514"); //创建字符串
exampleString.toUpperCase(); //引用Java字符串类的方法
///////////////
var Run = Java.type("java.lang.Runnable");
var MyRun = Java.extend(Run, {
run: function() {
print("Run in separate thread");
}
}); //继承Runnable,重写run方法
var Thread = Java.type("java.lang.Thread");
var th = new Thread(new MyRun()); //创建线程
更多详情请看:
https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html
https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/shell.html
注意事项
Nashorn仅支持到ECMAScript 5.1,且let, const可能无法正常使用,如需替代品,你可以使用GraalJS
最后编辑: