Thursday, February 5, 2009

Dalvik和J2ME相比先进到了哪里?

更多精彩请到 http://www.139ya.com

转自: http://grachel1986.blog.163.com/blog/static/56603893200893113816630/

很多人目前不知道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等,所以目前无法做更多评论。

No comments: