Skip to content

Combined Training Java 17, 21 & 25 – Compact: Records, Virtual Threads, Stream Gatherers & All New Features from Java 12 to 25

Many teams have skipped Java versions – and are therefore using only a fraction of what modern Java has to offer. Records, Virtual Threads, and Stream Gatherers make code noticeably clearer and applications more powerful.

In five days, this compact course takes your team from Java 11 to the level of Java 25 – clearly explained and directly applicable.

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

What you’ll learn in this training

In this 5-day compact course, you’ll learn all essential updates from Java 12 through 25 – comprehensive, hands-on, and with a clear focus on everyday project work.

In the first part (Java 12–17), you’ll see how modern language features like Records, Switch Expressions, Pattern Matching for instanceof, and Sealed Classes make your code more elegant and maintainable. Text Blocks simplify working with multi-line strings. You’ll also get an overview of the enhancements in core APIs and of ZGC and Shenandoah, production-ready since Java 15 – 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 new Sequenced Collections API noticeably simplifies working with ordered data structures. Additional topics include API enhancements, Generational ZGC, and memory/performance 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. More highlights: Markdown Documentation Comments, Compact Source Files, Instance Main Methods, and advanced performance features.

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 to your advantage in everyday project work.

To wrap up, you’ll get a look at what’s coming next: Primitive Types in Patterns, Lazy Constants (formerly Stable Values), a redesigned Structured Concurrency API, and the ongoing evolution of 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 designed for Java developers who want to stay up to date and get to know the key updates in the LTS versions Java 17, 21, and 25 – compact and hands-on.

Whether you’re planning to migrate to Java 17 or 21, already using Java 25, or looking for a complete overview of all changes since Java 11 – this course gives you the knowledge you need 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 up to date all in one go.

If you want to catch up on all three versions, you have a choice of two formats: this compact course covers all the content in 5 days – efficiently and without gaps. If you prefer more time for exercises, more room for discussion, or more individual focus areas, the Combined Training Java 17 + 21 + 25 (Intensive) is the better choice – the same material, spread over 6 days.

If you only want to catch up on two specific versions, you’ll find the right option in the Combined Training Java 17 + 21 or the Combined Training Java 21 + 25.

Agenda

Part 1: Java 12-17

Major Features:

Additional Enhancements:

  • Helpful NullPointerExceptions
  • Hidden Classes
  • Warnings for value-based classes
  • Context-specific deserialization filters
  • Unix-domain socket channels

API Improvements:

  • New String methods
  • New Stream methods
  • Files.mismatch()
  • New ByteBuffer methods
  • The Teeing collector
  • Hex formatting and parsing utility
  • Enhanced pseudo-random number generators
  • InstantSource
  • Compact number formatting

Garbage Collection:

  • Improvements to G1 and Parallel GC
  • ZGC and Shenandoah production-ready
  • Elastic Metaspace

Performance:

  • Default and dynamic CDS archives
  • Non-volatile mapped byte buffers
  • Specialized TreeMap implementations
  • Decoupling of Compressed Oops and Compressed Class Pointers

Tools:

  • JFR event streaming
  • Packaging tool

Deprecations & Removals:

  • Thread.suspend() and resume(): deprecated for removal
  • ThreadGroup: stop(), destroy(), isDestroyed(), setDaemon(), and isDaemon()
  • Biased locking
  • Security Manager: deprecated for removal
  • Removed: CMS garbage collector
  • Removed: Nashorn JavaScript engine
  • Removed: Pack200
  • Removed: RMI Activation
  • Removed: experimental AOT and JIT compiler (Graal)
  • And more...

Part 2: 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
  • Internet-address resolution SPI
  • New system properties for System.out and System.err encoding
  • Compiler warnings for lossy conversions in compound assignments
  • Key Encapsulation Mechanism API
  • Alternative fast-locking scheme (experimental)

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() and related factory methods
  • Additional date-time formats

Garbage Collection:

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

Deprecations & Removals:

  • Deprecate finalization for removal
  • Locale constructors
  • URL constructors
  • Thread.stop(), suspend(), resume()
  • ThreadGroup
  • Prepare to disallow the dynamic loading of agents

Part 3: Java 22-25

Major Features:

Other New Features:

  • Module Import Declarations
  • Launch multi-file source-code programs
  • Console methods with explicit Locale
  • Class-File API
  • Key Derivation Function API
  • Linking run-time images without JMODs

API Enhancements:

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

Garbage Collection:

  • G1 GC improvements
  • ZGC: Generational mode by default
  • Generational Shenandoah

Performance / Memory Footprint:

Java Flight Recorder:

  • JFR cooperative sampling
  • JFR method timing & tracing
  • JFR CPU-time profiling (experimental)

Deprecations & Removals:

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

Looking Ahead:

Agenda as PDF

Does this match what your team needs right now?

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.

In that time, I’ve helped companies modernize complex Java systems, write performant code, and develop their teams sustainably.

With HappyCoders.eu, I’ve built one of the most widely read Java blogs in the German-speaking world. I know this course’s core topics inside out: thousands of developers read my articles on the features of Java 17, Java 21, and Java 25 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

100 % of the participants who answered would recommend my training – 82 % without reservation.

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
Hamburger Berater Team GmbH
Translated from German

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 at DAKOSY
Translated from German

I found the trainer easy to listen to, and it never got boring. I understood the explanations well. Sven answered questions quickly and corrected errors in the worksheets on the spot.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

A comprehensive training, with a trainer who knows what he is talking about. And when he doesn’t know, he looks it up right away or follows up with the answer shortly after.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

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

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

A knowledgeable trainer. Good structure, practical examples. Compact, and the concepts get explained. Good, comprehensible exercises.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

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

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

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
DAKOSY Datenkommunikationssystem AG
Translated from German

The talk was broken up by fitting exercises. Good presentation. Our questions were taken up.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

Very practical and good exercise examples.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

Quick to respond to questions – a very flexible trainer.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

A compact overview of how Java has evolved. A lot of input, much of which you can apply directly.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

Very good repo with explanations + exercises in one place.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

Pace + depth: top-notch. A very pleasant mix of theory and practice.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

A complex topic broken down superbly.

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

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

Java training participant
DAKOSY Datenkommunikationssystem AG
Translated from German

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 already know Java 11. If you’ve been working with Java 8, you’ll be fine too – the most important differences are put into context during the course. As a general rule, 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