什么是 JVM?Java 虚拟机详解

JVM 可以在任何操作系统上运行 Java 字节码。 这就是为什么 Minecraft Java 版以及所有 Fabric 模组在 Windows、macOS 和 Linux 上都能运行的原因.

Conceptsby trqUpdated June 4, 2026
Key takeaways
  • JVM(Java虚拟机)是运行编译后的Java字节码的程序。
  • 相同的字节码可以在Windows、macOS和Linux上运行,因此模组无需重新编译。
  • 玩家需要Java运行时环境(JRE);模组开发者需要包含编译器的完整JDK。
  • Minecraft Java版和所有Fabric模组,包括Opal,都运行在JVM上.

JVM,即 Java 虚拟机,是运行 Java 代码的程序。你编写 Java 代码,编译器将其转换为字节码,然后 JVM 可以在任何操作系统上运行该字节码。 这就是为什么 Minecraft Java 版及其构建的模组在 Windows、macOS 和 Linux 上无需重新编译就能表现出相同的行为.

Opal 的适用环境

Opal 是一个 Fabric 模组,因此它与游戏使用相同的 JVM。 如果您正在设置它,设置指南 将会引导您完成整个过程。

JVM 实际执行的操作

JVM 运行的是字节码,而不是源代码。当你编译一个 Java 程序时,你不会得到一个 Windows 或 Mac 可执行文件。你会得到包含字节码的类文件,字节码是 JVM 能够理解的紧凑指令集。JVM 读取这些指令并在你的机器上执行它们。

这个额外的层级是关键所在。相同的字节码可以在任何安装了 JVM 的地方运行,因此“编写一次,随处运行”是 Java 如此广泛传播的简短解释。JVM 是使这个承诺成为现实的部分。

JVM、JRE 和 JDK

这三个术语经常被混淆,所以这里给出它们的划分。

术语它是什么何时需要它
JVM运行字节码的引擎始终,运行任何 Java 程序时都需要
JREJVM 加上标准库运行 Java 程序时需要
JDKJRE 加上编译器和开发工具构建 Java 程序时需要

玩家只需要运行时环境来启动游戏。构建模组的开发者需要完整的 JDK,以便首先将 Java 编译成字节码。

JVM 如何快速运行你的代码

JVM 首先通过逐个指令的方式解释字节码。在运行过程中,它会观察哪些方法被调用得最多。这些热点路径会被交给 JIT 编译器,JIT 编译器会将其转换为机器码并在运行时执行。经过预热后,最繁忙的代码将以接近原生速度运行.

JVM 也为你管理内存。垃圾回收器会回收你不再使用的对象,因此你无需像在 C 语言中那样手动释放内存。这正是 Java 易于编写且是许多模组作者首选语言的原因之一。

为什么这很重要 Minecraft

Minecraft Java 版在 JVM 上运行,所有针对它的工具客户端和模组也是如此。客户端自身的代码可以是 Java、Kotlin 或其他 JVM 语言,因为它们都编译成 JVM 运行的相同字节码 [Fabric]((https://fabricmc.net/) 的模组以字节码 jar 包形式发布,启动时加载器将其连接到游戏中,JVM 以一个进程运行整个内容。

这也是为什么启动器允许你调整诸如堆大小和使用的 Java 版本之类的设置。你是在配置托管游戏的 JVM,而不是游戏本身。

常见问题解答