为什么Android需要虚拟机(DVM)?

时间:2012-03-28 18:39:17

标签: android jvm dalvik vm-implementation

虚拟机用于在不同的操作系统上运行应用程序(Java将代码编译为独立于操作系统的.class文件,这些文件被解释为字节码)。由于Android应用程序在相同的操作系统(即Android)上运行,因此它不需要VM(我可能在这里错了)。那为什么需要Dalvik VM?

3 个答案:

答案 0 :(得分:9)

Android平台可以在不同的架构上运行 - ARM,MIP和x86。为抽象出为每个体系结构VM编译二进制文件的需要起作用。它还为开发人员进行内存管理。

答案 1 :(得分:3)

我们需要有人编译并将java类转换为可由解释器执行的字节码。

它类似于JVM ...你有.java文件,它们将由java编译器编译成.class文件。 .class文件只是字节码,它将由JVM运行。 JVM可以驻留在任何平台上(windows,linux或unix)。

在android中,文件也被编译成.dex文件并由DVM运行。为了给出一个想法,当安装应用程序时,Android OS分配唯一的linux用户ID,为每个应用程序分配DVM。所以简而言之,每个应用程序都有自己的linux进程,DVM和linux用户ID。

java文件被编译成.dex文件,与.class文件相比,它们占用的内存更少。

现在假设10个应用程序有10个单独的DVM,并且OS有10个进程要处理。

Android OS中的调度程序或调度程序负责处理这10个进程....这就是为什么我们有android活动生命周期。

您需要DVM来维护每个进程(每个应用程序)的运行状态。

答案 2 :(得分:2)

为什么android需要虚拟机是基于Google设计Android API以大量使用Java界面。 Java本身通常在虚拟机上运行。

JVM本身是基于堆栈机器的VM,而Android的VM(称为Dalvik)是基于寄存器的VM(这是为了减少代码生成和更快的速度,以便从使用Android的任何设备获得更好的性能)< / p>

虚拟机的目的是通过模拟来抽象硬件。如果您创建一个虚拟机并将其编译为适用于所有可能的硬件,那么您将获得最初使Java变得流行的原因:编写一次在任何地方运行的可移植性。

您可以编写代码,而无需更改代码并在虚拟机可以运行的任何硬件上运行代码。

Digressing,Android主要是用C(和C ++?)构建的,但是操纵操作系统的API是通过Java连接的,因此你需要一个虚拟机。