Java SE 6新特性: 对脚本语言的支持 - 编程入门网
供了两个函数 invokeFunction 和 invokeMethod,分别允许 Java 应用程序直接调用脚本中的一个全局性的过程以及对象中的方法,调用后者时,除了指定函数名字和参数外,还需要传入要调用的对象引用,当然这需要脚本引擎的支持。不仅如此,Invocable 接口还允许 Java 应用程序从这些函数中直接返回一个接口,通过这个接口实例来调用脚本中的函数或方法,从而我们可以从脚本中动态的生成 Java 应用中需要的接口对象。清单 5 演示了如何使用一个 Invocable 接口:
清单 5. 调用脚本中的函数
在调用函数前,可以先通过 instanceof 操作判断脚本引擎是否支持编译操作,防止类型转换时抛出运行时异常,需要特别注意的时,如果调用了脚本程序中不存在的函数时,运行时会抛出一个 NoSuchMethodException 的异常,实际开发中应该注意处理这种特殊情况。 Java SE 6新特性: 对脚本语言的支持(7)时间:2011-02-15 IBM 邱小侠Compilable 接口 一般来说,脚本语言都是解释型的,这也是脚本语言区别与编译语言的一个特点,解释性意味着脚本随时可以被运行,开发者可以边开发边查看接口,从而省去了编译这个环节,提供了开发效率。但是这也是一把双刃剑,当脚本规模变大,重复解释一段稳定的代码又会带来运行时的开销。有些脚本引擎支持将脚本运行编译成某种中间形式,这取决与脚本语言的性质以及脚本引擎的实现,可以是一些操作码,甚至是 Java 字节码文件。实现了这个接口的脚本引擎能把输入的脚本预编译并缓存,从而提高多次运行相同脚本的效率。 Java 脚本 API 还为这个中间形式提供了一个专门的类,每次调用 Compilable 接口的编译函数都会返回一个 CompiledScript 实例。CompiledScript 类被用来保存编译的结果,从而能重复调用脚本而没有重复解释的开销,实际效率提高的多少取决于中间形式的彻底程度,其中间形式越接近低级语言,提高的效率就越高。每一个 CompiledScript 实例对应于一个脚本引擎实例,一个脚本引擎实例可以含有多个 CompiledScript(这很容易理解),调用 CompiledScript 的 eval 函数会传递给这个关联的 ScriptEngine 的 eval 函数。关于 CompiledScript 类需要注意的是,它运行时对与之对应的 ScriptEngine 状态的改变可能会传递给下一次调用,造成运行结果的不一致。清单 6 演示了如何使用 Compiable 接口来调用脚本: 清单 6. 编译脚本
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |