Java Weekly #5: JDK 28 Issues Value Class Compatibility Alert for 30 Core Classes, Tiered Iterative AOT Cache Lands, ZGC Startup Sped Up by 40%

Java · Weekly #5

Java Weekly #5: JDK 28 Issues Value Class Compatibility Alert for 30 Core Classes, Tiered Iterative AOT Cache Lands, ZGC Startup Sped Up by 40%

javaJavaWeeklyProject ValhallaAOT CompilationGarbage Collection

Sources:GitHub Releases + 官方博客 + HN

📦 Release Updates

Official Stable Distribution Status and Mainline Evolution

The current official stable release is OpenJDK JDK 27.0.1.0.3 GA Release Builds, officially released on October 24, 2026, with build identifier 27.0.1.0.3+1. Verification across official channels confirms no new point releases over the past seven days. For in-depth architectural coverage of Java 27—including compact object headers and structured concurrency—see our comprehensive breakdown: Java 27 Deep Dive.

The development branch JDK 28 remains in Early Access, with the latest public build being Build 21 (released October 22, 2026). Over the past week, mainline (jdk/jdk) evolution focused heavily on multi-stage AOT infrastructure and microarchitectural vector optimizations:

Platform / ComponentChange DateCore Mechanism AdjustmentProduction Impact
OpenJDK JDK 27.0.1.0.32026-10-24Loaded IANA 2026e timezones; removed compromised eMudhra/Comodo AAA root certificates (JDK-8395690)Eliminates forged certificate chain risks; baseline active until the November 17, 2026 CPU cycle.
JDK 28 Early-Access (Build 21)2026-10-22Deprecated Windows TCP loopback privileges; added jlink --security-properties pluginEnables static baking of security parameters during container build stages, eliminating runtime plaintext mount overhead.
Mainline AOT Infrastructure2026-10-30Merged PR #31344 (JDK-8353598), supporting multi-stage iterative -XX:AOTCache input and outputDecouples framework and business layer AOT caches, enabling layered caching on top of Spring Boot/Quarkus base images.
x86 CRC32 Vector Acceleration2026-10-30Merged PR #33342 (JDK-8394259), adopting AVX2 and Barrett reduction for non-AVX-512 environmentsEliminates 8-byte table lookup serialization; boosts calculation throughput on 32B to 1024B blocks by 20.3%–34.3%.

JDK 28 has now locked in JEP 401 (Value Objects), JEP 540 (Lightweight JSON API), JEP 543 (Structured Concurrency), JEP 544 (AOT Machine Code Compilation), JEP 545 (ZGC Fast Warmup), and JEP 546 (ZGC Adaptive Heap Sizing), firmly shifting the ecosystem’s trajectory from surface-level syntax changes toward fundamental runtime efficiency.


📝 Deep Dives

1. JDK 28 Quality Heads-Up: 30 JDK Core Classes Converted to Value Classes, Breaking Change Testing Begins

  • What happened: On October 27, OpenJDK Quality Group lead Nicolai Parlog issued a testing alert. With JEP 401 (Value Objects) targeted as a preview feature for JDK 28, enabling preview mode will directly convert 30 built-in standard JDK classes into value classes. This includes the eight primitive wrappers and Record in java.lang; all four classes in the Optional suite; and 16 temporal classes including LocalDate and Instant.
  • Why it matters: The transition completely strips object identity. Code running with preview enabled faces immediate behavioral changes: == switches to field-by-field value equality (evaluating == on independently instantiated identical dates changes from false to true); value objects lose intrinsic monitors, causing synchronized and wait() calls to throw IdentityException; WeakHashMap rejects value objects; calling setAccessible(true) to mutate private fields throws IllegalAccessException; and Record constructors are strictly forbidden from leaking this before all fields are initialized.
  • Who it affects: Framework authors and application maintainers relying on memory address equality, primitive wrapper/date locks, or deep reflective field mutation during serialization.

