如何为 Java 安装 Azure 命令启动器

适用于 Java 的 Azure 命令启动器在 Linux 上适用于 x64 和 arm64。 支持的安装方法包括:

容器映像

该工具包含在 Microsoft Build of OpenJDK 的容器镜像中。 无需进行更多设置。

例如,以下 Dockerfile 使用 jazjar 文件中运行 Java 应用程序:

# Use any Microsoft Build of OpenJDK base image
FROM mcr.microsoft.com/openjdk/jdk:25-ubuntu

# Add your application.jar
COPY application.jar /application.jar

# Use jaz to launch your Java application
CMD ["jaz", "-jar", "application.jar"]

在 Azure Linux 上安装

对于虚拟机和其他 Azure Linux 环境,可以使用包管理器安装该工具tdnf。 使用以下命令安装 jaz 包:

sudo tdnf install jaz

其他 Linux 分发版

如果已为 Microsoft 产品设置 Linux 软件存储库,请运行分发版的相应包管理器命令以安装jaz包。

例如,在基于 Ubuntu 或 Debian 的分发版上,运行:

sudo apt-get install jaz

如果尚未设置适用于 Microsoft 产品的 Linux 软件存储库,请按照 Linux 分发版的说明进行操作。

若要在 Ubuntu 上安装,请打开终端并运行以下命令:

wget "https://packages.microsoft.com/config/ubuntu/$(. /etc/os-release; echo $VERSION_ID)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb && \
  sudo dpkg -i packages-microsoft-prod.deb

添加存储库后,运行以下命令进行安装 jaz

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz

认证的 JDK 版本

Java的 Azure 命令启动器需要在系统上安装基于 OpenJDK 的 JDK 安装(版本 8 或更高版本)。

Important

适用于 Java 的 Azure 命令启动器需要完整的 JDK 安装。 未对仅 JRE 安装或自定义 jlink 运行时进行全面测试。 有关详细信息,请参阅 “为什么它不适用于 JRE 或 jlink 运行时?”

适用于 Java 的 Azure Command Launcher 已通过以下 JDK 的认证,并在 x64 和 arm64 平台上获得全套调优和优化:

对于其他基于 OpenJDK 的 JDK,该工具会尽量启动您的应用程序,但可能无法应用全套调优设置或特定于版本的优化。 某些优化还特定于Microsoft Build of OpenJDK,不适用于其他分发版。

当该工具检测到未认证的 JDK 时,它会将以下警告输出到标准错误,并继续启动应用程序:

jaz: WARNING: Detected a version of Java that has not been certified by jaz.

为了获得最佳结果,请使用前面列出的认证 JDK 之一。

Configuration

jaz 命令不消耗任何用于其自身配置的命令行参数。 相反,默认情况下,它将所有参数直接传递给 java 命令。 为了确保jaz配置不会干扰应用程序的命令行参数,jaz仅通过环境变量接受配置。

可以使用以下环境变量来配置 jaz 命令:

环境变量 Description
JAZ_HELP 设置为 1 打印帮助消息并使用代码 0退出。
JAZ_PRINT_VERSION 设置为 1 打印 jaz 到 stdout 的版本,并使用代码 0退出。
JAZ_DRY_RUN 1设置为打印将执行的java命令,并以1代码退出。
JAZ_BYPASS 将其设置为 1 以绕过 jaz 的优化调整。 对遥测没有影响。
JAZ_IGNORE_USER_TUNING 设置为 1 以忽略所有用户提供的调优标志,改用 jaz 调优。 否则,jaz 仅在未检测到用户提供的调优参数时才会对 JVM 进行调优。 关于启用或不启用此设置时的行为的详细信息,请参阅jaz
JAZ_EXIT_WITHOUT_FLUSH 设置为 1 以在退出时跳过刷新遥测数据。 此设置可避免 jaz 在刷新数据时可能引入的延迟(最长可达 30 秒),不过 jaz 仍可能发送遥测数据。

使用环境变量而不是命令行参数也使在某些情况下更易于配置 jaz 。 部署容器化应用程序时,有时比修改启动脚本更容易设置环境变量。 在评估jaz时,对JAZ_IGNORE_USER_TUNINGJAZ_BYPASS进行试验可能会很有帮助。