版本
- 适用于 JDK 24 的 GraalVM(最新)
- 适用于 JDK 25 的 GraalVM(早期访问)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 存档
- 开发构建
GraalVM 简介
GraalVM 是一个高级 JDK,具有提前 (ahead-of-time) 本机镜像编译功能。
GraalVM 加速应用程序性能,同时消耗更少的资源——提高应用程序效率并降低 IT 成本。它通过将您的 Java 应用程序提前编译为本机二进制文件来实现这一点。该二进制文件更小,启动速度快 100 倍,无需预热即可提供峰值性能,并且比在 Java 虚拟机 (JVM) 上运行的应用程序使用更少的内存和 CPU。通过配置文件引导优化和 G1 (Garbage-First) 垃圾回收器,与在 JVM 上运行的应用程序相比,您可以获得更低的延迟以及相同或更好的峰值性能和吞吐量。
主要优势 #
GraalVM 的主要优势是:
- 低资源使用:通过 GraalVM 提前编译的 Java 应用程序运行时所需的内存和 CPU 更少。没有内存和 CPU 周期用于即时编译。因此,您的应用程序运行所需的资源更少,并且在规模化操作时成本更低。
- 快速启动:使用 GraalVM,您可以通过在构建时而不是运行时初始化部分 Java 应用程序来加快其启动速度,并立即实现可预测的峰值性能,无需预热。
- 紧凑封装:通过 GraalVM 提前编译的 Java 应用程序体积小,可以轻松封装到轻量级容器镜像中,实现快速高效的部署。
- 提高安全性:GraalVM 通过排除以下内容来减少 Java 应用程序的攻击面:不可达代码(未使用的类、方法和字段)、即时编译基础设施以及构建时初始化的代码。GraalVM 的封闭世界假设通过在运行时禁用动态功能(如反射、序列化等)来防止您的应用程序加载未知代码,并要求在构建时明确包含此类类、方法和字段的列表。GraalVM 可以在您的二进制文件中嵌入软件物料清单 (SBOM),使您更容易使用常见的安全扫描器检查您的 Java 应用程序是否存在已发布的常见漏洞和暴露 (CVE)。
- 轻松构建云原生微服务:流行的微服务框架,如 Micronaut、Spring Boot、Helidon 和 Quarkus,以及云平台,如 Oracle Cloud Infrastructure (OCI)、Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure,都支持 GraalVM。这使得您可以轻松构建云原生 Java 微服务,将其编译为二进制文件,封装在小型容器中,并在最流行的云平台上运行。
- 使用 Python 和其他语言扩展您的 Java 应用程序:使用 GraalVM,您可以嵌入 Python、JavaScript 等语言来扩展您的 Java 应用程序。
- 使用现有的开发和监控工具:您现有的 Java 应用程序开发和监控工具适用于 GraalVM 应用程序二进制文件。GraalVM 为 Maven 和 Gradle 提供构建插件,并为 CI/CD 提供 GitHub Actions。GraalVM 支持 Java Flight Recorder (JFR)、Java Management Extensions (JMX)、堆转储、VisualVM 和其他监控工具。GraalVM 适用于现有的 Java 编辑器/IDE 以及 JUnit 等单元测试框架。
许可和支持 #
Oracle GraalVM 根据 GraalVM 免费条款和条件 (GFTC),包括早期采用者版本的许可获得许可。受许可中的条件(包括早期采用者版本的许可)的约束,GFTC 旨在允许任何用户(包括商业和生产用途)使用。允许重新分发,只要不收取费用即可。Oracle GraalVM 也可在 Oracle Cloud Infrastructure 上免费使用。有关 Oracle GraalVM 许可的更多信息,请参阅 Oracle Java SE 许可常见问题解答。
GraalVM 社区版是一个开源项目,由 GitHub 上提供的源代码构建,并根据 GNU 通用公共许可证第 2 版(带“Classpath”例外)分发,其条款与 Java 相同。请查看个别 GraalVM 组件的许可证,这些许可证通常派生自特定语言的许可证,并可能有所不同。
接下来阅读什么 #
- 从安装指南开始。
- GraalVM 基于 Java HotSpot 虚拟机。阅读更多关于GraalVM 作为 Java 虚拟机及其优化即时编译器Graal 编译器的信息。
- 无论您是 GraalVM 本机镜像的新手,还是使用经验较少,请继续阅读本机镜像入门。我们建议您查看用户指南。
- 对将其他语言嵌入 Java 感兴趣的开发者,请直接查阅嵌入语言文档。
- 对构建编程语言解释器以使其在 GraalVM 上运行感兴趣的开发者,请继续查阅Truffle 语言实现框架文档。
- 要了解有关 GraalVM 中安全注意事项的更多信息,请查阅安全指南。
- 如果您在现有文档中找不到所需的答案或有故障排除疑问,请在 Slack 频道寻求帮助或提交 GitHub 问题。