版本
- 适用于 JDK 23 的 GraalVM(最新)
- 适用于 JDK 24 的 GraalVM(抢先体验)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 存档
- 开发版本
GraalVM 简介
GraalVM 是一款先进的 JDK,具有提前(AOT)的 Native Image 编译功能。
GraalVM 在消耗更少资源的同时加速应用程序性能,从而提高应用程序效率并降低 IT 成本。它通过在构建时将您的 Java 应用程序编译成本地二进制文件来实现这一点。该二进制文件更小,启动速度提高了 100 倍,提供无预热峰值性能,并且比在 Java 虚拟机 (JVM) 上运行的应用程序使用更少的内存和 CPU。借助配置文件引导优化和 G1(垃圾优先)垃圾收集器,与在 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 版(附带“类路径”例外) 发布,与 Java 相同。请查看 各个 GraalVM 组件的许可证,这些许可证通常源自特定语言的许可证,可能会有所不同。
接下来阅读什么 #
- 从 安装指南 开始。
- GraalVM 基于 Java HotSpot 虚拟机。详细了解 GraalVM 作为 Java 虚拟机 及其优化即时编译器 Graal 编译器。
- 无论您是 GraalVM Native Image 的新手,还是只有很少的使用经验,请继续学习 使用 Native Image 入门。我们建议您查看 用户指南。
- 有兴趣将其他语言嵌入 Java 的开发人员,请直接转到 嵌入语言文档。
- 有兴趣为在 GraalVM 上运行的编程语言构建解释器的开发人员,请继续学习 Truffle 语言实现框架文档。
- 要详细了解 GraalVM 中的安全注意事项,请查看 安全指南。
- 如果您在可用文档中找不到所需的答案,或者有故障排除问题,请在 Slack 频道 中寻求帮助,或 提交 GitHub 问题。