![Rhino學(xué)習(xí)總結(jié)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/2f011f3e-02ca-4f24-9601-a05f28333a3d/2f011f3e-02ca-4f24-9601-a05f28333a3d1.gif)
![Rhino學(xué)習(xí)總結(jié)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/2f011f3e-02ca-4f24-9601-a05f28333a3d/2f011f3e-02ca-4f24-9601-a05f28333a3d2.gif)
![Rhino學(xué)習(xí)總結(jié)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/2f011f3e-02ca-4f24-9601-a05f28333a3d/2f011f3e-02ca-4f24-9601-a05f28333a3d3.gif)
![Rhino學(xué)習(xí)總結(jié)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/2f011f3e-02ca-4f24-9601-a05f28333a3d/2f011f3e-02ca-4f24-9601-a05f28333a3d4.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Rhino學(xué)習(xí)筆記Mozilla RhinoRhino 是一個純 Java 的開源的 JavaScript 實(shí)現(xiàn)。他的名字來源于 O'Reilly 關(guān)于 JavaScript 的書的封面:1 簡介 rhino是使用java代碼實(shí)現(xiàn)的javascript解釋器,它實(shí)現(xiàn)了javascript的核心,符合Ecma-262標(biāo)準(zhǔn),支持javascript標(biāo)準(zhǔn)的所有特性。Rhino 提供了如下功能ü 對 JavaScript 1.5 的完全支持 ü 直接在 Java 中使用 JavaScript 的功能 ü 一個 JavaScript shell 用于運(yùn)行 JavaS
2、cript 腳本 ü 一個 JavaScript 的編譯器,用于將 JavaScript 編譯成 Java 二進(jìn)制文件 2 如何運(yùn)行js腳本后進(jìn)入運(yùn)行交互界面(js),而后在js提示符下輸入 load( “文件路徑”),注意次數(shù)的目錄間隔是“/”。而后輸入要運(yùn)行的js的函數(shù)名稱即可運(yùn)行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) 使用語法分析對字符串進(jìn)行分析生成ast。3) 然后再使用IRFactory類將ast轉(zhuǎn)換中間表示形式。4) 然后再將該中間表示形式轉(zhuǎn)換為二進(jì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)的對象是實(shí)現(xiàn)javascript的主要對象。org.mozilla.javascript.ast包:rhino中語法分析器生成的ast表示類都在該包內(nèi)。org.mozilla.javascript.debug包:該包實(shí)現(xiàn)了javascript的debug功能。org
7、.mozilla.javascript.optimizer包:該包實(shí)現(xiàn)了javascipt生成代碼的代碼優(yōu)化。org.mozilla.javascript.regexp包:該包實(shí)現(xiàn)了javascript正側(cè)表達(dá)式的功能。6JSR233Jsr233是為java設(shè)計(jì)的一套腳本語言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,并且它的所有元素也是全局變量,這個全局變量維護(hù)了 Java 類的層次結(jié)構(gòu)var frame = java.io.File("filename");也可以像 Java 代碼中一樣把這個對象引用進(jìn)來importClass (java.io.File);var file = File("filename");importPackage(java.io);用戶自定義的包也可以被引用進(jìn)來,不過這時候 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木工承包合同內(nèi)腳手架
- 啤酒銷售合同書
- 農(nóng)村住房安全保障工程實(shí)施指南
- 網(wǎng)站維護(hù)與SEO優(yōu)化作業(yè)指導(dǎo)書
- 投資理財(cái)與風(fēng)險防范作業(yè)指導(dǎo)書
- 2025年甘肅貨運(yùn)從業(yè)資格證題目答案
- 2025年三明道路貨運(yùn)駕駛員從業(yè)資格證考試題庫完整
- 2025年貨車從業(yè)資格證答題軟件
- 2024-2025學(xué)年四年級語文上冊第二單元明月4走月亮作業(yè)設(shè)計(jì)北師大版
- 個人前臺自我總結(jié)
- 2025年電力鐵塔市場分析現(xiàn)狀
- GB 12158-2024防止靜電事故通用要求
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 化學(xué)-江蘇省蘇州市2024-2025學(xué)年2025屆高三第一學(xué)期學(xué)業(yè)期末質(zhì)量陽光指標(biāo)調(diào)研卷試題和答案
- 蛋雞生產(chǎn)飼養(yǎng)養(yǎng)殖培訓(xùn)課件
- 運(yùn)用PDCA降低住院患者跌倒-墜床發(fā)生率
- 海底撈員工手冊
- 立春氣象與生活影響模板
- 中國服裝零售行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報告-智研咨詢(2025版)
- 2024年廣東省公需課《新質(zhì)生產(chǎn)力與高質(zhì)量發(fā)展》考核答案
- 臨床提高膿毒性休克患者1h集束化措施落實(shí)率PDCA品管圈
評論
0/150
提交評論