安卓系统是否包含JVM?

2022-09-01 14:11:24

我知道Android系统包括Dalvik虚拟机(DVM)但是我不明白Android系统是否也包括JVM或DVM是JVM的替代品?谢谢


答案 1

程序通常用Java编写并编译为Java虚拟机的字节码,然后将其转换为Dalvik字节码并存储在.dex(Dalvik EXecutable)和.odex(优化的Dalvik EXecutable)文件中。

简而言之,程序被编译成JVM字节码,然后被解释为DVM字节码。Dalvik不是运行编译好的Java代码,而是编译它,然后将该代码转换为它自己的代码。它在某种程度上是JVM的替代品。

一个名为Android Runtime(ART)的替代运行时环境作为技术预览包含在Android 4.4“KitKat”中。ART在Android 5.0“棒棒糖”中完全取代了Dalvik。

ART,Android Runtime,在Android 5.0中取代了Dalvik。ART仍然使用相同的文件,但它们被转换为(可执行和可链接格式)文件。这是JVM的另一个替代品,因为Java代码被编译成JVM字节码,然后转换为DVM字节码,然后转换为ELF文件并执行。.dex.elf

@Chris Thompson在理解Dalvik代码的反汇编中很好地解释了DVM字节码。

来源: 维基百科 / 朋友 / 经验


答案 2

但我不明白Android系统是否包括JVM

不。

或者DVM是JVM的替代品?

Dalvik虚拟机用于执行编译为Dalvik字节码的Android应用程序。Java 虚拟机用于执行编译为 Java 字节码的 Java 应用程序。你是否认为一个是另一个的替代品取决于你。


推荐