分类: LINUX
2008-11-18 10:22:13
很多人目前不知道Android的Dalvik虚拟机和Sun J2ME相比先进在哪里?今天GPhone之家就一起给大家分析下Dalvik和J2ME的区别。首先Dalvik虚拟机是Google自己开发的 Java虚拟机,运行在Android平台上。J2ME是Sun公司的移动平台Java VM。
一、运行环境对比
Dalvik工作在Linux内核的Android操作系统上,而J2ME工作在目前主流的手机操作系统Symbian、UIQ、Windows Mobile等,目前还不支持iPhone Mac OS。
二、模拟器
Dalvik在Android平台上的模拟器为Qemu,而J2ME官方的是WTK,同时摩托罗拉、索尼爱立信、诺基亚都有自己的模拟器,同时Symbian J2ME有更多的扩展类,诺基亚的扩展类兼容性最差。
三、兼容性
Dalvik和J2ME相比兼容性算是最大的突破,要知道J2ME的各个手机公司之间的移植就很麻烦,除了分辨率、硬件差异要考虑外,还有很多扩充类的问题。而Android Dalvik工作在Google开放手机联盟中,可以完全脱离硬件困扰。(除了一些差异如QWERTY和触摸屏)
四、运行效率
这一点是大家最关心的问题,Android Dalvik会把Java Class编码转换为Dex,Dex是Dalvik VM executes的缩写,经过内存和运行效率的优化,而J2ME的为KJAVA,千字节的Java VM所以在资源上控制的也很好,最终性能如何要等到Gphone真机发布做完整评论,不过Dalvik是基于寄存器构架,而JavaME基于栈的,可以缩短编译时间外,在静态做了更多的优化,目前Gphone手机的硬件配置还不确定所以无法用开发板单一测试,但Android工作在ARM9-926上,基本测试出来开发系统应用比一般的非智能手机快很多,和Symbian C++以及WinCE相比仍然有差距。间
五、安全性
Java一向倡导安全性,从内存分配和高层上看不会有很多危险的操作,这是在J2ME上来看。而Dalvik作为Android平台级开发语言必然会涉及系统权限问题,如Linux的磁盘、用户控制等,不过Android平台通过一个WPF的模型,AndroidManifest.xml文件统一管理,类似Symbian中的能力一样,所以基本可以放心使用。
六、类库完整性
这一点可以说Sun比较全面,但是我们看到Dalvik实际上是对JME的补充,并不是重写实现,除了显示UI系统又比较大的变革外,其他的还是很兼容的,所以目前版本的Dalvik已经包含了一些重要的特性,如Base64编码、XML DOM、MD5处理,影音解码器、地图控制、全球定位(部分为可选包)
最后要说明的一点是Android Dalvik最终能否代替J2ME呢?Gphone之家告诉大家,Dalvik仅运行在Android平台,如果开放手机联盟真的开放了Dalvik源码可能形式有所变化,但目前gphone的对手还有强大的iphone和symbian、uiq、以及wince、palm、brew等,所以目前无法做更多评论。