Java - Nashorn食用方法

mmmjjkx认证用户 mmmjjkx

管理成员
管理员
版主
认证用户
UID
2
注册
2024-01-28
消息
30
金粒
金粒3,977粒
钻石
钻石0颗
嗨币
嗨币5元
Nashorn是一个java的js引擎,但是他在jdk8以后的版本被剥离了出来,但你可以在Maven Central导入:
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
 
最后编辑:
后退
顶部 底部