android系统是不是包含JVM?

Posted

技术标签:

【中文标题】android系统是不是包含JVM?【英文标题】:Does android system include JVM?android系统是否包含JVM? 【发布时间】:2015-04-24 03:42:27 【问题描述】:

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

【问题讨论】:

Dalvik 是 Java 运行时。 【参考方案1】:

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

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

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

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

@Chris Thompson 很好地解释了Understanding disassembly of Dalvik code 上的 DVM 字节码。

来源:Wikipedia/朋友/经历

【讨论】:

【参考方案2】:

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

没有。

或者说DVM是JVM的替代品?

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

【讨论】:

以上是关于android系统是不是包含JVM?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - 找不到 JVM 安装

Android Studio 安装时出现 No JVM installation found 怎么办

理解Android Java垃圾回收机制

未找到 Java。 Android Studio 无法找到有效的 JVM。 (在 Mac 操作系统上)

Android中JVM的堆大小[重复]

Android Studio的JVM内存不足问题怎么解决