Java 源代码经过编译器编译后,就会生成 JVM 字节码,它是 Java 程序在 JVM 上执行的中间表示形式。JVM 字节码是一种基于栈的指令集架构(Stack-based Instruction Set Architecture)。每个字节码指令都会在 JVM 上执行一系列的操作,如加载、存储、运算、跳转等。 它使用基于操作数栈和局部变量表的执行模型。具有以下特点:
- 独立于具体的硬件和操作系统,不同平台上的 JVM 可以解释和执行相同的字节码文件。
- 相对于机器码和源代码,JVM 字节码是一种更高级别的抽象,并且比机器码更容易阅读和编写(理解)
- JVM 字节码通过运行时的即时编译器或解释器执行。
JVM 字节码使 Java 语言具备了跨平台的能力,只需编写一次 Java 程序,然后在不同平台上安装相应的 JVM,就能在这些平台上运行相同的字节码。这种特性为 Java 程序提供了很高的可移植性和兼容性。值得注意的是,其他编程语言也可以编译成 JVM 字节码,利用 JVM 的优势。这些编程语言叫做基于 JVM 的语言,例如 Kotlin、Groovy 等。这些语言的代码编译后也会生成和 Java 程序相同的 JVM 字节码。
此文章为11月Day15学习笔记,内容来源于极客时间《云时代的 JVM 原理与实战》,强烈推荐该课程