虚拟机用于在不同的操作系统上运行应用程序(Java将代码编译成独立于操作系统的.class文件,该文件被解释为字节码)。因为Android应用程序运行在相同的操作系统(即Android)上,所以它不需要VM(我在这里可能是错的)。那么它为什么需要Dalvik VM呢?
of1yzvn41#
Android平台可以运行在不同的架构上-ARM、MIP和x86。为了抽象出为每个体系结构编译二进制文件的需要,VM开始发挥作用。它还为开发人员进行内存管理。
o4tp2gmn2#
我们需要有人来编译和转换成字节码的Java类,这可以由解释器执行。
它类似于JVM...您有.Java文件,这些文件将由Java编译器编译成.class文件。类文件只不过是将由JVM运行的字节码。JVM可以驻留在任何平台(Windows、Linux或Unix)上。
在Android中,这些文件也会被编译成.dex文件,并由DVM运行。仅给出一个概念,当安装应用程序时,Android操作系统会分配唯一的Linux用户ID,每个应用程序都会分配一个DVM。因此,简而言之,每个应用程序都有自己的Linux进程、DVM和Linux用户ID。
Java文件被编译成.dex文件,与.class文件相比,.dex文件消耗的内存更少。
现在假设10个应用程序有10个单独的DVM,操作系统有10个进程要处理。
Android操作系统中的调度程序负责处理这10个进程……这就是为什么我们有Android活动生命周期的原因。
您需要DVM来维护每个进程(每个应用程序)的运行状态。
1tuwyuhd3#
Android为什么需要一个虚拟机,是基于Google设计的Android API大量使用Java接口。Java本身通常在虚拟机上运行。
JVM本身是基于堆栈机器的VM,而Android的VM(称为Dalvik)是基于寄存器的VM(这是为了减少生成的代码和更快的速度,以便从使用Android的设备中获得更好的性能)
虚拟机的目的是能够通过模拟来抽象硬件。如果您创建一台虚拟机,并对其进行编译以在所有可能的硬件上运行,您将获得最初使Java流行起来的东西:一次编写、随处运行的可移植性。
您可以编写代码,而不必更改它并在您的虚拟机可以运行的任何硬件上运行它。
话又说回来,Android主要是用C(和C++?)构建的。但是操纵操作系统的API是通过Java接口的,因此您需要一个虚拟机。
3条答案
按热度按时间of1yzvn41#
Android平台可以运行在不同的架构上-ARM、MIP和x86。为了抽象出为每个体系结构编译二进制文件的需要,VM开始发挥作用。它还为开发人员进行内存管理。
o4tp2gmn2#
我们需要有人来编译和转换成字节码的Java类,这可以由解释器执行。
它类似于JVM...您有.Java文件,这些文件将由Java编译器编译成.class文件。类文件只不过是将由JVM运行的字节码。JVM可以驻留在任何平台(Windows、Linux或Unix)上。
在Android中,这些文件也会被编译成.dex文件,并由DVM运行。仅给出一个概念,当安装应用程序时,Android操作系统会分配唯一的Linux用户ID,每个应用程序都会分配一个DVM。因此,简而言之,每个应用程序都有自己的Linux进程、DVM和Linux用户ID。
Java文件被编译成.dex文件,与.class文件相比,.dex文件消耗的内存更少。
现在假设10个应用程序有10个单独的DVM,操作系统有10个进程要处理。
Android操作系统中的调度程序负责处理这10个进程……这就是为什么我们有Android活动生命周期的原因。
您需要DVM来维护每个进程(每个应用程序)的运行状态。
1tuwyuhd3#
Android为什么需要一个虚拟机,是基于Google设计的Android API大量使用Java接口。Java本身通常在虚拟机上运行。
JVM本身是基于堆栈机器的VM,而Android的VM(称为Dalvik)是基于寄存器的VM(这是为了减少生成的代码和更快的速度,以便从使用Android的设备中获得更好的性能)
虚拟机的目的是能够通过模拟来抽象硬件。如果您创建一台虚拟机,并对其进行编译以在所有可能的硬件上运行,您将获得最初使Java流行起来的东西:一次编写、随处运行的可移植性。
您可以编写代码,而不必更改它并在您的虚拟机可以运行的任何硬件上运行它。
话又说回来,Android主要是用C(和C++?)构建的。但是操纵操作系统的API是通过Java接口的,因此您需要一个虚拟机。