1.10. JVM 和原生构建模式


下面的部分论述了编译经典 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 位原生可执行文件。因此,.exe 等结果不是选项。

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

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

    -Dquarkus.package.type=native
    -Dquarkus.native.container-build=true
    -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:{MandrelVersion}-{JDK-ver-other}
    Copy to Clipboard Toggle word wrap
  • 使用 GraalVM

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

    您还可以在裸机 Linux 或 Windows 发行版上直接使用 Oracle GraalVM 来构建原生可执行文件。有关此过程的更多信息,请参阅 Oracle GraalVM README 和发行注记。

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat