Dev48
Language
  • About
  • Services
  • Industries
  • Technologies
  • Articles
  • Contacts
Book a call
    Home/Articles/Changes included in release 2608 of azul zing builds of openjdk
Dev48
info@dev48.org+375 29 320-40-96WhatsApp@isky_by

© 2026 · All rights reserved.

Changes Included in Release 26.08 of Azul Zing Builds of OpenJDK

Source: Azul | Better Java Performance, Superior Java Support•September 27, 2026 at 09:11 AM

Changes Included in Release 26.08 of Azul Zing Builds of OpenJDK

Learn about the changes in the 26.08 Stable Build of Azul Zing.

If you are running the 26.02 Stable Build, moving to 26.08 collapses six months of Stream Build work into a single upgrade — and one of those months added a way to skip a large part of your JIT warmup altogether.

By the end of this post you will know exactly what changed between 26.02.0.0 and 26.08.1.0: which defaults now differ, particularly on ARM64, which options graduated out of experimental status, which option combination will stop your JVM from starting, and which security fixes you inherit by upgrading.

How the Stream and Stable lines relate

Azul Zing Builds of OpenJDK, the optimized Java runtime in Azul Prime, ships in two lines.

Stream Builds are released monthly with the newest features and Patch Set Update (PSU) changes. The version number is the year and month, so 26.08.0.0 is the August 2026 Stream Build. You can get Stream Builds by requesting an Azul Prime trial.

Stable Builds are derived from a Stream Build and updated only with Critical Patch Updates (CPUs), PSUs, and critical Zing fixes — no new features and no non-critical changes. They are how Azul delivers time-sensitive fixes to customers, and they are available to customers only. The number carries the origin forward: 26.08.1.0 came from the August 2026 Stream Build, and the 1 marks it as the first update since.

Twice a year, in February and August, a Stream Build is promoted to become the new Stable Build. The 26.08 Stable Build is that August 2026 promotion, and everything below arrived in the Stream Builds between the two promotions. There was no 26.03 Stream Build, so the range is 26.04 through 26.08.

Compilation Streaming

Compilation Streaming lets each JVM download a stream of pre-compiled code from Azul Optimizer Hub at startup and install it directly, which cuts compilation queue time during warmup. Rather than waiting for its own compiler to work through the queue, the JVM starts with code that is already compiled.

The feature works through Cloud Native Compiler and has to be enabled on both sides. On the server, run Optimizer Hub 26.08.0 or later and set compilationStreaming.enabled; the task-executor component that builds the streams is deployed by default as of Optimizer Hub 26.08.0, so it needs no opt-in of its own. On the JVM, add -XX:+CNCEnableCompilationStreaming.

The options that control it:

One note if you tracked this feature through the Stream line: a JVM crash that could occur while resolving a compilation from a stream was reported as a known issue in 26.08.0.0. It is resolved in 26.08.1.0, so the Stable Line carries Compilation Streaming without that caveat.

Security fixes

The 26.08 Stable Line includes the security fixes from the April 2026 and July 2026 CPU and PSU releases, plus the August 2026 Critical Security Patch Update (CSPU).

The CSPU is new in 2026. It delivers security and stability fixes in between the quarterly update releases and introduces no new features, no API changes, and no behavior changes beyond the security fixes themselves. The August 2026 CSPU was the first one issued for Azul Zing Builds of OpenJDK.

