Skip to content

Combined Training Java 21 + 25: Virtual Threads, Stream Gatherers & All New Features Since Java 17

Java 21 and Java 25 are the two current LTS versions – and together they bring the most extensive innovations since Java 17: Virtual Threads, Record Patterns, Stream Gatherers, and much more. These features noticeably simplify code and unlock new performance potential.

In four days, this combined course brings your team up to speed on both LTS versions –
clearly explained and immediately applicable.

Request now – no obligation
4 days
Individual date
On-site or online
German / English
Customizable agenda
Certificate of completion

What you’ll learn in this training

In this 4-day intensive training, you’ll explore the key innovations from Java 18 through 25 – compactly presented, clearly explained, and focused on practical value in everyday development.

Start with core features from Java 18 to 21: Record Patterns, Pattern Matching for switch, and the Sequenced Collections API help you write cleaner and more maintainable code.

You’ll also cover practical API enhancements (e.g., in String, Character, and Math), the Simple Web Server API, and changes in HashMap.

The module also includes improvements in Garbage Collection (such as Generational ZGC) and lower-level performance optimizations like alternative locking techniques.

In the second half, you’ll dive into cutting-edge features like Unnamed Variables & Patterns, Stream Gatherers, Scoped Values, and Markdown Documentation Comments – ideal for writing clean, well-documented, and context-aware code.

You’ll also explore the Foreign Function & Memory API for secure access to native libraries.

Other topics include Compact Source Files, the Instance Main Method, and performance upgrades like Compact Object Headers and Ahead-of-Time Class Loading.

The training is structured to be interactive and hands-on: short theory phases are followed directly by applying what you’ve learned to code – with examples from real projects. You’ll work together on concrete scenarios, discuss solutions, and anchor the knowledge sustainably within your team.

With plenty of hands-on exercises inspired by real projects, you’ll learn how to apply new features directly and effectively in your daily work.

We wrap up with a look ahead to innovations such as Primitive Types in Patterns, Stable Values, a refined Structured Concurrency API, and the evolution of the Vector API.

For a complete overview of all features, see my Java 21 features article and the Java 25 features article.

Target audience

This course is for Java developers who want to deepen their knowledge of Java 21 and 25 – structured, clear, and highly practical.

Whether you’re transitioning to Java 21 or 25 or already working with one of them: You’ll learn how to leverage modern language features, new APIs, and performance improvements efficiently.

It’s also ideal for teams already using Java 21 who want to systematically upgrade to Java 25.

Agenda

Part 1: Java 18-21

Major Features:

  • Virtual Threads
  • Sequenced Collections
  • Record Patterns
  • Pattern Matching for switch

Additional Features:

  • UTF-8 by default
  • Simple web server
  • Code snippets in Java API documentation
  • New system properties for System.out and System.err encoding
  • Compiler warnings for lossy type casts
  • Key Encapsulation Mechanism API

Bugfixes:

  • IdentityHashMap’s remove() and replace() methods use object identity

API Enhancements:

  • New methods for String, StringBuilder, and StringBuffer
  • New methods for Character
  • New methods for Math
  • HashMap.newHashMap()
  • Additional date-time formats

Garbage Collection:

  • String deduplication for ZGC, SerialGC, ParallelGC
  • G1 enhancements
  • Generational ZGC

Performance:

  • Generational ZGC
  • Alternative fast-locking scheme

Deprecations & Removals:

  • Deprecate finalization for removal
  • Locale constructors
  • URL constructors
  • Thread.stop(), suspend(), resume()
  • ThreadGroup
  • Dynamic loading of agents

Part 2: Java 22-25

Major Features:

  • Unnamed Variables & Patterns
  • Foreign Function & Memory API
  • Markdown Documentation Comments
  • Stream Gatherers
  • Synchronize Virtual Threads without Pinning
  • Scoped Values
  • Compact Source Files and Instance Main Methods

Other New Features:

  • Module Import Declarations
  • Launch multi-file source-code programs
  • Console methods with explicit Locale
  • Class-File API
  • Key Derivation Function API

API Enhancements:

  • Locale-dependent list patterns
  • Support for Duration until another Instant

Garbage Collection:

  • G1 GC improvements
  • ZGC: Generational mode by default

Performance / Memory Footprint:

  • Compact Object Headers
  • Ahead-of-Time Class Loading & Linking
  • Relax alignment of array elements
  • Change LockingMode default from LM_LEGACY to LM_LIGHTWEIGHT
  • Linking run-time images without JMODs

Deprecations & Removals:

  • Thread.countStackFrames()
  • Old core reflection implementation
  • Deprecations and removals in sun.misc.Unsafe
  • Thread.suspend(), resume() und ThreadGroup.suspend(), resume(), stop()
  • Security Manager

Looking Ahead:

  • Primitive Types in patterns, instanceof, and switch
  • Stable Values
  • Vector API
  • Structured Concurrency

Agenda as PDF

Exactly what your team has been looking for?

The agenda isn’t set in stone: we can align the focus, date, and format with your team.

