What you’ll learn in this training
This 6-day intensive course covers all key features from Java 12 through 25 – in depth, hands-on, and with plenty of room for exercises, questions, and individual deep dives.
In the first part (Java 12–17), you’ll see how language features like Records, Switch Expressions, Pattern Matching for instanceof, Text Blocks, and Sealed Classes make your code more elegant and maintainable. You’ll also get an overview of API improvements, of ZGC and Shenandoah, production-ready since Java 15, and of performance upgrades – and learn how to confidently handle the most common stumbling block when upgrading to Java 17: Strongly Encapsulate JDK Internals.
The second part (Java 18–21) focuses on the features that shape modern Java applications: Virtual Threads fundamentally simplify highly scalable applications and allow blocking I/O without the traditional overhead. Record Patterns and Pattern Matching for switch make complex logic more concise and easier to express. The Sequenced Collections API noticeably simplifies working with ordered data structures – plus API tweaks and runtime optimizations.
In the third part (Java 22–25), you’ll dive into the innovations that make Java future-proof: Unnamed Variables & Patterns reduce boilerplate code without losing information. The Stream Gatherers API significantly simplifies complex stream aggregations. Scoped Values enable thread-safe context propagation – and the Foreign Function & Memory API offers a stable, secure way to access native libraries without the detours of earlier approaches. Also on the agenda: Markdown Documentation Comments and performance topics like Compact Object Headers and Ahead-of-Time Class Loading.
The training is interactive and hands-on: short theory phases are followed directly by application in code – with examples from real-world projects. You’ll work together on concrete scenarios, discuss solutions, and anchor the knowledge sustainably in your team.
In numerous exercises, you’ll apply the new features directly and develop a deep understanding of how to use them productively in your projects. The intensive course gives you considerably more time for this than the compact format – for questions, for deep dives, and for a more lasting transfer into your team.
To wrap up, you’ll get a look at upcoming developments: Primitive Types in Patterns, Lazy Constants (formerly Stable Values), a redesigned Structured Concurrency API, and the Vector API.
For a complete overview of all features, see my Java 17 features article, the Java 21 features article, and the Java 25 features article.
Target audience
This course is for Java developers who want to stay up to date and get an in-depth understanding of the key updates in the LTS versions Java 17, 21, and 25 – with enough time for exercises and individual questions.
Whether you’re planning the move from Java 11 to a current LTS version or already work with Java 17 or 21 and want to catch up to Java 25 in a structured way – this course gives you the knowledge and the room to use modern Java features confidently and effectively in your projects.
Ideal for teams that have skipped several Java versions and now want to get thoroughly up to date – not in fast-forward mode, but in a way that actually sticks.
If you’d like to cover the same range of topics in a more compact format, the Combined Training Java 17 + 21 + 25 (Compact) offers a 5-day alternative. If you only want to catch up on two specific versions, the Combined Training Java 17 + 21 or the Combined Training Java 21 + 25 is a great choice.