
Become a Better Java Developer!
Modern Java: new versions & features, performance, and JVM insights – tutorials and deep dives, clearly explained and directly applicable.


Withers in Java: Derived Record Creation Expressions (JEP 468)
September 3, 2025Withers (JEP 468) derive new Java records by specifying only the changed components – no wither methods, no boilerplate.
Java Modernization: How to Get Your Team and Management on Board
August 11, 2025How to win your team and management over for Java modernization – with clear arguments, real-world examples and quick wins.
Java 25 Features (with Examples)
June 5, 2025Java 25 (LTS): Scoped Values, Compact Source Files, Flexible Constructor Bodies, Compact Object Headers, and more – explained with examples.
Initialization-on-Demand Holder Idiom in Java (Holder Pattern)
May 8, 2025Thread-safe lazy initialization of static fields without synchronization: how the Initialization-on-Demand Holder Idiom works in Java.
Double-Checked Locking in Java: Why You Need volatile
May 8, 2025Double-Checked Locking in Java: why the original idiom is broken, why volatile fixes it – and when Lazy Constants are the better choice.
Lazy Constants in Java (Stable Values) – Safe and Lazy Initialization
April 9, 2025Lazy Constants in Java (formerly Stable Values) explained: initialize values thread-safely on first use – plus Lazy Lists, Sets, and Maps.
Compact Object Headers in Java (JEP 519) – default since Java 27
April 7, 2025How Java shrinks object headers from 96 to 64 bits without losing information. Compact Object Headers (JEP 519), default since Java 27.
Java 24 Features (with Examples)
December 4, 2024Java 24 with code examples: Stream Gatherers, synchronized in virtual threads without pinning, AOT Class Loading, Compact Object Headers.
Ahead-of-Time Class Loading & Linking: Java’s AOT Cache
December 3, 2024Ahead-of-Time Class Loading & Linking speeds up Java application startup by up to 42%. Here’s how to create the AOT cache, step by step.
Primitive Types in Patterns, instanceof, and switch (Java)
December 3, 2024Primitive type patterns bring int, long, and double into pattern matching. Use them in instanceof and switch – a preview since Java 23.Want Even More Knowledge?
My blog features many articles on Java, software architecture, and performance — from foundational concepts to advanced patterns.
If you want to go deeper, check out my trainings: hands-on, easy to understand, and directly applicable to your day-to-day project work. Instead of theory, I teach principles that help you write code that is better, more maintainable, and more performant in the long run.
Explore the Java Trainings