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