持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
前言
为了提供针对移动环境优化的运行时,DVM 作为现有 Java 虚拟机 JVM 的替代品出现了。从那时起,这个 DVM 就演变成了今天的ART。有了这么大的流程,希望这篇文章可以让大家对这三种运行时方法有个大概的了解
JVM是什么?
可以执行 Java 字节码的运行主体。
- 它通过阐明所有原始类型的定义来确保平台独立性。
- 通过基于数据流分析的Java字节码验证器,在执行前验证很多问题,保证安全,减少执行过程中的额外负担,如下:
- 堆栈溢出
- 违反指令操作数的类型规则
- 在局部变量初始化之前使用
- 违反现场访问规则等
特点
- 基于堆栈的虚拟机
- 在虚拟机级别以单继承的形式实现面向对象编程
- 支持指针,但不能像 C 那样任意操作地址值的指针运算。
- 使用垃圾收集
- 通过明确所有原始类型的定义来确保平台独立性
- 通过基于数据流分析的Java字节码验证器,在执行前验证栈溢出、对于命令操作数的类型规则、初始化前使用局部变量、违反字段访问规则等诸多问题,确保安全和额外负担 向指令指定要从指令中的堆栈中拉出的操作数的类型。
Java 字节码是什么?
- 平台无关
- 依赖JVM
- 一次构建在多个平台上执行(WORA:一次编写,随处运行)
总结
Java 字节码独立于平台和依赖于 JVM。 换句话说,可以通过一次构建在多个平台上运行,而无需根据平台构建源代码,这样就可以帮助我们开发者实现跨平台能力了。