2. OpenJDK Mainline Merges Tiered Iterative AOT Training (PR #31344): Decoupling Framework and Application Caches

  • What happened: On October 30, HotSpot architect Ioi Lam merged PR #31344 (JDK-8353598) into master. Previously, JVM AOT cache generation was a monolithic, single-pass operation; passing an existing -XX:AOTCache during a training run would trigger a fatal error. The new implementation permits multi-pass incremental training layered on top of a base cache: java -XX:AOTCache=base.aot -XX:AOTCacheOutput=app.aot -cp App.jar MyApp.
  • Why it matters: This eliminates a major hurdle preventing modular AOT adoption. In cloud-native microservices, frameworks like Spring Boot account for the lion’s share of class loading and inlining paths. Recording these paths during every single CI build incurs significant overhead, while single business application runs rarely exercise all framework capabilities. Layered training allows infrastructure teams to bake a pre-warmed base framework cache into container base images, requiring application builds to only profile application-specific execution paths.
  • Who it affects: Platform architects maintaining standardized base images, cloud-native microservice CI/CD pipelines, and Serverless cold-start optimizations.

3. ZGC Fast Warmup & Adaptive Heap Proposals Targeted for JDK 28 (JEP 545 / JEP 546): Default Heap Collapses to 2MB

  • What happened: In late October, OpenJDK officially targeted JEP 545 and JEP 546 for JDK 28. JEP 545 shrinks ZGC’s default initial heap to a lean 2MB and switches to aggressive coarse-grained 2MB physical page allocation increments. In tandem, JEP 546 introduces container-aware adaptive heap tuning (-XX:+ZAdaptiveHeapSizing), obsoleting static heap dimensioning.
  • Why it matters: Resolves the classic trade-off between low-latency collection and startup throughput. Production environments traditionally set -Xms alongside -XX:+AlwaysPreTouch, causing 32GB instances to spend over 10 seconds in heap initialization alone; conversely, running with small initial heaps led to frequent 4KB OS memory allocations that severely dragged out warmup periods. JEP 545 cuts baseline service startup times by nearly 40% and reduces the time required to reach peak throughput by 90%. Meanwhile, JEP 546 introduces the ZGCIntensity metric, dynamically scaling GC thread activity and memory footprints based on host CPU and memory saturation.
  • Who it affects: SREs and systems engineers running high-density multi-tenant workloads in Kubernetes, previously constrained by rigid static heap allocation and warmup latency.

4. x86 CRC32 Assembly Overhaul (PR #33342): Barrett Reduction Delivers 34.3% Throughput Boost

  • What happened: On October 30, OpenJDK merged PR #33342 (JDK-8394259). For x86 hardware lacking AVX-512 support, the patch overhauls the tail reduction in kernel_crc32, replacing legacy 8-byte table-lookup loops with AVX2 vector folding and Barrett reduction.
  • Why it matters: Completely eliminates pipeline stalls caused by data-dependent table lookups. Previous non-AVX-512 code paths folded data to 64 bits and then executed serial byte-by-byte lookups, generating eight serial memory loads and five register transfers between vector and general-purpose registers. The new implementation introduces constants K_128_64 and K_64_32, utilizing vpclmulqdq carryless multiplication entirely within vector registers. Benchmarks on an Intel Xeon 6980P demonstrate a 34.3% throughput gain on 32-byte chunks (jumping from 14,586 to 19,589 ops/ms), 31.6% on 64B, 27.8% on 128B, 25.9% on 256B, and 23.7% on 512B.
  • Who it affects: Authors and maintainers of high-throughput RPC frameworks (gRPC, Netty), distributed message brokers (Kafka), and storage engines that perform constant frame checksumming.

🔥 Community Buzz

1. XPipe Uncovers Java AOT Cache Distribution Pitfall: Missing CPU Baseline in AdapterBlob Triggers SIGILL

  • Engagement: The open-source XPipe team published an in-depth post-mortem; the accompanying Hacker News thread garnered 91 points and 44 comments (item 50242509).
  • The Incident: The XPipe team attempted to bundle JDK 25+ AOT Cache (-XX:+AOTClassLinking) within their distributed binaries. However, they discovered that the generated cache embedded compiled AdapterBlob stubs (introduced in JDK-8350209 to bridge interpreter execution and compiled code) containing host-specific machine instructions (e.g., AVX-512). When distributed to client machines or cloud instances lacking those instructions (such as 12th Gen Intel Core CPUs or certain hypervisors), the JVM crashed immediately on startup with SIGILL (0x4) (Illegal Instruction), with no graceful runtime fallback mechanism.
  • Key Arguments:
    • Datacenter Homogeneous Fleet Camp: HotSpot engineers and cloud architects argued that AOT Cache was primarily designed for datacenter microservices where build runners and production nodes share identical CPU architectures. In controlled cloud environments, ensuring baseline instruction parity yields massive startup gains, and AOT Cache should not be expected to shoulder cross-CPU client software distribution.
    • Heterogeneous & Client Distribution Camp: Desktop developers and hybrid-cloud practitioners countered that production hardware is inherently heterogeneous, with cloud providers frequently migrating guests across mixed CPU generations. GraalVM Native Image offers -march=compatibility to balance optimization with broad reach; HotSpot’s uncontrolled emission of host-specific instructions without verification flags introduces high crash risks for general software distribution.

2. Certificate Fingerprint Blocklists Broken: Sonatype Demonstrates Signature Malleability Bypass

  • Engagement: Sonatype Research Labs published an exploit demonstration; OpenJDK simultaneously issued an advisory bulletin (openjdk.org/emudhra).
  • The Incident: Following the mid-October compromise of eMudhra intermediate CA private keys, common remediation centered around appending affected SHA-256 certificate fingerprints to blocked.certs. Sonatype researchers proved that because digital certificates adhere to ASN.1 encoding, ECDSA signatures possess inherent malleability. Without access to the private key, an attacker can simply transform signature value s into its congruous n - s, or mutate non-critical ASN.1 bytes in RSA certificates, generating a fresh SHA-256 fingerprint that bypasses static blocklists while validating cleanly against the root certificate.
  • Key Arguments:
    • Physical Root Revocation Camp: Security researchers and OpenJDK maintainers agreed that when certificates support multiple valid byte-level encodings, relying on single SHA-256 stream hashes is fundamentally flawed. When intermediate CAs are compromised, the only robust defense is physically removing the offending root certificates from the trust store (cacerts), as executed in JDK-8395690, even if it temporarily disrupts connectivity for legitimate legacy clients.
    • Dynamic PKI Verification Camp: Enterprise SREs and security architects argued that manual root removal is too slow and disruptive. Java must evolve past static binary fingerprints toward modern PKI paradigms, such as Subject Public Key Info (SPKI) hashing or native runtime OCSP Stapling and CRL checking, avoiding the operational bottleneck of requiring global JVM base image redeployments for every intermediate CA incident.

🔭 Next Week in Focus

  1. Approaching November 17, 2026 Critical Patch Update (CPU) Deadline: The official security baseline marks JDK 27.0.1.0.3’s operational window as closing on November 17. As the eMudhra revocation fallout ripples across middleware stacks, downstream distributions (Eclipse Temurin, Amazon Corretto, Azul Zulu) will finalize Q4 CPU release testing next week; teams should prepare container base image rollout schedules accordingly.
  2. JDK 28 Feature Targeting & Build Progress: Having merged JEP 545, JEP 546, and JEP 544, the JDK 28 team will evaluate JEP 535 (Shenandoah Generational Mode by Default) next week, continuing rapid advancements in low-latency garbage collection.