Share via


Frequently asked questions about the Azure Command Launcher for Java

Provides answers to common questions about the Azure Command Launcher for Java.

How is `jaz` different from the `java` command?

The java command runs the HotSpot JVM (Java Virtual Machine) with default settings unless explicitly configured by the user.
jaz launches java with battle-tested, cloud-optimized JVM tuning defaults, designed to improve performance and cost-efficiency on Azure Containers and Virtual Machines. Key benefit: developers don't need to manually tune the JVM. jaz does it for them.

What should I do if I already set some JVM options in my environment?

We recommend removing any tuning flags and letting jaz apply its own. jaz considers most flags that start with -X or -XX to be a tuning flag. A notable example of a flag that isn't a tuning flag is one that starts with -Xlog.

When jaz looks for tuning flags, it handles the environment variables that java reads automatically. The environment variables are:

  • Java 8: JAVA_TOOL_OPTIONS, _JAVA_OPTIONS
  • Java 9 and later: JAVA_TOOL_OPTIONS, JDK_JAVA_OPTIONS, _JAVA_OPTIONS

jaz also handles @-files, also known as command line argument files.

What happens if I do pass custom JVM tuning flags when using `jaz`?

If your workload already includes tuning flags, then by default, jaz doesn't apply its tuning defaults. jaz launches java with the flags you chose.

You can configure jaz to ignore the custom JVM tuning flags and pass its own instead by setting an environment variable:

JAZ_IGNORE_USER_TUNING=1

The ignore user tuning setting applies to command line arguments, environment variables read by java, and @-files.

Can I pass `java` agent flag with `jaz`?

Yes. You can still pass -javaagent and other flags that aren't tuning flags, and jaz honors them. You can keep useful diagnostic flags such as:

  • -Xlog for logging
  • -javaagent for Application Insights or other Application Performance Monitoring (APM) instrumentation agents

If you want jaz to skip all of its tuning for troubleshooting purposes, you can use:

JAZ_BYPASS=1

Bypassing tuning is useful especially when you want to onboard jaz while relying solely on the existing user-provided JVM configuration or on java launcher defaults, before cleaning up JVM tuning flags.

Is `jaz` compatible with non-Azure environments?

jaz is designed and tested primarily for Azure Containers and Virtual Machines, but it can technically run elsewhere. However, some advanced optimizations and future features might be Azure-specific.

Is `jaz` available for Windows Server?

jaz is currently available for Linux on x64 and arm64 environments. If you have an immediate need for Windows Server, please contact us at openjdk-support@microsoft.com