Java8新特性(五)Nashorn javascript引擎

在Java8之前,如果要调用js语言是用Rhino调用,Java8只会自动升级到Nashorn,下面有一个例子

//获取脚本引擎的对象
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("javascript");
System.out.println(engine.getClass().getName());
//定义变量,存储到引擎的上下文中
engine.put("msg", "hello world!");
String str = "var user = {name:'zs',age:18,schools:['北京大学','清华大学']};";
//执行脚本
engine.eval(str);
engine.eval("msg = 'hi !';");
System.out.println(engine.get("msg"));//获取变量
engine.eval("var sum = eval('1+222+33*4');");//调用js的eval的方法完成运算
System.out.println(engine.get("sum"));//获取变量

//定义函数
engine.eval("function add(a,b){ return a+b;}");
//执行js函数
Invocable jsInvoke = (Invocable)engine;
Object obj = jsInvoke.invokeFunction("add", 1,2);//方法的名字,参数
System.out.println(obj);

//执行一个js的文件
URL resource = Demo1.class.getClassLoader().getResource("a.js");//当前项目的bin目录的a.js
FileReader fr = new FileReader(resource.getPath());
engine.eval(fr);

//执行js函数
Invocable jsInvoke2 = (Invocable)engine;
Object obj2 = jsInvoke2.invokeFunction("a", 1,2);//方法的名字,参数
System.out.println(obj2);

bin目录a.js内容

function a(a,b){
	var sum = a + b;
	return sum;
}

打印输出:
jdk.nashorn.api.scripting.NashornScriptEngine
hi !
355
3.0
3.0

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

terrybg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值