![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),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Rhino學(xué)習(xí)筆記Mozilla RhinoRhino 是一個(gè)純 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 提供了如下功能ü 對(duì) JavaScript 1.5 的完全支持 ü 直接在 Java 中使用 JavaScript 的功能 ü 一個(gè) JavaScript shell 用于運(yùn)行 JavaS
2、cript 腳本 ü 一個(gè) 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的本地對(duì)象
4、,如:Object,F(xiàn)unction2) 使用語法分析對(duì)字符串進(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(); /初始化本地對(duì)象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)的對(duì)象是實(shí)現(xiàn)javascript的主要對(duì)象。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ā)行版本中包括了一個(gè)基于 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 方法用于將一個(gè) Java 對(duì)象映射成一個(gè)腳本語言的變量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 是采用動(dòng)態(tài)類型的語言,因此在函數(shù)和變量的聲明中看不到類型。您可以使用 function 關(guān)鍵字開始函數(shù)的聲明,使用 var 關(guān)鍵字來聲明局部變量;ü Rhino 中語句結(jié)束符是可選的;8. 如何使用java類庫Rhino 中定義了一個(gè)全局變量 Packages,并且它的所有元素也是全局變量,這個(gè)全局變量維護(hù)了 Java 類的層次結(jié)構(gòu)var frame = java.io.File("filename");也可以像 Java 代碼中一樣把這個(gè)對(duì)象引用進(jìn)來importClass (java.io.File);var file = File("filename");importPackage(java.io);用戶自定義的包也可以被引用進(jìn)來,不過這時(shí)候 Packages 引用不能被省略importPackage(Packages.tony);var hello = HelloWorld();hello
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代簡約風(fēng)格與科技公司辦公環(huán)境的融合
- 現(xiàn)代物流技術(shù)與醫(yī)療物資保障體系
- 溝通技巧在教育工作中的創(chuàng)新應(yīng)用
- 環(huán)保技術(shù)在現(xiàn)代城市建設(shè)中的應(yīng)用
- 物流信息技術(shù)在商業(yè)領(lǐng)域的應(yīng)用
- Unit 3 Where did you go?PartB (說課稿)-2023-2024學(xué)年人教PEP版英語六年級(jí)下冊(cè)
- 2《燭之武退秦師》說課稿-2024-2025學(xué)年高一語文下學(xué)期同步說課稿(統(tǒng)編版必修下冊(cè))
- 2024新教材高中地理 第四章 區(qū)域發(fā)展戰(zhàn)略 第二節(jié) 我國區(qū)域發(fā)展戰(zhàn)略說課稿 湘教版必修第二冊(cè)
- Unit3 Amazing animals(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)001
- 2024年高中化學(xué) 第三章 晶體結(jié)構(gòu)與性質(zhì) 章末整合說課稿 新人教版選修3
- 2025-2030年中國清真食品行業(yè)運(yùn)行狀況及投資發(fā)展前景預(yù)測報(bào)告
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 2025年河南洛陽市孟津區(qū)引進(jìn)研究生學(xué)歷人才50人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險(xiǎn)評(píng)估合同3篇
- 蛋雞生產(chǎn)飼養(yǎng)養(yǎng)殖培訓(xùn)課件
- 數(shù)字化轉(zhuǎn)型中的職業(yè)能力重構(gòu)
- 臨床提高膿毒性休克患者1h集束化措施落實(shí)率PDCA品管圈
- 瑞幸咖啡SWOT分析
- 小學(xué)生品德發(fā)展水平指標(biāo)評(píng)價(jià)體系(小學(xué))
評(píng)論
0/150
提交評(píng)論