快速业务通道

Mustang与Rhino:Java 6中的脚本编写 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

Mustang与Rhino:Java 6中的脚本编写

时间:2011-01-06 bea John Ferguson Smart

最新的Java主版本(Java SE 6,又称Mustang)现在正处于beta版本阶段。虽然该版本并不像Java 5的更新那么多,但是它确实有一些有趣的新特性。毋庸置疑,其中的一个就是对脚本编写语言的支持。

诸如PHP、Ruby、JavaScript、Python(或Jython)之类的脚本编写语言被广泛应用于许多领域,并由于其灵活性和简单性而大受欢迎。由于脚本是被解释而不是被编译的,所以可以轻松地从命令行运行和测试它们。这就压缩了编码/测试周期,并提高了开发人员的生产率。脚本通常是动态键入的,其语法极富表现力,所编写出的算法要比Java中的等效算法简明得多。使用起来通常也很有趣。

在很多情况下,从Java使用脚本编写语言会很有用,比如为Java应用程序提供扩展,以便用户可以编写自己的脚本进行扩展或定制化核心功能。脚本编写语言可读性更强,也更容易编写,所以(从技术上来说)它们是用于为终端用户提供根据需求定制化产品的可能性的理想语言。

早已经有许多Java可用的独立脚本编写包了,包括Rhino、Jacl、Jython、BeanShell、JRuby等。新消息是Java 6通过一个标准接口为脚本编写语言提供了内置支持。

Java 6提供对JSR-223规范的全面支持。该规范提供了一种从Java内部执行脚本编写语言的方便、标准的方式,并提供从脚本内部访问Java资源和类的功能。Java 6附带了与Mozilla Rhino的JavaScript 实现的内置集成。基于该规范,对诸如PHP、Groovy和BeanShell之类的其它脚本编写语言的支持也正在进行中。本文关注的是Rhino实现,但是其它语言应该是基本相同的。

脚本编写语言的名称都从何而来?由于大多数脚本编写语言都来自于开源项目,所以其名称通常都是由其各自的编写者想出来的。Rhino(犀牛)的名称来自于O''Reilly关于JavaScript的书封面上的动物。PHP则遵从Unix自解释的惯例,是PHP: Hypertext Preprocessor的简写。Jython是Python脚本编写语言的Java实现。而Groovy只是为了显酷。

使用脚本引擎

JSR 223规范方便易用。要使用脚本,您只需了解一些关键类。主要是ScriptEngine类,它处理脚本解释和求值。要实例化一个脚本引擎,应该使用ScriptEngineManager类来检索感兴趣的脚本编写语言的ScriptEngine对象。每种脚本编写语言都有一个名称。Mozilla Rhino ECMAScript脚本编写语言(通常称为JavaScript)使用“js”进行标识。

ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js");

嵌入式的JavaScript可用于各种用途。因为它要比硬编码的Java灵活且更容易配置,所以通常还可以用于编写频繁更改的业务规则。使用eval()方法对脚本表达式进行求值。脚本编写环境中所使用的任何变量都可以使用put()方法从Java代码内部赋值。

ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); engine.put("age", 21); engine.eval( "if (age >= 18){   " + " print(''Old enough to vote!''); " +   "} else {"    + " print (''Back to school!'');" +   "}"); > Old enough to vote!

eval()方法还接受一个Reader对象,这使它容易在文件或其他外部源中保存脚本,如下例所示:

ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); engine.put("age", 21); engine.eval(new FileReader("c:/voting.js"));

Mustang与Rhino:Java 6中的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号