什么是 GraalVM
高性能多语言 VM
什么是 GraalVM 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
什么是 GraalVM
GraalVM 是一种高性能 JDK 发行版,构建于名为 Graal 的现代即时编译器之上。它能让普通 Java 在许多工作负载下运行得更快,并新增两项核心能力:多语言执行和提前原生编译。
可直接替换的 JDK
GraalVM 是完整的 JDK。您现有的 javac、java 和字节码都可以原样使用。区别在于底层编译器以及它附带的额外工具,例如 native-image。
public class Main {
public static void main(String[] args) {
System.out.println("Runs the same on GraalVM as on any JDK");
System.out.println("Java: " + System.getProperty("java.version"));
}
}Graal 编译器
Graal 即时编译器本身使用 Java 编写。它会执行激进的优化,例如高级内联、部分逃逸分析和推测性优化,在抽象层次较高且分配频繁的代码上,通常能胜过传统的 C2 编译器。
使用 Truffle 实现多语言互操作
GraalVM 包含 Truffle 框架,可让多种语言在同一个 VM 上运行,甚至相互调用。目前已有 JavaScript、Python、Ruby、R 和 WebAssembly 的实现。值可以以较低的开销跨越语言边界。
多语言互操作示例(概念性)
使用多语言 API,您可以创建一个 Context,在另一种语言中执行代码,然后将结果读回 Java。相关类位于 org.graalvm.polyglot 中。
// Requires GraalVM polyglot runtime
import org.graalvm.polyglot.*;
public class Main {
public static void main(String[] args) {
try (Context ctx = Context.create()) {
Value sum = ctx.eval("js", "40 + 2");
System.out.println(sum.asInt());
}
}
}原生映像
native-image 工具会将 Java 提前编译为独立的原生可执行文件。运行时不需要 JVM,也没有类加载或即时编译预热——程序会在几毫秒内启动。
版本
GraalVM 有免费的社区版,以及包含额外优化的 Oracle GraalVM 发行版。二者都包含 native-image;对于大多数学习场景和许多生产用途,社区版本已经足够。
它为何对云端重要
快速启动和低内存占用使原生映像非常适合无服务器函数、命令行工具,以及能够缩容至零的容器。原生 Java 服务的启动速度可以和同类 Go 二进制文件一样快,消除了 JVM 长期以来的一项劣势。
即时编译与 AOT
两种执行模型可以共存:
- 即时编译(Graal 编译器)会利用实时性能分析在运行时进行优化——最适合长时间运行的服务器,以获得峰值吞吐量。
- AOT(原生映像工具)会在运行前完成编译——最适合追求启动速度和低内存占用的场景。
框架支持
Spring Boot、Quarkus 和 Micronaut 等现代框架都提供一流的原生映像工具支持。它们会在构建时预先计算配置,使您的应用程序能够顺利编译为原生二进制文件。
选择 GraalVM
如果您希望抽象层次较高的代码获得更高的即时编译吞吐量,需要多语言互操作,或者希望使用启动快速、内存占用低的原生可执行文件,就可以采用 GraalVM。它是标准 JDK 的超集,因此采用它的风险很低。
快速检查
检查您对 GraalVM 的理解。
回顾
您了解了 GraalVM:
- 它是基于高性能 Graal 即时编译器构建的完整 JDK。
- Truffle 支持多语言执行和跨语言调用。
- 原生映像工具会将 Java 提前编译为原生可执行文件。
- 即时编译偏向长时间运行时的吞吐量;AOT 偏向启动速度和内存占用。
- Spring Boot、Quarkus 和 Micronaut 等框架支持原生构建。
常见问题解答
「什么是 GraalVM」课时是免费的吗?
是的 — 「什么是 GraalVM」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「什么是 GraalVM」这节课中我会学到什么?
高性能多语言 VM 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「什么是 GraalVM」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。