- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《JAVA的动态性之脚本语言支持API》.docx
JAVA的动态性之脚本语言支持API
JAVA语言是一种静态类型的编程语言。静态类型的含义是指在编译的时候进行类型检查。JAVA源代码中的每个每个变量的类型都需要显式地进行声明。所有的变量、方法的参数和返回值的类型在程序运行之前就必须是已知的。JAVA语言的这种静态类型特性使编译器可以在编译的时候执行大量的检查来发现代码中明显的类型错误,这样一来,代码中会包含很多不必要的类型声明,使用代码不够简洁灵活。与静态类型语言相对应的是动态类型语言,如JavaScript和Ruby等。动态类型语言的类型检查在运行中进行。源代码中不需要显式地声明类型。去掉了类型声明之后,使用动态类型语言写的代码更加简洁。近年来,动态类型语言的流行也反映了语言中动态性的重要性。适当的动态性对于提高开发的效率是有帮助的,可以减少开发人员需要编写的代码量。 HYPERLINK
从Java6引入了脚本语言支持API,文本主要围绕脚本语言支持API讲解(反射将在下一文提起)
随着JAVA平台的流行,很多的脚本语言(scripting language)都可以运行在JAVA虚拟机上,其中比较流行的有JavaScript、JRuby、Jython和Groovy等。对于这些运行在JAVA虚拟机平台上的脚本语言来说,并不需要为它们准备额外的运行环境,直接复用已有的JAVA虚拟机环境即可。在应用开发中使用脚本语言,实际上是多语言开发的一种很好的实践,即根据应用的需求和语言本身的特性来选择最合适的变成语言,以快速高效的解决应用中的问题,比如一个一用,可以用Groovy来编写用户界面,用Java编写核心业务逻辑,用Ruby来进行数据处理,不同的语言编写的代码可以同时运行在同一个JAVA虚拟机上。这些脚本语言于Java语言之间的交互,是由脚本语言支持API来完成的。
1、脚本引擎
来一个简单的例子(相当于java中System.out.println方法),了解一下脚本引擎的用法,代码如下
public void greet() throws ScriptException{
ScriptEngineManager manager=new ScriptEngineManager();
ScriptEngine engine=manager.getEngineByName(JavaScript);
if(engine==null)
throw new RuntimeException(未找到JavaScript语言执行引擎);
engine.eval(println(HelloWorld!););
}
上面的代码中我们是通过脚本引擎的名称来查找的。实际上,脚本引擎管理器提供了三种查找脚本引擎的方式,分别是通过名称、文件扩展名和MIME类型来完成,如:
ScriptEngine engine=manager.getEngineByExtension(js);
ScriptEngine engine=manager.getEngineByMimeType(text/javascript);
ScriptEngine engine=manager.getEngineByName(JavaScript);
2、语言绑定
所谓的语言绑定对象就是一个简单的哈希表,用来存放和获取需要共享的数据。所有的数据都对应这个哈希表中的一个条目,是简单的键值对。接口javax.script.Bindings定义了语言绑定对象的接口,它继承自java.util.Map接口。一个脚本引擎在执行过程中可能会使用多个语言绑定对象,用来存放在执行过成功产生的全局对象等。ScriptEngine类提供了put和get方法对脚本引擎中特定作用域的默认语言绑定对象进行操作。程序可以直接使用这个默认的语言绑定对象,也可以使用自己的语言绑定对象。在脚本语言的执行过程中,可以将语言绑定对象看成是一个额外的变量映射表。
脚本引擎默认的语言绑定对象示例:
首先通过ScriptEngine的put方法向脚本引擎默认的语言绑定对象中添加一个名为name的字符串,接着在脚本中直接根据名称来引用这个对象。同样,在脚本中创建的全局变量message也可以通过ScriptEngine的get方法来获取。这样就实现了Java程序与脚本之间的双向数据传递。数据传递过程中的类型转换是有脚本引擎类完成的,转换规则取决于具体的脚本语言的语法。
public void useDefaultBinding() throws ScriptException{
ScriptEngine engine=getScriptEngine();
engine.put(name,andy);
engine.eval(var message=Hello,+nam
您可能关注的文档
最近下载
- 口腔诊所规章制度、技术操作规范及岗位职责.pdf VIP
- pgis平台技术方案(参考).doc
- 珠海市纪委监委招聘所属事业单位工作人员考试试题及答案.pdf VIP
- 中级消防维保35个抽考整理版2023.12.10.pptx
- 物流运输与配送管理考试题..doc VIP
- 2023年珠海市纪委监委招聘所属事业单位工作人员考试真题(含答案).pdf VIP
- Vaillant威能ecoTEC intro 冷凝式燃气暖浴两用炉说明书.pdf
- 扩创术手术讲解模板.pptx
- 2023肝动脉灌注化疗持续动脉给药及管路护理专家共识(完整版) .docx
- 2024年华医网继续教育护理学基于循证理念的临床护理管理实践新进展题库及答案.docx VIP
文档评论(0)