1.10. JVM 和原生构建模式


您可以编译典型的 Java 虚拟机(JVM)应用程序,或使用 Mandrel 或 GraalVM 的 native-image 工具编译原生应用程序。

1.10.1. 将应用程序编译为典型的 JVM 应用程序

您可以将应用程序编译为 JVM 应用程序。这个选项基于 quarkus.package.type 配置属性,并生成以下文件之一:

  • fast-jar :针对 Quarkus 和默认配置选项优化的 JAR 文件。可以更快地启动时间,并稍微减少内存用量。
  • legacy-jar :典型的 JAR 文件。
  • uber-jar :单个独立 JAR 文件。

    这些 JAR 文件可用于所有操作系统,构建速度比原生镜像快。

1.10.2. 将应用程序编译到原生镜像中

您可以将应用程序编译到原生镜像。为此,您可以将 quarkus.package.type 配置属性设置为 native

使用此属性,您可以创建一个为您选择的操作系统(如 Windows 的 .exe 文件)编译的可执行二进制文件。这些文件的启动时间比 JAVA JAR 文件要快得多,但其编译需要几分钟时间。此外,使用原生二进制文件可达到的最大吞吐量比常规 JVM 应用低,因为缺少配置文件指南的优化。

  • 使用 Mandrel

    Mandrel 是 GraalVM for Red Hat build of Quarkus 的专用发行版,也是构建针对 Linux 容器化环境的原生可执行文件的首选方法。虽然 Mandrel 方法非常适合将编译输出嵌入到容器化环境中,但只提供了 Linux64-bit 原生可执行文件。因此,.exe 等结果不是选项。

    我们鼓励 Mandrel 用户使用容器来构建其原生可执行文件。

    要使用官方 Mandrel 镜像使用本地 Docker 或 Podman 安装将应用程序编译到原生模式,请输入具有以下属性的 mvn package 命令:

    -Dquarkus.package.type=native
    -Dquarkus.native.container-build=true
    -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1
    Copy to Clipboard Toggle word wrap
  • 使用 GraalVM

    因为 Mandrel 不支持 macOS,所以您可以使用 Oracle GraalVM 在此操作系统上构建原生可执行文件。

    您还可以在裸机 Linux 或 Windows 发行版上直接使用 Oracle GraalVM 来构建原生可执行文件。

    有关如何使用 Oracle GraalVM 构建原生可执行文件的详情,请参考 将 Quarkus 应用程序的红帽构建的 Quarkus 应用程序编译到原生可执行文件

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat