Nashorn JavaScript引擎

Few days ago, while looking at this SIP server, I noticed it being executed using something called Nashorn, instead of the more popular JavaScript runtime nodejs.

So Nashorn is JS engine in Java, and a successor to the Mozilla Rhino. Bad news is that it already deprecated in latest Java, without no alternative offered.

Routr developer when asked on his plan following Nashorn deprecation from Java, said he considering 2 choices:-

GraalVM取代了Nashorn,并成为Nashorn的可行替代品。 在这种情况下,我将非常乐意移植该项目。纳斯霍恩(Nashorn)死于没有可行的替代品。 在这种情况下,我别无选择,只能用Java重写项目。

from: https://dev.to//k4ml/nashorn-javascript-engine-3ja7

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nashorn是JDK 1.8中提供的一个JavaScript引擎,它可以让Java程序直接运行JavaScript代码。下面是使用Nashorn JavaScript引擎的详细步骤: 1. 导入Nashorn库 在Java代码中导入Nashorn库。在Java 8中,Nashorn库已经默认包含在JDK中,因此不需要额外下载和导入。 2. 创建一个Nashorn引擎 通过调用ScriptEngineManager类的getEngineByName()方法并传入“nashorn”作为参数,可以创建一个Nashorn引擎。例如: ``` ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); ``` 3. 执行JavaScript代码 可以通过以下方式执行JavaScript代码: - 从一个文件中读取JavaScript代码并执行: ``` engine.eval(new FileReader("file.js")); ``` - 直接执行字符串中的JavaScript代码: ``` engine.eval("print('Hello, world!')"); ``` 4. 在Java和JavaScript之间传递变量 可以通过Bindings对象在Java和JavaScript之间传递变量。Bindings对象充当了一个映射表,可以将Java变量映射到JavaScript变量,也可以将JavaScript变量映射到Java变量。例如: ``` Bindings bindings = engine.createBindings(); bindings.put("message", "Hello, world!"); engine.eval("print(message)", bindings); ``` 在这个例子中,创建了一个Bindings对象,并将一个名为“message”的字符串变量绑定到它上面。然后,将这个Bindings对象传递给eval()方法,以便在JavaScript代码中使用该变量。 5. 调用JavaScript函数 可以使用ScriptEngine的get()方法获得一个函数对象,并使用函数对象的call()方法调用JavaScript函数。例如: ``` engine.eval("function add(a, b) { return a + b; }"); Invocable invocable = (Invocable) engine; Object result = invocable.invokeFunction("add", 1, 2); System.out.println(result); // 输出3 ``` 在这个例子中,通过eval()方法定义了一个名为“add”的JavaScript函数。然后,通过调用invokeFunction()方法调用了这个函数,并传递了两个参数。最后,将函数返回的结果打印到控制台上。 希望这些步骤能帮助你了解如何使用Nashorn JavaScript引擎

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值