Data-Oriented Programming in Java 21, Solving the Countdown game - JEP Cafe #22

In this JEP Café, we will use a lot of the new features added to the JDK in the context of the data-oriented programming support: Records, Sealed Types, Pattern Matching, Unnamed Patterns, Exhaustive Switches, as well as the most recent additions to the Stream API: mapMulti() (from the JDK 16), and Gatherers (a preview feature of the JDK 22).

As a bonus, you will see an anonymous class used as a non-denotable type in action, to create a small wrapper on a mutable content. All this is used to solve a funny problem: the Countdown game, where you need to reach a target with a set of randomly drawn numbers, and the four arithmetic operations. Let us check if all this can take us to an efficient, and readable solution.

Make sure to check the show-notes!