ScriptEngineManager类(Java和JS互相调用) _

ScriptEngineManager类,这个类是jdk8新增的:

package com.example.encryption;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

@SpringBootTest
class EncryptionApplicationTests {

    @Test
    void contextLoads() throws ScriptException {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine javaScript = manager.getEngineByName("JavaScript");
        javaScript.eval("print('hello word!!')");
    }

    @Test
    public void obj() throws ScriptException, NoSuchMethodException {
        ScriptEngineManager manager = new ScriptEngineManager();
        //注意方法中的javaScript要写成JavaScript
        ScriptEngine engine = manager.getEngineByName("javaScript");
        StringBuffer script = new StringBuffer();
        script.append("var obj = new Object();");
        script.append("obj.hello = function(name) {print('hello, ' + name);}");
        engine.eval(script.toString());
        Invocable inv = (Invocable) engine;
        Object obj = engine.get("obj");
        inv.invokeMethod(obj, "hello", "Script Method !!");
    }
	
	/**
     * 脚本变量
     * @throws Exception
     * */
    @Test
    public void scriptVar() throws Exception{
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        engine.eval(new java.io.FileReader("src/main/java/com/example/encryption/script.js"));

    }

	
}

从 JDK 6 开始,Java 就捆绑了基于 Mozilla 的 Rhino 的 JavaScript 引擎,该特性允许开发者将 JavaScript 代码嵌入到 Java 中,甚至从嵌入的 JavaScript 中调用 Java 。随着 JDK 8 的发布,Nashorn 取代 Rhino 成为 Java 的嵌入式 JavaScript 引擎。Nashorn 完全支持 ECMAScript 5.1 规范以及一些扩展,在发布之初被视为真正地融合了 Java 和 JavaScript 之力。因为相较于 Rhino ,它有着 2-10 倍的性能提升。

这里我们需要将Es6代码转化位Es5才能更好的在Java中使用

  1. cnpm/npm init -y // -y是指表示全部默认,不需要一个一个敲回车
  2. cnpm install -g babel-cli
  3. cnpm install --save -dev babel-cli babel-preset-latest
  4. cnpm install -g babel-preset-latest
  5. 在项目根目录下新建.babelrc文件 ,输入如下代码
{
    "presets":["latest"]
} // 表示默认转码所有年份的js
  1. babel 1-hello.js --out-file 2-hello.js
    babel src(要转换的es6文件目录) --out-dir dist(目标文件夹目录)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值