动态调用动态语言之Java脚本API
日期:2007年9月22日 作者: 查看:[大字体 中字体 小字体]-
·通过脚本引擎声明的、知道如何处理的 MIME 类型。
本文示例为什么要使用 JavaScript?
本文中的 Hello World 示例使用了部分 JavaScript 脚本,这是因为 JavaScript 代码易于理解,不过主要还是因为 Sun Microsystems 和 BEA Systems 所提供的 Java 6 运行时环境附带有基于 Mozilla Rhino 开源 JavaScript 实现的 JavaScript 解释器。使用 JavaScript,我们无需在类路径中添加脚本语言 JAR 文件。
ScriptEngineManager 间接查找和创建脚本引擎。也就是说,当实例化脚本引擎管理程序时,ScriptEngineManager 会使用 Java 6 中新增的服务发现机制在类路径中查找所有注册的 javax.script.ScriptEngineFactory 实现。这些工厂类封装在 Java 脚本 API 实现中;也许您永远都不需要直接处理这些工厂类。
ScriptEngineManager 找到所有的脚本引擎工厂类之后,它会查询各个类并判断是否能够创建所请求类型的脚本引擎 —— 清单 1 中为 JavaScript 引擎。如果工厂说可以创建所需语言的脚本引擎,那么管理程序将要求工厂创建一个引擎并将其返回给调用者。如果没有找到所请求语言的工厂,那么管理程序将返回 null,清单 1 中的代码将检查 null 返回值并做出预防。 ScriptEngine 接口
如前所述,代码将使用 ScriptEngine 实例执行脚本。脚本引擎充当脚本代码和最后执行代码的底层语言解释器或编译器之间的中间程序。这样,我们就不需要了解各个解释器使用哪些类来执行脚本。比如说,JRuby 脚本引擎可以将代码传递给 JRuby 的 org.jruby.Ruby 类的一个实例,首先将脚本编译成中间形式,然后再调用它计算脚本并处理返回值。脚本引擎实现隐藏了一些细节,包括解释器如何与 Java 代码共享类定义、应用程序对象和输入/输出流。
图 1 显示了应用程序、Java 脚本 API 和 ScriptEngine 实现、脚本语言解释器之间的总体关系。我们可以看到,应用程序只依赖于脚本 API,它提供了 ScriptEngineManager 类和 ScriptEngine 接口。ScriptEngine 实现组件处理使用特定脚本语言解释器的细节。

图 1:脚本 API 组件关系
您可能会问:如何才能获取脚本引擎实现和语言解释器所需的 JAR 文件呢?最好的方法是在 java.net 上托管的开源 Scripting 项目中查找脚本引擎实现(请参阅 参考资料)。您可以在 java.net 上找到许多语言的脚本引擎实现和其他网站的链接。Scripting 项目还提供了各种链接,通过这些链接可以下载受支持的脚本语言的解释器。
在 清单 1 中,main() 方法将 ScriptEngine 传递给各个方法用于计算该方法的 JavaScript 代码。第一个方法如清单 2 所示。invokeHelloScript() 方法调用脚本引擎的 eval 方法计算和执行 JavaScript 代码中的特定字符串。ScriptEngine 接口定义了 6 个重载的 eval() 方法,用于将接收的脚本当作字符串或 java.io.Reader 对象计算,java.io.Reader 对象一般用于从外部源(例如文件)读取脚本。
清单 2. invokeHelloScript 方法
private static void invokeHelloScript(ScriptEngine jsEngine) throws ScriptException {
- 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
- 动态调用动态语言之Java脚本API 相关文章:
- ·Vista系统实现自动关机技巧
- ·Flash制作交互动画教程 星座查询器
- ·小技巧让你轻松DIY你的网页滚动条
- ·Coreldraw结合 R.A.V.E 制作动画
- ·动态加载外部css或js文件
- ·怎么样清除能突破主动防御的新型木马
- ·Flash与Photoshop合作制作模糊渐变动画
- ·再谈用Flash引导线制作爱心图案动画
- ·Flash用鼠标控制图片移动效果动画教程
- ·Flash引导线制作爱心图案动画
- 动态调用动态语言之Java脚本API 相关软件
- ·《黑名单上的人》05蘑菇行动(198303版)
- ·《黑名单上的人》01特别行动小组(198208版)
- ·《彩虹岛》1.13升级至1.14手动更新补丁
- ·《动物丛林》小游戏
- ·动脑筋爷爷8
- ·动脑筋爷爷7
- ·动脑筋爷爷6
- ·动脑筋爷爷5
- ·动脑筋爷爷4
- ·动脑筋爷爷3
上一篇:详细讲解PHP中缓存技术的应用
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·JAVA教程 第五讲 AWT图形用户界面设计
- ·SP 短信开发-基础知识篇
- ·使用JAVAMAIL发邮件的一个例子(转)
- ·J2ME蓝牙程序开发实战入门
- ·用Java实现音频播放
- ·使用SimpleDateFormat必须注意的问题
- ·Sun:JavaFX Mobile和JavaFX Script
- ·Java EE6提案的两大主题:拓展性和概要
- ·Java会因为RoR的流行而过时吗?
- ·Java资料:Swing中的事件处理详细资料
- ·Java知识:Web应用下实现定时任务简便方法
- ·技巧:Java中用动态代理类实现记忆功能
- ·新手入门:写Java程序的三十个基本规则
- ·入门:Java初学者入门要注意的基础知识
- ·Java SE 6中XML数字签名标准Java接口
- ·JForum 2.1.7 源程序编译草记
- ·Spring中的Template和Callback模式
- ·从集合类的升级联想到Java适配器模式
- ·I18N-国际化消息和日志
- ·通过JDMK 进行遗留系统管理
特别推荐
- ·Java精华积累:初学者都应该搞懂的问题
- ·Java多媒体框架设计自动播放机实例详解
- ·如何有效防止Java程序源码被人偷窥?
- ·Cell插件在J2EE系统中的应用
- ·初学者想学Hibernate,初级基础教程
- ·Java语言实现支持视频点播的WEB服务器
- ·关于Java编程的中文问题的几条分析原则
- ·确保J2ME无线移动商业应用程序的安全性
- ·Java开源技术:Eclipse的使用技巧详解
- ·新手入门:Java中的修饰词使用方法总结
- ·JAVA开发者应该去的20个英文网站
- ·使用JDBC创建数据库访问程序
- ·JDK的命令详解
- ·Java学习从入门到精通(附FAQ)
- ·Tomcat性能调整
- ·JSF:Java中面向Web开发的生旦净末丑
- ·对Java语言入门初学者的一些建议
- ·Java技术的新方向
- ·Jive源代码研究
- ·谨慎使用Date和Time类