Request now – no obligation

Why learn with me?

I’ve been working with Java for 30 years – as a developer, CTO, trainer, author, and speaker – and have helped companies modernize complex Java systems and develop their teams sustainably.

With HappyCoders.eu, I’ve built one of the most widely read Java blogs in the German-speaking world, and I regularly speak at conferences and JUGs.

I know this combined course’s core topics inside out: I’ve covered virtual threads in depth on HappyCoders and published on pattern matching in JavaMagazin – thousands of developers read my articles on the Java 25 features every day.

My goal: to teach complex topics in a way that is understandable, practical, and immediately applicable.

Rated 4.97 out of 5 on ProvenExpert

More about me

What Training Participants Say

Sven Woltmann of HappyCoders visited us to test and understand the new features around Java 25 together.

For two days, we worked intensively on Unnamed Variables & Patterns, Stream Gatherers, Scoped Values, the Foreign Function & Memory API, and performance topics such as virtual threads without pinning.

A big thank you to Sven for the excellent preparation, the clear didactics, and the deep technical expertise. That was a training exactly to our taste.

HBT icon
HBT
Hamburger Berater Team GmbH

Content and presentation nearly flawless. I enjoyed listening throughout, learned new things, and had fun doing it.

Your confidence in answering questions along the way was impressive.

David Munck
Java training participant

Anyone who understands Java can easily follow this trainer. The exercises are well thought out and focused on the essentials.

Java training participant

A good, in-depth overview of all relevant Java features since Java 8, and the opportunity to try all of these features out yourself.

Java training participant

The overall package was very coherent and always tailored to us.

Java training participant

Very practical and good exercise examples.

Java training participant

Quick to respond to questions – a very flexible trainer.

Java training participant

Very good repo with explanations + exercises in one place.

Java training participant

Pace + depth: top-notch.

Java training participant

A very pleasant mix of theory and practice.

Java training participant

A complex topic broken down superbly.

Java training participant

All the important news from Java 9–25 was well explained.

Java training participant

The mix of knowledge, likability, and content was very pleasant.

Java training participant

Any questions?

Participation & Booking

Can individuals book this training?

This training can only be booked for teams. If you’d like to attend as an individual, I offer two courses (in German) through ppedv:

Is the training held on-site or online?

Both are possible: I can come to your company for an on-site training – anywhere in Germany, Austria, and Switzerland – or we run the training online, usually via Zoom.

How many participants are possible?

I recommend a maximum of 12 participants per training – that way I can give everyone individual attention. There is no minimum: I charge per training, not per person.

How does booking work?

The easiest way is the request form or an email to training@happycoders.eu. Right after submitting, you can book a video call via Calendly, where we discuss the details. You’ll then receive a concrete offer from me.

Prerequisites

What prior Java experience is required?

Ideally, you’re familiar with Java 17. If you’ve worked with Java 11, you’ll be able to follow along just fine – the most important differences are put into context during the course. In general, I recommend at least two years of hands-on experience with Java.

What technical requirements do we need?

All participants need an up-to-date IDE with at least Java 25 – I use IntelliJ IDEA myself. Java 25 or later should also be installed in the terminal, as we’ll run some of the exercises there.

Schedule & Content

What does a training day look like?

A training day consists of four 90-minute modules – six hours of net training time in total. Each module alternates between theory and practice two to three times, so you apply what you’ve just learned directly to code. There’s a short break between the first and second and between the third and fourth module, and a longer lunch break between modules two and three. We align the exact schedule with your working hours – that’s flexible.

How much time is theory, how much is practice?

About half theory, half practice: a short theory phase is followed directly by applying it to code – with examples from real projects. Listening alone doesn’t help much; the knowledge has to be used immediately for it to stick.

Can we adapt the agenda to our team?

Yes – shortening topics, weighting them differently, changing the order, or combining content from different courses: I’m happy to adapt the agenda to your team. Since that means reworking the training materials, it involves extra effort – I’ll prepare an individual offer for you.

Format & Materials

Which platform do we use for virtual training?

We usually use Zoom. If you prefer your own platform – for example, Microsoft Teams or Google Meet – I’m happy to work with that. Just let me know in advance.

Do participants receive materials to keep?

Yes. Before the training, you’ll receive the exercises as a Git repository so you can get started right away. After the training, you’ll also receive the slides – including all solutions to the exercises.

Is there a certificate of attendance?

Yes. All participants receive a certificate of attendance after the training.

Prices & Costs

What do the travel expenses include?

Travel expenses are charged as a flat rate – depending on the training location and the number of overnight stays required. The exact amount is part of the individual offer I’ll send you.

Are there discounts for booking multiple trainings?

Yes. For multiple booked trainings or follow-up bookings, I can offer a volume discount. We’ll discuss this in the video call, and I’ll include it in the offer.

Is this a good fit for your team?

Just write to me – I usually reply within one business day.
Or book a free video call right away, and we’ll discuss everything important.

Request now – no obligation

Search