Android DVM [1]

Dalvik是一个寄存器虚拟机,但它并不是一个完全的Java平台。Android使用Java作为开发语言和Apache Harmony的类库来生成标准的class文件(JVM可执行文件)。Android然后将class文件转译为一个单独的dex文件。dex文件是Google单独针对Android设计的一种文件格式,与Class相比比较紧凑。这样处理的结果,不是所有的Java代码都能够在Dalvik虚拟机上执行。J2SE中除了Swing和AWT,大部分类库都是可以用的。

已经有了J2SE和J2ME,为什么Google重新制造了车轮呢?

1. 资源限制

手机不通与普通PC笔记本,设计上有三个非常重要的因素:电量、散热和体积大小。电池一般一千多毫安,当然不能跟PC的上百瓦功率比,用户也不希望拿着个暖手宝在手里。虽然现在手机的硬件配置有超笔记本的趋势,但是内存限制和计算能力限制还是应该考虑的重要设计因素。

2. J2ME的先天不足

 J2ME出来已经快20年了,应用还是非常有限,设计上有存在先天不足。手机应用日新月异,蓝牙、SIP、3D在J2ME上面并没有完整广泛的支持。JSP的流程跟政府的流程有得一拼。这些限制的J2ME的发展成长。Java一开始设计为能够在所以的嵌入式设备上运行,先限制了它在手机平台上能够更好的与硬件发展相配合。

3. 许可证问题

JVM的许可证是GPLv2,要求使用它的项目也遵循它。应用开发商肯定不是都愿意开放自由的源代码,Oracle就放出一个需要付费的TCK许可。Google通过使用Apache's Harmony J2SE VM来绕过这个问题,现在在Java问题上Google和Oracle的争执就是这一方法是否合法。

4. 开源

Dalvik使用的是Apache License 2,这个许可对商业软件还是很不错。Google的主要收入还是来自广告,它希望通过更多激活的设备来使Android增加广告渗透,不是直接在Android上面获利。开源带来的好处是更多的开发者和厂商的参与,有利于构建良好的生态环境。不过随着对平板电脑的支持,产生的一些分化,希望Google能够很好的处理。

5. 安全

手机上有很多个人信息,电话本,通话记录等。用户希望系统能够更好的保护他们的私有数据,Dalvik设计成给每个VM实例创建单独的进程,依赖Linux强大的安全模型提供保护。一个进程死掉并不会影响其他VM实例,这种沙盒机制给应用程序提供了很好的保护。


 

你可能感兴趣的:(DVM)