



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Rhino學(xué)習(xí)筆記Mozilla RhinoRhino 是一個純 Java 的開源的 JavaScript 實現(xiàn)。他的名字來源于 O'Reilly 關(guān)于 JavaScript 的書的封面:1 簡介 rhino是使用java代碼實現(xiàn)的javascript解釋器,它實現(xiàn)了javascript的核心,符合Ecma-262標(biāo)準(zhǔn),支持javascript標(biāo)準(zhǔn)的所有特性。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);結(jié)果=false3 腳本調(diào)試在命令行輸入java org.mozilla.javascript.tools.debugger.Main可以看到腳本調(diào)試頁面4 如何通過java代碼執(zhí)行javascriptRhino執(zhí)行代碼的過程1) 先設(shè)置環(huán)境,生成各種javascript的本地對象
4、,如:Object,F(xiàn)unction2) 使用語法分析對字符串進行分析生成ast。3) 然后再使用IRFactory類將ast轉(zhuǎn)換中間表示形式。4) 然后再將該中間表示形式轉(zhuǎn)換為二進制代碼。5) 然后執(zhí)行該代碼得出結(jié)果。 public static void main(String args) Context ctx = Context.enter(); /獲取環(huán)境設(shè)置Scriptable scope = ctx.initStandardObjects(); /初始化本地對象scope.put("x&quo
5、t;, scope, new Integer(20); /輸入?yún)?shù)設(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); /結(jié)果輸出 finally Context.exit(); 5 Rhino的包結(jié)構(gòu)org.mozilla.javascript包:該包內(nèi)的對象是實現(xiàn)javascript的主要對象。org.mozilla.javascript.ast包:rhino中語法分析器生成的ast表示類都在該包內(nèi)。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正側(cè)表達式的功能。6JSR233Jsr233是為java設(shè)計的一套腳本語言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 關(guān)鍵字開始函數(shù)的聲明,使用 var 關(guān)鍵字來聲明局部變量;ü Rhino 中語句結(jié)束符是可選的;8. 如何使用java類庫Rhino 中定義了一個全局變量 Packages,并且它的所有元素也是全局變量,這個全局變量維護了 Java 類的層次結(jié)構(gòu)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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 19932-1:2025 EN Equipment for crop protection - Knapsack sprayers - Part 1: Safety and environmental requirements
- 公司烤肉策劃方案
- 公司組織烤肉派對活動方案
- 公司組織暖心小活動方案
- 公司春游一日游策劃方案
- 公司游園會年會策劃方案
- 公司暖冬捐衣活動方案
- 公司職場媽媽活動方案
- 公司甜品活動方案
- 公司春節(jié)抽獎活動方案
- 撬裝加油站承包合同協(xié)議書
- 國家開放大學(xué)行管本科《政府經(jīng)濟學(xué)》期末考試總題庫2025春期考試版
- 《自發(fā)性腹膜炎》課件
- 2024年03月廣東2024年珠海華潤銀行社會招考(33)筆試歷年參考題庫附帶答案詳解
- 14-2《變形記》(節(jié)選)公開課一等獎創(chuàng)新教學(xué)設(shè)計統(tǒng)編版高中語文必修下冊
- 卸料平臺培訓(xùn)課件
- 2025年陽光財產(chǎn)保限公司招聘筆試參考題庫含答案解析
- 監(jiān)理工作廉潔自律制度及措施
- 公司法知識競賽考試題庫100題(含答案)
- 物業(yè)管理項目主動撤場
評論
0/150
提交評論