General improvements

  • The lightweight locking scheme now has thread-local variants of the monitorenter and monitorexit operations, letting Orca optimize locking on unescaped objects.
  • -XX:+UseTaggedAddressForJavaHeap is enabled by default on ARM64. When -Xmx exceeds 512 GB, Zing disables the option and logs a warning.
  • The experimental -XX:+UseZlibNG option can now be enabled on JDK 25. zlib-ng is a performance-optimized drop-in replacement for zlib that can raise throughput and lower CPU usage in some cases; it arrived in 26.02.0.0 for JDK 11, 17, and 21, and JDK 25 support closes the gap.
  • The Metaspace MemoryPool MXBean is included for OpenJDK compatibility. Because Zing tracks metadata in the Java heap, already covered by the existing Zing Heap MXBean, this one always reports 0 usage. It is off by default and enabled with -XX:+EnableMetaspacePoolMXBean.
  • ThreadOpt (-XX:+UseThreadOpt and -XX:ThreadOptOptions) is deprecated and prints a warning when used.
  • Runtime bundle size is down, from shipping stripped librpc.so and librpccpp.so.
  • Stability fixes worth naming: a crash in non-ZST mode when -XX:+UseLargePages was used with a huge page size other than 2 MB, a crash in AsyncGetCallTrace when ucontext was null (which affected some async-profiler modes), JFR chunk file writes made while holding the JVM lock that could cause multi-second time-to-safepoint stalls, and JFR triggering many recompilations on attach when ZVision did not.

Optimizer Hub, local fallback, and ReadyNow

  • Methods compiled at a reduced optimization level during local fallback are now recompiled at their intended level once Cloud Native Compiler becomes reachable again.
  • A new option, -XX:CNCProductivityRemoteCpuToLocalCpuEquivalenceFactor, tunes the productivity-based local fallback decision.
  • The default for -XX:ProfileLogOutMaxNominatedGenerationCount changed from 0 (infinite) to 4, making the third generation of a ReadyNow profile the maximum level the VM nominates when using Cloud Native Compiler.
  • -XX:+EnableRNO can no longer be used with -XX:ProfileLogName. Zing fails to start with an error pointing you to -XX:ProfileName instead. This one will surface at startup rather than quietly, so check your flags before you upgrade.

Multi-tiering

Three Multi-Tiering command-line options are now product options, so setting them no longer requires -XX:+UnlockExperimentalVMOptions.

Multi-Tiering itself is still disabled by default. Enable it with -XX:+UseMultiTiering.

Garbage collection logging and the Falcon compiler

  • A new option, -XX:GCLogPrintRecompStatistics, logs recompilation statistics to the GC log on a RECOMPSCANSTATS line.
  • A new option, -XX:FalconIntrinsifyFillInStackTrace0, controls use of the Throwable.fillInStackTrace0(int) intrinsic.
  • GC log writes made while holding the JVM lock could cause checkpoint timeouts. Fixed.

Command-line option changes at a glance

New:

  • -XX:[+/-]CNCEnableCompilationStreaming, -XX:CNCCompilationStreamingMaxActiveSegments, -XX:CNCCompilationStreamingStopAfterSeconds, and -XX:[+/-]CNCCompilationStreamingPrintStatsAtExit
  • -XX:CNCProductivityRemoteCpuToLocalCpuEquivalenceFactor
  • -XX:GCLogPrintRecompStatistics
  • -XX:FalconIntrinsifyFillInStackTrace0
  • -XX:+EnableMetaspacePoolMXBean

Promoted from experimental to product options:

  • -XX:MultiTieringSamplingIntervalMS, -XX:MultiTieringSamplingStartDelayMS, and -XX:FalconMidTierOptimizationLevel

Changed defaults:

  • -XX:ProfileLogOutMaxNominatedGenerationCount, from 0 (infinite) to 4
  • -XX:+UseTaggedAddressForJavaHeap, now enabled by default on ARM64

Deprecated:

  • -XX:+UseThreadOpt and -XX:ThreadOptOptions

No longer valid together:

  • -XX:+EnableRNO with -XX:ProfileLogName. Use -XX:ProfileName.

OpenJDK versions in 26.08.1.0

One upgrade gets you six months of Stream Build work, pre-compiled code streamed in at startup, and every OpenJDK security fix through August 2026.

Frequently Asked Questions

How can I reduce JVM warm-up time in production?

Warm-up time is dominated by JIT compilation, so the fastest way to reduce it is to avoid compiling from scratch at every start. Azul Prime addresses this with ReadyNow, which reuses profiling information from previous runs, and with Compilation Streaming, which lets the JVM download pre-compiled code from Azul Optimizer Hub at startup and install it directly instead of waiting on its own compilation queue. Compilation Streaming was introduced in the Azul Prime 26.08 release and requires Azul Optimizer Hub 26.08.0 or later.

