![java8新特性探究十二nashorn犀牛_第1頁(yè)](http://file4.renrendoc.com/view/73e39ddef69f863db3530df2133c6544/73e39ddef69f863db3530df2133c65441.gif)
![java8新特性探究十二nashorn犀牛_第2頁(yè)](http://file4.renrendoc.com/view/73e39ddef69f863db3530df2133c6544/73e39ddef69f863db3530df2133c65442.gif)
![java8新特性探究十二nashorn犀牛_第3頁(yè)](http://file4.renrendoc.com/view/73e39ddef69f863db3530df2133c6544/73e39ddef69f863db3530df2133c65443.gif)
![java8新特性探究十二nashorn犀牛_第4頁(yè)](http://file4.renrendoc.com/view/73e39ddef69f863db3530df2133c6544/73e39ddef69f863db3530df2133c65444.gif)
![java8新特性探究十二nashorn犀牛_第5頁(yè)](http://file4.renrendoc.com/view/73e39ddef69f863db3530df2133c6544/73e39ddef69f863db3530df2133c65445.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java8新特性探究(十二)Nashorn22014-07-13Nashorn是Nashorn是什么?如何用?性能怎樣?有什么作用?本文將對(duì)這些問(wèn)題進(jìn)行解答 關(guān)于NashornNashornVS為何要用java實(shí)現(xiàn)NashornNashorn,發(fā)音“nass-horn”,是德國(guó)二一個(gè) 名,同時(shí)也是java8新一代的javascript引擎--替代老舊,緩慢的Rhino,符合ECMAScript-2625.1版語(yǔ)言規(guī)范。你可能想javascript是運(yùn)行在web瀏覽器,提供對(duì)html各種dom操作,但是Nashorn不支持瀏覽器DOM的對(duì)象。這個(gè)需要注意的一個(gè)點(diǎn)。Nashorn主要是兩個(gè)方面,jjs工具以及javax.script包下面的jjs是在java_home/bin下面自帶的,作為例子,讓我們創(chuàng)建一個(gè)func.js,內(nèi)容如下:?function returnprint( 1運(yùn)行這個(gè)文件,把這個(gè)文件作為參數(shù)傳給? 輸出結(jié)果另一個(gè)方面是javax.script,也是以前Rhino余留下來(lái)的?ScriptEngineManagermanager newScriptEngineengine manager.getEngineByName("JavaScript"System.out.println(engine.getClass().getName()System.out.println("Result:" engine.eval("functionf() return 輸出如下:Result:2基本用法也可以去這篇博文參考一下;NashornVSjavascript運(yùn)行在jvm已經(jīng)不是新鮮事了,Rhino早在jdk6的時(shí)候已經(jīng)存在,但現(xiàn)在為何要替代Rhino,的解釋是Rhino相比其他javascript引擎(比如的V8)實(shí)在太慢了,要改造Rhino還不如重寫(xiě)。既然性能是Nashorn的一個(gè)亮點(diǎn),下面就測(cè)試下性能對(duì)比,為了對(duì)比兩者之間的性能,需要用到Esprima,一個(gè)ECMAScript解析框架,用它來(lái)解析未壓縮版的jquery(大約268kb),測(cè)試代碼如下:?staticvoidrhino(Stringparser,Stringcode)Stringsource int =456789
Contextcontext= tryScriptablescope= context.evaluateString(scope,parser,source,line,ScriptableObject.putProperty(scope,"$code",Context.jObjecttree= newObject();Objecttokens newfor(inti 0;i RUNS;++i){longstart= tree= context.evaluateString(scope,"esprimatokens= context.evaluateString(scope,"esprilongstop= System.out.println("Run#"+ +1) }}finally}staticvoidnashorn(Stringparser,String throwsScriptEngineManagerfactory=newScriptEngineengine Invocableinv (Invocable)Objectesprima Objecttree new tokens newfor(int = < ++i)long =tree inv.invokeMethod(esprima,"parse",tokens inv.invokeMethod(esprima,"tokenize",long System.out.println("Run#" + ":" //System.out.println("Datais tokens.toString() 從代碼可以看出,測(cè)試程序?qū)?zhí)行Esprima的parse和tokenize來(lái)運(yùn)試文件的內(nèi)容Rhino和Nashorn分別執(zhí)行30次,在開(kāi)始時(shí)候,Rhino需要1726ms并且慢慢加速,最終穩(wěn)定在950ms左右,Nashorn卻有另一個(gè)特色,第一次運(yùn)行耗時(shí)3682ms,但熱身后很快加速,最終每次運(yùn)行穩(wěn)定在175ms,如下圖所示nashorn首先編譯javascript代碼為java字節(jié)碼,然后運(yùn)行在jvm上,底層也是使用invokedynamic命令來(lái)執(zhí)行,所以運(yùn)行速度很給力。java這也是大部分同學(xué)關(guān)注的點(diǎn),我認(rèn)同的觀點(diǎn)是:成成JIT編譯器多線(xiàn)程支持豐富的標(biāo)準(zhǔn)庫(kù)和第總得來(lái)說(shuō),充分利用了java平臺(tái)的已有資源。新犀??梢哉f(shuō)是犀牛式戰(zhàn)車(chē),比Rhino速度快了許多,作為高性能的javascript運(yùn)行環(huán)境,Nashorn有很多可能。舉例,Avatar.js是依賴(lài)于Nashorn用以支持在JVM上實(shí)現(xiàn)Node.js編程模型,另外還增加了其他新的功能,如使用一個(gè)內(nèi)建的負(fù)載平衡器實(shí)現(xiàn)多循環(huán),以及使用多線(xiàn)程實(shí)現(xiàn)輕量消息傳遞機(jī)制;Avatar還提供了一個(gè)Model-Store,基于JPA的純粹的JavaScript
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人住宅樓房出租協(xié)議書(shū)范本
- 湘教版數(shù)學(xué)九年級(jí)上冊(cè)2.4《一元二次方程根與系數(shù)的關(guān)系》聽(tīng)評(píng)課記錄2
- 華師大版數(shù)學(xué)七年級(jí)下冊(cè)《加減法解二元一次方程組》聽(tīng)評(píng)課記錄
- 《格列佛游記》讀后感心得體會(huì)10篇
- 教師心理健康解析
- 陜西師范大學(xué)附屬小學(xué)一年級(jí)數(shù)學(xué)上冊(cè)解決問(wèn)題解答應(yīng)用題練習(xí)題50帶答案解析
- 魯教版歷史六年級(jí)上冊(cè)第21課《江南地區(qū)的開(kāi)發(fā)》聽(tīng)課評(píng)課記錄
- 2025年度畫(huà)室學(xué)校學(xué)生藝術(shù)作品版權(quán)代理合同
- 2025年度物聯(lián)網(wǎng)技術(shù)在智慧家居中的應(yīng)用合同
- 2025年度新能源汽車(chē)零配件購(gòu)銷(xiāo)合同書(shū)范本
- 養(yǎng)老護(hù)理員試題及答案
- 2024年山東省高中學(xué)業(yè)水平合格考生物試卷試題(含答案詳解)
- 2025年中考英語(yǔ)復(fù)習(xí)熱點(diǎn)話(huà)題作文范文
- 小學(xué)數(shù)學(xué)教學(xué)工作交流數(shù)學(xué)教學(xué)中的體會(huì)總結(jié)經(jīng)驗(yàn)交流會(huì)課件
- DL-T+5442-2020輸電線(xiàn)路桿塔制圖和構(gòu)造規(guī)定
- 穴位按摩法操作評(píng)分標(biāo)準(zhǔn)
- 2024年美國(guó)智能馬桶和馬桶蓋市場(chǎng)現(xiàn)狀及上下游分析報(bào)告
- 中國(guó)成人暴發(fā)性心肌炎診斷和治療指南(2023版)解讀
- 六年級(jí)上冊(cè)口算題1000道(打印版)
- 復(fù)產(chǎn)復(fù)工六個(gè)一
- 招商引資項(xiàng)目落地工作方案
評(píng)論
0/150
提交評(píng)論