Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Azure Command Launcher for Java is available on Linux for both x64 and arm64. The supported installation methods are:
- Use a container image with the tool preinstalled.
- Install on Azure Linux.
- Install from the Linux Software Repository for Microsoft Products.
Container images
The tool is included in the container images for the Microsoft Build of OpenJDK. No more setup is necessary.
For example, the following Dockerfile uses jaz to run a Java application from a jar file:
# 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"]
Install on Azure Linux
For virtual machines and other Azure Linux environments, you can install the tool by using the tdnf package manager. Install the jaz package with the following command:
sudo tdnf install jaz
Other Linux distributions
If you already set up the Linux Software Repository for Microsoft Products, run the appropriate package manager command for your distribution to install the jaz package.
For example, on Ubuntu or Debian-based distributions, run:
sudo apt-get install jaz
If you don't have the Linux Software Repository for Microsoft Products set up, follow the instructions for your Linux distribution.
To install on Ubuntu, open a terminal and run the following commands:
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
After the repository is added, install jaz by running the following commands:
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz
Certified JDK versions
The Azure Command Launcher for Java requires an OpenJDK-based JDK installation (version 8 or later) on the system.
Important
The Azure Command Launcher for Java requires a full JDK installation. It's not fully tested with JRE-only installations or custom jlink runtimes. For more information, see "Why doesn't it work with JRE or jlink runtimes?".
The Azure Command Launcher for Java is certified with the following JDKs, which receive the full set of tuning adjustments and optimizations on both x64 and arm64:
- Eclipse Temurin OpenJDK 8 with HotSpot JVM
- Microsoft Build of OpenJDK 11, 17, 21, and 25
With other OpenJDK-based JDKs, the tool does its best to launch your application but might not apply the full set of tuning adjustments or version-specific optimizations. Some optimizations are also specific to Microsoft Build of OpenJDK and aren't applied to other distributions.
When the tool detects a JDK that isn't certified, it prints the following warning to standard error and continues to launch your application:
jaz: WARNING: Detected a version of Java that has not been certified by jaz.
For best results, use one of the certified JDKs listed earlier.
Configuration
The jaz command doesn't consume any command-line arguments for its own configuration.
Instead, by default, it passes all arguments directly to the java command.
To ensure that jaz configuration doesn't interfere with your application's arguments, jaz only accepts configuration via environment variables.
You can configure the jaz command by using these environment variables:
| Environment variable | Description |
|---|---|
JAZ_HELP |
Set to 1 to print a help message and exit with code 0. |
JAZ_PRINT_VERSION |
Set to 1 to print the jaz version to stdout and exit with code 0. |
JAZ_DRY_RUN |
Set to 1 to print the java command that would be executed and exit with code 1. |
JAZ_BYPASS |
Set to 1 to bypass jaz optimization adjustments. No effect on telemetry. |
JAZ_IGNORE_USER_TUNING |
Set to 1 to ignore all user-provided tuning flags and apply jaz tuning instead. Otherwise, jaz only tunes the JVM if it detects no user-provided tuning flags. See "What happens if I already set some JVM options in my environment?" for more information about how jaz behaves with and without enabling this setting. |
JAZ_EXIT_WITHOUT_FLUSH |
Set to 1 to skip flushing telemetry on exit. This setting avoids potential delays (up to 30 seconds) jaz might introduce while flushing data, however jaz might still send telemetry. |
Using environment variables rather than command-line arguments also makes it easier to configure jaz in some cases.
When deploying a containerized application, it's sometimes easier to set environment variables than modify launch scripts. Experimenting with JAZ_IGNORE_USER_TUNING and JAZ_BYPASS might be useful when evaluating jaz.