为了活动小家电-Android JVM、DVM、ART(一)

105 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

前言

为了提供针对移动环境优化的运行时,DVM 作为现有 Java 虚拟机 JVM 的替代品出现了。从那时起,这个 DVM 就演变成了今天的ART。有了这么大的流程,希望这篇文章可以让大家对这三种运行时方法有个大概的了解

JVM是什么?

可以执行 Java 字节码的运行主体。

  • 它通过阐明所有原始类型的定义来确保平台独立性。
  • 通过基于数据流分析的Java字节码验证器,在执行前验证很多问题,保证安全,减少执行过程中的额外负担,如下:
    • 堆栈溢出
    • 违反指令操作数的类型规则
    • 在局部变量初始化之前使用
    • 违反现场访问规则等

特点

  • 基于堆栈的虚拟机
  • 在虚拟机级别以单继承的形式实现面向对象编程
  • 支持指针,但不能像 C 那样任意操作地址值的指针运算。
  • 使用垃圾收集
  • 通过明确所有原始类型的定义来确保平台独立性
  • 通过基于数据流分析的Java字节码验证器,在执行前验证栈溢出、对于命令操作数的类型规则、初始化前使用局部变量、违反字段访问规则等诸多问题,确保安全和额外负担 向指令指定要从指令中的堆栈中拉出的操作数的类型。

Java 字节码是什么?

  • 平台无关
  • 依赖JVM
  • 一次构建在多个平台上执行(WORA:一次编写,随处运行)

image.png

总结

Java 字节码独立于平台和依赖于 JVM。 换句话说,可以通过一次构建在多个平台上运行,而无需根据平台构建源代码,这样就可以帮助我们开发者实现跨平台能力了。

为了活动小家电,下篇继续搞