Java8新特性(五)Nashorn javascript引擎

 我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Java学习裙 :678-241-563 即可获取,内附:开发工具和安装包,以及系统学习路线图

在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.jsFileReader 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内容

functiona(a,b){varsum= a + b;returnsum;}


打印输出: 

jdk.nashorn.api.scripting.NashornScriptEngine 

hi ! 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容