What is the difference between a stream release and a stable release of a Java runtime?

Stream releases ship frequently and carry new features alongside routine updates, while stable releases hold features constant and take only security and critical fixes. Azul Prime uses this model for Azul Zing Builds of OpenJDK: Stream Builds are released monthly and are available for development and evaluation, and Stable Builds take only Critical Patch Updates, Patch Set Updates, and critical fixes and are available to Azul customers. A Stream Build is promoted to become the new Stable Build twice a year, in February and August.

What is a Critical Security Patch Update for Java?

A Critical Security Patch Update, or CSPU, delivers security and stability fixes in between the regular quarterly Java update releases. It introduces no new features, no API changes, and no behavior changes beyond the security fixes themselves, which makes it low-risk to apply. Azul issued the first CSPU for Azul Zing Builds of OpenJDK in August 2026, and it is included in the Azul Prime 26.08 Stable Line alongside the April and July 2026 Critical Patch Update and Patch Set Update fixes.

Which Java versions can I run on a performance-optimized JVM?

Azul Prime 26.08 supports OpenJDK 8, 11, 17, 21, and 25, corresponding to 1.8.0_504-b2, 11.0.32.1+1-LTS, 17.0.20.1+1-LTS, 21.0.12.1+1-LTS, and 25.0.4.1+1-LTS. Java 25 is a Long-Term Support release, and support for it arrived in the Azul Prime 26.02 release. Running an older major version does not exclude you from current optimizations, since each release applies to all supported versions.

What do multiple JIT compiler tiers do for Java application performance?

Multiple compiler tiers let a JVM compile code quickly at a low optimization level early on and then recompile the code that matters at a higher level, which trades a small amount of peak performance for a much shorter warmup. Azul Prime implements this as Multi-Tiering, which is disabled by default and enabled with the -XX:+UseMultiTiering command-line option. As of the Azul Prime 26.08 release, its sampling interval, sampling start delay, and mid-tier optimization level are product options that no longer require unlocking experimental VM options.

← All articles

What this article says

More in Software Development

All →
Meet Relate by Neo4j: An Embedded Database for AI Agents
Neo4j

Meet Relate by Neo4j: An Embedded Database for AI Agents

Stories of service: Military veterans in our workforce
Safran

Stories of service: Military veterans in our workforce

Fast mode now costs $1 per 1,000 pages, and reads tables better
Datalab

Fast mode now costs $1 per 1,000 pages, and reads tables better

Recapping Camunda's Toronto Roadshow: The Case for Process Re-Engineering
Camunda

Recapping Camunda's Toronto Roadshow: The Case for Process Re-Engineering

Doubling LLM token rates in ComfyUI
Comfy Org

Doubling LLM token rates in ComfyUI

Why Vector-Only RAG Fails on Analytical Questions, and a Reference Architecture That Doesn’t
Couchbase

Why Vector-Only RAG Fails on Analytical Questions, and a Reference Architecture That Doesn’t

More from Azul

How One Large Java Fleet Enabled Transparent Huge Pages Without the Memory Bloat
Azul

How One Large Java Fleet Enabled Transparent Huge Pages Without the Memory Bloat

Same CVEs, Different JDK Distributions: Where Do You Get Your Patches?
Azul

Same CVEs, Different JDK Distributions: Where Do You Get Your Patches?

JDK 27: The quiet before the storm
Azul

JDK 27: The quiet before the storm

Java Patching at Incident Speed: Lessons from the eMudhra CA Compromise
Azul

Java Patching at Incident Speed: Lessons from the eMudhra CA Compromise

Free Java, Real Risk: Why Unsupported OpenJDK Is Now a Security Gamble
Azul

Free Java, Real Risk: Why Unsupported OpenJDK Is Now a Security Gamble

What’s New in the October 2026 Azul Payara Release?
Azul

What’s New in the October 2026 Azul Payara Release?