嵌入式Java虛擬機(jī)優(yōu)化技術(shù)
無(wú)線手持設(shè)備市場(chǎng)對(duì)Java產(chǎn)生了巨大的需求增長(zhǎng),目前每10臺(tái)新出手機(jī)中就有8臺(tái)支持Java。本文關(guān)注嵌入式設(shè)備Java平臺(tái)的性能問題,詳細(xì)介紹振戎融通自主研發(fā)的Java虛擬機(jī)產(chǎn)品——JMO+(JMOplus)的性能優(yōu)化技術(shù)。
本文引用地址:http://2s4d.com/article/171591.htm在過去的幾年里,Java已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,尤其是無(wú)線移動(dòng)領(lǐng)域,全球180多個(gè)移動(dòng)運(yùn)營(yíng)商已經(jīng)推出了Java下載服務(wù)。無(wú)線手持設(shè)備市場(chǎng)對(duì) Java產(chǎn)生了巨大的需求增長(zhǎng),目前每10臺(tái)新出手機(jī)中就有8臺(tái)支持Java。廣大的消費(fèi)者,運(yùn)營(yíng)商,服務(wù)/內(nèi)容提供商以及手機(jī)制造商強(qiáng)烈渴望手機(jī)的 Java性能更加強(qiáng)勁,支持更多更復(fù)雜的應(yīng)用,為產(chǎn)業(yè)鏈各方帶來更多商機(jī)和收入,為用戶帶來更豐富多彩的增值應(yīng)用。
北京振戎融通通信技術(shù)有限公司(以下簡(jiǎn)稱振戎融通)一直致力于嵌入式Java技術(shù)的研究、開發(fā)和推廣,立志通過對(duì)國(guó)際先進(jìn)技術(shù)的引進(jìn)、掌握和創(chuàng)新,迅速實(shí)現(xiàn)專有技術(shù)的國(guó)產(chǎn)化,最終擁有整套先進(jìn)技術(shù)產(chǎn)品的自主知識(shí)產(chǎn)權(quán)。本文著重關(guān)注嵌入式設(shè)備Java平臺(tái)的性能問題,詳細(xì)介紹振戎融通自主研發(fā)的Java虛擬機(jī)產(chǎn)品—— JMO+(JMOplus)的性能優(yōu)化技術(shù)。
Java功能和性能支持
嵌入式Java經(jīng)過幾年的蓬勃發(fā)展,所支持的應(yīng)用越來越豐富,功能也越來越強(qiáng)大,諸如3D游戲、多人聯(lián)網(wǎng)等更高級(jí)的支持也已紛紛涌現(xiàn)。運(yùn)營(yíng)商和手機(jī)制造商希望出現(xiàn)更具可玩性的游戲,并期望充分利用 Java技術(shù)發(fā)展諸如商務(wù)、定位、視頻等各種各樣的增值服務(wù),以期帶來更多收入。
為了支持這些新的業(yè)務(wù),Java虛擬機(jī)必須不斷集成新的API。因此, JCP(Java Community Process)這一業(yè)界唯一的Java標(biāo)準(zhǔn)化機(jī)構(gòu)不斷制定、發(fā)布相應(yīng)功能的技術(shù)標(biāo)準(zhǔn)。 2004年振戎融通公司正式成為JCP成員,并且是幾個(gè)重要JSR 標(biāo)準(zhǔn)的專家組成員,參與這些標(biāo)準(zhǔn)的制定工作。振戎融通JMO+產(chǎn)品最為廣泛的支持了現(xiàn)在比較流行和通用的JSR標(biāo)準(zhǔn),并根據(jù)市場(chǎng)的需求和客戶的需要提供一些擴(kuò)展功能的支持,在功能上能夠提供給一個(gè)功能強(qiáng)大的移動(dòng)Java運(yùn)行平臺(tái),能夠讓用戶感受到JAVA的豐富多彩,可以說JMO+產(chǎn)品在功能支持方面處于行業(yè)的領(lǐng)先地位。
北京振戎融通通信技術(shù)有限公司針對(duì)市場(chǎng)的需求,在JMO+性能方面運(yùn)用了多種技術(shù)進(jìn)行優(yōu)化,針對(duì)不同的硬件平臺(tái)采用不同的優(yōu)化技術(shù),以提供最優(yōu)的性能體驗(yàn)。
Java虛擬機(jī)的性能瓶頸
Java 是一種解釋執(zhí)行的語(yǔ)言,它的優(yōu)勢(shì)是“一次編譯,到處運(yùn)行”,因此Java具有很好的可移植性,開發(fā)和發(fā)布Java應(yīng)用都很便捷,快速上市,節(jié)約成本;另外一個(gè)優(yōu)勢(shì)是Java字節(jié)碼代碼密度高,程序體積較小,便于進(jìn)行下載,和裝入資源有限的嵌入式設(shè)備中。這種優(yōu)勢(shì)是明顯的,但對(duì)于嵌入式Java來說,由于其機(jī)制而帶來了不可避免的性能瓶頸。業(yè)界針對(duì)這個(gè)性能瓶頸都在尋找各自不同的解決之道,振戎融通在這方面也進(jìn)行深入的研究,在解決這個(gè)性能瓶頸的方面取得了不菲的成績(jī),性能解決方案處于業(yè)界領(lǐng)先地位。
Java性能優(yōu)化方案
加快Java執(zhí)行速度的方法包括幾種軟件方案,如字節(jié)碼解釋器優(yōu)化、即時(shí)編譯器、預(yù)先編譯器、動(dòng)態(tài)自適應(yīng)編譯(DAC)等。這些方法都能在一定程度上提高Java的性能,但同時(shí)也會(huì)帶來一些負(fù)面影響,比如這些軟件方案通常會(huì)增加對(duì)功耗、內(nèi)存的需求,或是延長(zhǎng)啟動(dòng)時(shí)間以致系統(tǒng)存在停頓感等現(xiàn)象。
硬件的解決方案有專用Java處理器和 Java協(xié)處理器,以及ARM推出的Jazelle DBX硬件指令集。這些方案在解決Java的效率方面的確發(fā)揮了重要作用,并有可能是今后的一個(gè)發(fā)展方向,特別是Jazelle技術(shù)。但是,硬件的解決方案將增加硬件成本和嵌入式設(shè)備系統(tǒng)的設(shè)計(jì)成本,并降低靈活性,這是設(shè)備制造商不愿意接受。因此,硬件的解決方案可以用于高端市場(chǎng),但對(duì)成本敏感的中低端市場(chǎng)來說,該方案存在成本壓力。
JIT和AOT編譯器
JIT或 AOT編譯器是把字節(jié)碼動(dòng)態(tài)地編譯成目標(biāo)平臺(tái)的本地碼,然后直接執(zhí)行。顧名思義,AOT編譯方案就是在應(yīng)用下載完后編譯所有代碼,而實(shí)際上,某些代碼很有可能根本就執(zhí)行不到。JIT編譯方案則是在運(yùn)行到某段代碼之前,才對(duì)這一段代碼作即時(shí)編譯。這種即時(shí)處理策略會(huì)讓用戶在選擇啟動(dòng)應(yīng)用程序后,需要等待很長(zhǎng)一段時(shí)間,程序才真正運(yùn)行起來。另外,有研究顯示,動(dòng)態(tài)編譯會(huì)導(dǎo)致代碼大小增大4~6倍。因此,除了降低應(yīng)用程序的啟動(dòng)速度外,無(wú)論JIT還是AOT方案,都需要很大的額外內(nèi)存來保存編譯生成的本地碼。
DAC動(dòng)態(tài)自適應(yīng)編譯
動(dòng)態(tài)自適應(yīng)編譯(DAC)是一種彌補(bǔ) JIT編譯器缺點(diǎn)的方法。它采用通常被稱為的混合軟件方案,可以被看成是JIT編譯器和字節(jié)碼解釋器的組合。在開始階段,程序解釋器開始執(zhí)行,同時(shí)軟件對(duì)代碼進(jìn)行分析并決定哪些關(guān)鍵代碼需要被編譯,這些關(guān)鍵代碼被鑒別出來后,即被編譯成本地碼運(yùn)行。
Jazelle DBX技術(shù)
Jazelle DBX 是一種硬件架構(gòu)擴(kuò)展技術(shù),為ARM處理器引入了第三套指令集—Java字節(jié)碼。新指令集建立了一種新的狀態(tài),處理器在此狀態(tài)下處理Java字節(jié)碼取指、譯碼和維護(hù)Java操作數(shù)棧。這種硬件架構(gòu)擴(kuò)展技術(shù),重用已有的處理器資源不會(huì)增加額外的硬件成本和功耗,帶擴(kuò)展的內(nèi)核能夠同時(shí)執(zhí)行Java字節(jié)碼及本地碼,開發(fā)者可以充分利用已有的操作系統(tǒng)、應(yīng)用程序開發(fā)技術(shù),在Java程序可移植性和性能之間取得很好的平衡。
JMOplus的性能優(yōu)化方案
振戎融通在解決性能優(yōu)化問題時(shí),深入的分析了目前的軟件和硬件的解決方案,總結(jié)其中的優(yōu)勢(shì)和弊端,綜合運(yùn)用了這些優(yōu)化方法,并進(jìn)行了相應(yīng)的改進(jìn)。
每一種優(yōu)化方法都有其存在的道理,針對(duì)某種情況的優(yōu)化效果是最好的,但在某種情況下,其弊端表現(xiàn)的又十分的明顯,我們經(jīng)過了大量的實(shí)際測(cè)試數(shù)據(jù),將各種性能優(yōu)化方案有機(jī)的結(jié)合在一起,讓他們共同發(fā)揮作用,即解決了性能的優(yōu)化,又在相當(dāng)?shù)某潭壬媳苊庖驗(yàn)橐雰?yōu)化算法而帶來的負(fù)面影響。
比如采用 AOT和DAC的結(jié)合方案,通過大量的應(yīng)用測(cè)試數(shù)據(jù)統(tǒng)計(jì)分析,找出調(diào)用頻度最高的Java API進(jìn)行AOT,這樣即得到了AOT的快速執(zhí)行,又最大限度的控制了因?yàn)锳OT而帶來的體積膨脹,優(yōu)化DAC的選擇算法,使得Java虛擬機(jī)避免陷入盲目的編譯過程,制定DAC的執(zhí)行時(shí)機(jī),在應(yīng)用啟動(dòng)時(shí),關(guān)閉DAC功能,這樣不會(huì)因?yàn)镈AC的編譯而讓用戶忍受漫長(zhǎng)的應(yīng)用啟動(dòng)階段。
根據(jù)不同的終端,動(dòng)態(tài)的調(diào)整AOT和DAC的搭配比例,比如,在RAM相對(duì)ROM空間需求寬松時(shí),將DAC的比例提高;在ROM相對(duì)RAM空間需求相對(duì)寬松時(shí),將AOT的比例提高。
在支持Jazelle指令集的情況下,加入Jazelle加速技術(shù),并調(diào)整AOT和DAC的相關(guān)參數(shù),將Jazelle支持的Java指令,并不進(jìn)行AOT和DAC的優(yōu)化,而直接由芯片直接執(zhí)行,這樣即增加了效率而且節(jié)省了功耗。
還進(jìn)行市場(chǎng)的進(jìn)一步細(xì)分,比如針對(duì)游戲市場(chǎng),定位市場(chǎng),商務(wù)市場(chǎng)等,每個(gè)細(xì)分市場(chǎng),其運(yùn)行的Java應(yīng)用都會(huì)有所側(cè)重,進(jìn)而其使用和調(diào)用的Java API的頻度分布也是不同的,根據(jù)調(diào)用頻度的分布,調(diào)節(jié)AOT和DAC在不同市場(chǎng)的優(yōu)化方案會(huì)更加有效。
振戎融通不僅擁有了先進(jìn)的性能優(yōu)化技術(shù),并且更深入的挖掘優(yōu)化的細(xì)節(jié),使得JMO+產(chǎn)品在業(yè)界處于領(lǐng)先的地位。經(jīng)過業(yè)界權(quán)威測(cè)試工具測(cè)試比較表明,JMO+在功能、性能和質(zhì)量上已經(jīng)達(dá)到了國(guó)際先進(jìn)水平。目前JMO+已經(jīng)獲得摩托羅拉、三星、LG、SKTT、TCL、UT等國(guó)內(nèi)外主流手機(jī)廠商采用,已經(jīng)有近 20款、100萬(wàn)臺(tái)手機(jī)采用,成功取得了規(guī)?;逃?。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論