下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Rhino學習筆記Mozilla RhinoRhino 是一個純 Java 的開源的 JavaScript 實現(xiàn)。他的名字來源于 O'Reilly 關于 JavaScript 的書的封面:1 簡介 rhino是使用java代碼實現(xiàn)的javascript解釋器,它實現(xiàn)了javascript的核心,符合Ecma-262標準,支持javascript標準的所有特性。Rhino 提供了如下功能ü 對 JavaScript 1.5 的完全支持 ü 直接在 Java 中使用 JavaScript 的功能 ü 一個 JavaScript shell 用于運行 JavaS
2、cript 腳本 ü 一個 JavaScript 的編譯器,用于將 JavaScript 編譯成 Java 二進制文件 2 如何運行js腳本后進入運行交互界面(js),而后在js提示符下輸入 load( “文件路徑”),注意次數(shù)的目錄間隔是“/”。而后輸入要運行的js的函數(shù)名稱即可運行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代碼執(zhí)行javascriptRhino執(zhí)行代碼的過程1) 先設置環(huán)境,生成各種javascript的本地對象
4、,如:Object,F(xiàn)unction2) 使用語法分析對字符串進行分析生成ast。3) 然后再使用IRFactory類將ast轉換中間表示形式。4) 然后再將該中間表示形式轉換為二進制代碼。5) 然后執(zhí)行該代碼得出結果。 public static void main(String args) Context ctx = Context.enter(); /獲取環(huán)境設置Scriptable scope = ctx.initStandardObjects(); /初始化本地對象scope.put("x&quo
5、t;, scope, new Integer(20); /輸入?yún)?shù)設置scope.put("y", scope, new Integer(30); try ctx.evaluateString(scope, "var result=x+y", "", 1, null); /執(zhí)行 System.out.println(scope.get("
6、result", scope); /結果輸出 finally Context.exit(); 5 Rhino的包結構org.mozilla.javascript包:該包內的對象是實現(xiàn)javascript的主要對象。org.mozilla.javascript.ast包:rhino中語法分析器生成的ast表示類都在該包內。org.mozilla.javascript.debug包:該包實現(xiàn)了javascript的debug功能。org
7、.mozilla.javascript.optimizer包:該包實現(xiàn)了javascipt生成代碼的代碼優(yōu)化。org.mozilla.javascript.regexp包:該包實現(xiàn)了javascript正側表達式的功能。6JSR233Jsr233是為java設計的一套腳本語言API,在發(fā)行版本中包括了一個基于 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的區(qū)別ü 由于 Rhino 是采用動態(tài)類型的語言,因此在函數(shù)和變量的聲明中看不到類型。您可以使用 function 關鍵字開始函數(shù)的聲明,使用 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 運動與心理健康如何通過鍛煉提升幸福感
- 教育科技下的道德與法治教育融合探討
- 運動場地安全檢查與整改措施匯報
- 上市公司線上線下營銷合同范本
- 上海市建筑鋼材采購合同樣本
- 中外合作項目勞動合同
- 上海中學教師聘用合同
- 交通銀行國際信用證開證合同
- 中醫(yī)院校實習合同范本
- 個人就業(yè)合同協(xié)議書
- 湘教版七年級下冊地理第七章《了解地區(qū)》檢測卷(含答案解析)
- (完整版)4.19天體運動綜合習題(帶答案)
- 工法培訓課件
- 液壓式隨鉆震擊器設計
- 空氣能熱泵系統(tǒng)設計與安裝融資計劃書
- 2021中考地理真題試卷 山東省煙臺地理含答案
- 非法捕撈水產(chǎn)品罪
- 新概念第一冊單詞匯總帶音標EXCEL版
- 作用于血液及造血器官的藥 作用于血液系統(tǒng)藥物
- 心肺復蘇(最全版)完整版
- 春節(jié)節(jié)后施工復工安全培訓
評論
0/150
提交評論