Android Dalvik VM vs. Java VM

Google Android 開發團隊為了技術自主、迴避 Java 商標爭議等考量,建構了嶄新的 Dalvik Virtual Machine,骨子裡頭仍支援 Java 程式語言,但 Dalvik VM 設計稍異於典型 JVM,網路上已有豐富的比較,本文就不贅述,筆者想探討的,則是日本 eFlow 公司最近提出的 'Android™'s Dalvik VM on "Mobile Java"',目標就是讓原本的 Java 執行平台 (主要是 Java ME),得以運作針對 Android Dalvik VM 設計的應用程式。日前該專案已開放原始程式碼,主體依據 GNU GPLv2,以下是相關資訊:

目前的進度來說 (svn r22),支援以下功能:
至於是否能達到 eFlow 公司 CEO -- Koichi Makabe 所預期的效益:
"We believe this implementation will particularly benefit manufacturers currently developing Android-powered devices, with a number of which we are cooperating to port the Dalvik VM to their specific hardware and software architectures. By making this implementation available today as open source, and by accelerating our porting and development efforts, we have the firm intention to make a significant contribution to the broader Android community."
這裡無從得知,不過,該專案四月底時,一併將 dalvikvm_benchmark 釋出,伴隨內部的效能分析數據,非常有意思。從裡頭的資料來看,標的硬體平台有兩個:
前者無疑就是用來比較的基準,硬體是 Qualcomm 平台,軟體組態當然是跑 Dalvik VM,運作時脈為 528 MHz。後者就相當有意思,P905i 是日本 NTT 電信的第三代手機平台,以豐富的多媒體與超長待機時間著稱,硬體採用 Panasonic UniPhier 家族,運作時脈達 500MHz,軟體方面,則內建 JBlend 這個商業 Java ME CLDC/MIDP 執行環境。儘管軟硬體組態均大相逕庭,不過研究 android-dalvik-vm-on-java 提供的內部的效能分析數據,多少有參考的價值。筆者整理為以下圖表:
綠色部份 (靠右側者) 為 Google Dev Phone 1,紅色 (靠左側者) 則是 P905i,分數越高者越佳。在同一份 benchmark 測試方式來看,兩者有極為顯著的落差,整體表現數據為:
數字背後的意義則是,Dalvik VM 進一步優化的空間仍相當大,至於如何在 ARM11 平台,透過若干進階的技巧 (JIT, register allocation, ...),發揮 Dalvik 這個 register-based VM 的效能,是不少研究人員關心的議題。


About this entry


  1. yrulee 2009年6月12日 上午10:43
    作者已經移除這則留言。
  2. yrulee 2009年6月12日 上午10:46

    在拜讀jserv大的文章後,小弟有點拙見,請參考

    http://brightcore.blogspot.com/2009/06/android-dalvik-vm-vs-java-vm.html

     

張貼留言