Skip to main content

Generational ZGC on JDK 25: Benchmarks vs G1 (Beginner to Advanced)

A beginner-to-advanced guide to Generational ZGC on JDK 25 — the first LTS where it is the only ZGC. Colored pointers, load and store barriers, and a measured comparison against G1: ZGC's p99.9 of 1.4 ms vs G1's 95.2 ms, 1.5 ms of total freeze time vs 1.14 s, plus the failure modes and throughput costs nobody charts — allocation stalls, disabled compressed oops, and the promotion crossover where ZGC wins throughput too.

Java Vector API (JEP 537): SIMD, Auto-Vectorization, Masks, and Real Benchmarks

A beginner-to-advanced guide to Java's Vector API (JEP 537, twelfth incubator in JDK 27). Start from what a CPU vector and SIMD actually are, see how HotSpot's C2 auto-vectorizes simple loops for free (with an experiment that proves it), learn when auto-vectorization silently gives up, then write real vector loops with species, the loopBound tail pattern, and masks for branchless control flow - including a JMH-measured 5.0x speedup on one masked-filter workload and 5.7x on a branchy brightness kernel, the exact machine those numbers came from, and a runnable companion repository.

Java Value Classes (JEP 401): The Complete Guide to Project Valhalla’s First Preview (Beginner to Advanced)

A beginner-to-advanced guide to Java value classes (JEP 401), Project Valhalla's first preview targeting JDK 28. Learn what object identity costs (with runnable benchmarks), the value keyword, value records, the new construction rule, changed == semantics, Objects.hasIdentity, scalarization and heap flattening (with diagrams and a real 3x LocalDate benchmark), migrated JDK classes, migration rules, and what's not in the preview yet.

Spring Data JPA 3 to 4 Migration Guide: Query Derivation Changes, the hibernate-processor Coordinate Swap, and Value-Objects

A beginner-to-advanced guide to migrating the repository layer from Spring Data JPA 3 to 4 on Spring Boot 4.1: the hibernate-jpamodelgen → hibernate-processor coordinate swap and the silent metamodel failure it causes, why derived queries now generate JPQL instead of CriteriaQuery (and the getSingleResultOrNull edge case), records as @Embeddable value objects and projection targets, JSpecify nullability, the refined Specification API, and the removed config that breaks your build — all mapped to real code and errors on a Spring Boot 4.1 app.