This repository demonstrates modern Java features from Java 10 through Java 25.
trail/src/Main25.java- Java 25 features demonstrationtrail/src/StreamGatherers25.java- Java 25 Stream Gatherers API examplestrail/src/Main21.java- Java 21 features demonstrationtrail/src/Main.java- Java 17 and earlier featurestrail/src/Letters.java- Sealed class exampletrail/src/Hash.java- Sealed interface exampletrail/src/English.java- Text blocks and sealed types
- Flexible constructor bodies (JEP 482) - Statements before super() in constructors
- Primitive type patterns (JEP 455) - Pattern matching with primitive types in switch and instanceof
- Stream Gatherers - Custom intermediate stream operations (windowFixed, windowSliding, fold, mapConcurrent)
- Enhanced pattern matching - Primitive patterns in switch expressions with guards
- Record patterns in switch - Pattern matching with records in switch expressions
- Sequenced collections - New collection interfaces with defined ordering (addFirst, addLast, reversed)
- Virtual threads - Lightweight threads for high-throughput concurrent applications
- Sealed classes - Control which classes can extend a class
- Sealed interfaces - Control which classes can implement an interface
- Switch expressions - Enhanced switch with arrow syntax
- Pattern matching with instanceof - Type patterns in instanceof
- var-args - Variable-length argument lists
- Text blocks - Multi-line string literals with proper formatting
- Type inference (var) - Local variable type inference
- Java 21 examples require Java 21 or later
- Java 25 examples require Java 25 or later (or a compatible early-access build)