background image

如何进行

Dalvik 虚拟机运行

基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短,所

有的

Android 应用的线程都对应一个 Linux 线程,虚拟机因而可以更多的依赖操作系统的线

程调度和管理机制。

它对内存的高效使用,和在低速

CPU 上表现出的高性能,确实令人刮目相看。依赖于

底层

Posix 兼容的操作系统,它可以简单的完成进程隔离和线程管理。每一个 Android 应用

在底层都会对应一个独立的

Dalvik 虚拟机实例,其代码在虚拟机的解释下得以执行。

 
很多人认为

Dalvik 虚拟机是一个 Java 虚拟机,因为 Android 的编程语言恰恰就是 Java

语言。但是这种说法并不准确,因为

Dalvik 虚拟机并不是按照 Java 虚拟机的规范来实现的,

两者并不兼容;同时还要两个明显的不同。

Java 虚拟机运行的是 Java 字节码,而 Dalvik 虚拟机运行的则是其专有的文件格式

DEX(Dalvik Executable),在 Java SE 程序中的 Java 类会被编译成一个或者多个字节码文
件。

.class)然后打包到 JAR 文件,而后 Java 虚拟机会从相应的 CLASS 文件和 JAR 文件

中获取相应的字节码;

Android 应用虽然也是使用 Java 语言进行编程。但是在编译成 CLASS

文件后,还会通过一个工具(

dx)将应用所有的 CLASS 文件转换成一个 DEX 文件,而后

Dalvik 虚拟机会从其中读取指令和数据。

Dalvik 和 Android 系统 Android 作为新一代的基于 Linux 的开源手机操作系统,其系统

架构由下而上可以分为以下几部分:

◆Linux 内核 
◆本地库 
◆Android 运行库 
◆应用框架 
◆应用

Android 运行库包括两部分:核心库和 Dalvik 虚拟机。核心库包括了最基本的类库,如

data structure, network, Utilities, File system 等的。很多实现代码都是来自 Apache Harmony 项
目,主要目的是保证虚拟机的类库能够和

Java SE 的类库最大可能的兼容,从而降低应用

开发者从

Java SE 阵营转移到 Android 开发阵营的难度。

增加其可用性。

Dalvik 虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,