2 Java虚拟机

众所周知,Java 是一门运行在虚拟机上的语言。虚拟机就是一个虚拟的计算机,是 Java 语言的运行环境,它使得代码与操作系统无关,只和虚拟机有关。这个特性使得 Java 程序员不需要关注不同平台的差异,可以专心书写代码。

Java虚拟机(JVM)有以下核心的知识点:

  • 类加载机制

  • 内存结构

  • 垃圾回收(GC)

其中,类加载机制是 CoreMod 编写的核心内容,我们需要详细了解一个 class 文件是如何加载进内存的,并掌握基本的 class 文件结构与字节码以便对其进行修改。 Java 虚拟机规范(JVMS)并没有对内存结构和垃圾回收进行明确规定,具体操作方式由 Java 虚拟机自行决定,差异较大。

Java 字节码(Java Bytecode)

Java语言会经过编译,被翻译成 Java 虚拟机可以识别的字节码。此时 Java 虚拟机会认得这些字节码,并且运行它。字节码就像是其他程序编译完的机器码,都是可以直接运行在机器/虚拟机上的。 一开始,Java 字节码只会在运行时被 Java 虚拟机解释执行,后来 Sun 公司(现已被 Oracle 收购)开发了著名的 Java 虚拟机 Hotspot ,会将热点代码通过即时编译器(JIT)编译成本地机器码并缓存,通过编译执行与解释执行相结合的方式,极大加快了 Java 的运行效率。

JVM 语言

由于 Java 的代码通过翻译成字节码来在 Java 虚拟机上运行的,那么我们把其他语言翻译成字节码也就可以在 Java 虚拟机上运行。比如 Scala 、Kotlin 。

Last updated