Android系统包含JVM吗?

问题描述 投票:0回答:2

我知道Android系统包含Dalvik虚拟机(DVM)。

但是我不明白Android系统是否也包含JVM,或者DVM是JVM的替代品?

java android jvm jit dalvik
2个回答
38
投票

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

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

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

ART(Android 运行时)在 Android 5.0 中取代了 Dalvik。 ART 仍然使用相同的

.dex
文件,但它们被转换为
.elf
(可执行和可链接格式)文件。这是 JVM 的另一种替代品,因为 Java 代码被编译为 JVM 字节码,然后翻译为 DVM 字节码,然后翻译为 ELF 文件并执行。

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

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


17
投票

但是我不明白android系统是否包含JVM

没有。

或者 DVM 是 JVM 的替代品?

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

© www.soinside.com 2019 - 2024. All rights reserved.