Rhino学习总结.doc_第1页
Rhino学习总结.doc_第2页
Rhino学习总结.doc_第3页
Rhino学习总结.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Rhino学习笔记1 简介 rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准,支持javascript标准的所有特性。Rhino 提供了如下功能 对 JavaScript 1.5 的完全支持 直接在 Java 中使用 JavaScript 的功能 一个 JavaScript shell 用于运行 JavaScript 脚本 一个 JavaScript 的编译器,用于将 JavaScript 编译成 Java 二进制文件 2 如何运行js脚本将js.jar放入classpath中,在cmd中键入java org.mozilla.javascript.tools.shell.Main后进入运行交互界面(js),而后在js提示符下输入 load( “文件路径”),注意次数的目录间隔是“/”。而后输入要运行的js的函数名称即可运行js脚本。例:js 代码function isPrime (num) if (num = 2.) return false var prime = true var sqrRoot = Math.round(Math.sqrt(num) for (var n = 2; prime & n = sqrRoot; +n) prime = (num % n != 0) return prime java org.mozilla.javascript.tools.shell.Mainload(D:/isPrime.js);isPrime(77);结果=false3 脚本调试在命令行输入java org.mozilla.javascript.tools.debugger.Main可以看到脚本调试页面4 如何通过java代码执行javascriptRhino执行代码的过程1) 先设置环境,生成各种javascript的本地对象,如: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, 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(result, scope); /结果输出 finally Context.exit(); 5 Rhino的包结构org.mozilla.javascript包:该包内的对象是实现javascript的主要对象。org.mozilla.javascript.ast包:rhino中语法分析器生成的ast表示类都在该包内。org.mozilla.javascript.debug包:该包实现了javascript的debug功能。org.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 ScriptEngineManager(); 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.script.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); 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.sayHello();8对javabean的支

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论