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实例,这种沙盒机制给应用程序提供了很好的保护。


更多相关文章

  1. Android中扫描多媒体文件操作详解
  2. Android名词解释之什么是APK文件
  3. Android 逆向apk的配置文件
  4. Android 根文件系统启动过程。
  5. android 下载网络pdf文件后并显示
  6. Android 上传头像(文件)到服务器
  7. Android 在安装完成界面,点击打开应用程序。在应用程序点击home键
  8. 关于android读取用户号码,手机串号,SIM卡序列号
  9. Android代码混淆配置(Proguard文件解析)

随机推荐

  1. Android(安卓)自定义相机
  2. android使用Dialog跳转到Activity
  3. android gradle多渠道打包配置
  4. Android(安卓)实现断点续传
  5. Android启动界面实现
  6. Gradle 修改生成apk时的文件名
  7. 汇总各种Android(安卓)蓝牙各种UUID
  8. Android获取状态栏和标题栏的高度
  9. Fragment沉浸式
  10. android 重力传感器的使用