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 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 VMs. 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?

If your workload already includes tuning flags, jaz will still work. We recommend removing those flags and letting jaz apply its own, unless you know exactly what those flags do and why you need them. If you want to keep specific settings, you can pass them normally. jaz will append them to the end of the final java command.

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

Yes. jaz allows any JVM options passed by the user to take precedence. The launcher appends your JVM flags to the final java command line. The JVM treats the rightmost flags with the highest priority, so your custom settings will override jaz defaults if they match. Certain flags may conflict though, and the java launcher may not start. For example, jaz will automatically select a garbage collector. If your command also specifies a GC selection flag (e.g. -XX:UseZGC), then the java launcher will fail.

Can I pass `java` agent flag and selective -XX options with `jaz`?

Yes. You can still pass any java argument, including -javaagent, and they will be honored by jaz. Recommendation: remove general-purpose tuning flags like -Xmx, -XX:MaxRAMPercentage, etc., as jaz sets those for you.
You may keep useful diagnostic flags such as:

  • -XX:NativeMemoryTracking=summary
  • -XX:+UnlockDiagnosticVMOptions
  • -Xlog or -XX:LogFile for logging
  • -javaagent for Application Insights or other APM instrumentation agents

jaz appends your flags to the final command, so your values will override jaz defaults when applicable. If you want jaz to skip all its tuning entirely for troubleshooting purposes, you can use:

JAZ_BYPASS=1

This 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 VMs, but it can technically run elsewhere. However, some advanced optimizations and future features may 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