其實此專案點出一個重點,就是DalvikVM 的bytecode execution效能普遍沒有現有的CDC/CLDC VM來的好,
一方面是DalvikVM沒有JIT,一方面是發展的時間不夠久。
當初DalvikVM不做JIT的原因是手持式裝置記憶體過小,太多的native code反而會造成記憶體管理上的負荷。
但是他們也認知到未來若Android porting至小筆電,JIT的需求會越來越明顯,因此DalvikVM JIT的確有放在DalvikVM的roadmap中
但反觀此專案的本質,他們讓Android app能夠透過此另類的middleware在任何的JavaVM上執行,
我相信到後來他們一定會遇到一個困境:他們吸引不到大多數的programmer使用CLDC API撰寫Android app。
DalvikVM在整個Android system framework只是一個小小的部份,其他強大的系統特性與API才是重點,
- 所有的DalvikVM process皆由Zygote統籌管理並與DalvikVM合作,可以平行執行而不互相干擾
- 提供IBinder與AIDL方便撰寫IPC
- dex load進來後內容可以由各個process共享,而不像JavaVM每一個process有各自的class loader
- user可以一直開process而不需要提醒自己關閉,Low Memory Killer會主導與管理需要關閉的process,user永遠不會收到OOM (OutOfMemoryError)
- app可以在簡訊或來電時接到通知
- app可以控制手機上的 GPS, 發送簡訊, 甚至決定撥號與聯絡人操控介面
- app之間可以透過Intent 互通有無
Android能夠迅速在市場上竄紅,就是其系統化的思考,以及與AP層的緊密連結,
而這個部份JavaVM永遠不可能做到,因為JavaVM永遠只是user space process。
他們終究不可能把Android整個系統與API、或者類似的功能放到手機上,
而DalvikVM會實作JIT是可預見的未來。
一點淺顯拙見,供大家參考。