下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Rhino学习笔记Mozilla RhinoRhino 是一个纯 Java 的开源的 JavaScript 实现。他的名字来源于 O'Reilly 关于 JavaScript 的书的封面:1 简介 rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准,支持javascript标准的所有特性。Rhino 提供了如下功能ü 对 JavaScript 1.5 的完全支持 ü 直接在 Java 中使用 JavaScript 的功能 ü 一个 JavaScript shell 用于运行 JavaS
2、cript 脚本 ü 一个 JavaScript 的编译器,用于将 JavaScript 编译成 Java 二进制文件 2 如何运行js脚本后进入运行交互界面(js),而后在js提示符下输入 load( “文件路径”),注意次数的目录间隔是“/”。而后输入要运行的js的函数名称即可运行js脚本。例:js 代码function isPrime (num) if (num <= 1) print("Please enter a positive integer >= 2.") return false var prime = true var sqrRoo
3、t = Math.round(Math.sqrt(num) for (var n = 2; prime & n <= sqrRoot; +n) prime = (num % n != 0) return prime load("D:/isPrime.js");isPrime(77);结果=false3 脚本调试在命令行输入java org.mozilla.javascript.tools.debugger.Main可以看到脚本调试页面4 如何通过java代码执行javascriptRhino执行代码的过程1) 先设置环境,生成各种javascript的本地对象
4、,如:Object,Function2) 使用语法分析对字符串进行分析生成ast。3) 然后再使用IRFactory类将ast转换中间表示形式。4) 然后再将该中间表示形式转换为二进制代码。5) 然后执行该代码得出结果。 public static void main(String args) Context ctx = Context.enter(); /获取环境设置Scriptable scope = ctx.initStandardObjects(); /初始化本地对象scope.put("x&quo
5、t;, scope, new Integer(20); /输入参数设置scope.put("y", scope, new Integer(30); try ctx.evaluateString(scope, "var result=x+y", "", 1, null); /执行 System.out.println(scope.get("
6、result", scope); /结果输出 finally Context.exit(); 5 Rhino的包结构org.mozilla.javascript包:该包内的对象是实现javascript的主要对象。org.mozilla.javascript.ast包:rhino中语法分析器生成的ast表示类都在该包内。org.mozilla.javascript.debug包:该包实现了javascript的debug功能。org
7、.mozilla.javascript.optimizer包:该包实现了javascipt生成代码的代码优化。org.mozilla.javascript.regexp包:该包实现了javascript正侧表达式的功能。6JSR233Jsr233是为java设计的一套脚本语言API,在发行版本中包括了一个基于 Mozilla Rhino 的 JavaScript 脚本引擎。例:public class RunJavaScript public static void main(String args) ScriptEngineManager factory = new ScriptEngine
8、Manager(); ScriptEngine engine = factory.getEngineByName ("JavaScript"); engine.eval("print('Hello World')"); 如何与java通信通过put 方法用于将一个 Java 对象映射成一个脚本语言的变量public class HelloWorld String s = "Hello World" public void sayHello() System.out.println(s); import javax.sc
9、ript.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;public class TestPut public static void main(String args) throws ScriptException ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"
10、); HelloWorld hello = new HelloWorld(); engine.put("script_hello", hello); engine.eval("script_hello.sayHello()"); 7. Rhino与java的区别ü 由于 Rhino 是采用动态类型的语言,因此在函数和变量的声明中看不到类型。您可以使用 function 关键字开始函数的声明,使用 var 关键字来声明局部变量;ü Rhino 中语句结束符是可选的;8. 如何使用java类库Rhino 中定义了一个全局变量 Packages,并且它的所有元素也是全局变量,这个全局变量维护了 Java 类的层次结构var frame = java.io.File("filename");也可以像 Java 代码中一样把这个对象引用进来importClass (java.io.File);var file = File("filename");importPackage(java.io);用户自定义的包也可以被引用进来,不过这时候 Packages 引用不能被省略importPackage(Packages.tony);var hello = HelloWorld();hello
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国药科大学《GPS原理与应用》2024-2025学年第一学期期末试卷
- 山西省吕梁市汾阳中学2026届数学高二上期末学业质量监测模拟试题含解析
- 陕西省渭南区解放路中学2025-2026学年物理高二第一学期期末达标检测模拟试题含解析
- 贵州工程应用技术学院《单片机原理及其应用》2024-2025学年第一学期期末试卷
- 肿瘤科淋巴瘤放疗并发症护理指南
- 病理科肿瘤早期筛查流程
- 脊柱外科腰椎间盘突出处理流程
- 肺移植围手术期护理流程
- 副经理自我评估
- 慢性肾衰竭腹膜透析护理规范
- 标准离婚协议书文档模板
- 装修挂靠协议合同范本
- 2025年军队文职人员招聘考试题库附答案(满分必刷)
- 2025年高考生物试题(重庆卷) 含答案
- 拆除工程专项方案
- 2025赤峰翁牛特旗公立医院招聘29名员额备案制工作人员考试笔试备考试题及答案解析
- 2025高中政治主观题答题模板
- 2025年全国低压电工证理论考试笔试试题(200题)附答案
- 2026环艺省考试题及答案
- 2025贵州天健福康医养供应链有限责任公司招聘劳动合同制人员18人实施考试参考试题及答案解析
- 2025下半年厦门市总工会招聘工会专干和集体协商指导员50人考试参考题库及答案解析
评论
0/150
提交评论