设为首页 加入收藏

TOP

Java 8 的 Nashorn 引擎
2014-11-24 00:14:59 来源: 作者: 【 】 浏览:4
Tags:Java Nashorn 引擎

这篇文章是我一边看Oracle官方文档,一边敲代码试验,一边写的,不算是翻译的文档,算是中文版总结文档吧.呵呵.


java7以前,JDK内置了一个基于Mozilla Rhino的java script脚本引擎.在java8里面,基于JSR292和invokedynamic重新提供了一个新的java script引擎-Oracle Nashorn.它更符合ECMA标准的java script规范,而且基于invokedynamic调用拥有更好的性能.


文章使用的是最新的JDK8.所以想用要先装一下.


看一下执行结果吧.这个例子里面信息量可是巨大的.


Nashorn 只是使用遵从 ECMA 规范的java script语言,在网页上常用的对象Nashorn里面并没有.比如说 console,window等对象.


命令行执行以下 jjs -help,在帮助中可以看到.


脚本模式很有趣,你可以使用jjs运行使用java script编写的系统脚本.类似python,ruby,bash脚本.脚本模式有两种扩展:heredocs和shell invocations.


使用 jjs -scripting halu.js 执行该脚本.


heredocs 是一种简单的多行文本,使用类似bash的语法.使用 < 符号开始后面跟一个特殊标记.字符串中可以使用 ${} 表达式(类似EL表达式).需要注意的是,如果使用单引号引起来的字符串,内部的标示是不会被替换的.


Shell invocations 是允许调用命令行程序.


这样就可以执行shell命令了.当然windows下面失败….


*注意符号是 ` [波浪线那个键],不是 ' [单引号] * ,我找了好久才发现.


下面我们来写一个 java 程序


这段代码很简单,使用ScriptEngineManager 获得一个 ScriptEngine.然后通过eva l函数执行字符串脚本.


engine 也可以使用invocable接口调用脚本内的函数.


增加一个 Adder.java 的接口


halu类里面


这样可以将java script的类映射到java的接口上.个人感觉这是个很强大的功能.


读取脚本文件执行.使用 java.io.FileReader;


我们来使用java script调用java


使用 jjs 命令执行哦~


集合的使用


java script实现java接口


java script 实现多个接口


Nashorn 真心好玩.java script语言本身就有无限可能性,应该能做出来一些好玩的东西.下面就该考虑如何使用Nashorn做点东西了.


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++二维指针分配内存空间 下一篇Linux下C如何调用动态库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: