Modern Java Features
Master modern Java features from Java 11 to 21 — records, sealed classes, pattern matching, virtual threads, and text blocks.
55 min•By Priygop Team•Last updated: Feb 2026
Java 11-21 Features
- Records (Java 14): record Point(int x, int y) {} — immutable data classes with auto-generated constructor, getters, equals, hashCode, toString. Replaces boilerplate POJOs
- Sealed Classes (Java 17): sealed class Shape permits Circle, Square {} — restrict which classes can extend. Compiler ensures exhaustive pattern matching in switch
- Pattern Matching (Java 21): switch (shape) { case Circle c -> c.radius(); case Square s -> s.side(); } — type-safe, exhaustive pattern matching. No more instanceof + casting
- Text Blocks (Java 15): Triple-quoted strings with proper indentation — var json = """{ "name": "John" }"""; Perfect for JSON, SQL, HTML templates in code
- Virtual Threads (Java 21): Thread.ofVirtual().start(task) — millions of lightweight threads. Blocking I/O doesn't block OS threads. Revolutionary for high-concurrency servers
- var Keyword (Java 10): var list = new ArrayList<String>() — local variable type inference. Reduces verbosity while maintaining type safety. Use when type is obvious
Modern Java Best Practices
- Stream API: list.stream().filter(x -> x > 5).map(x -> x * 2).collect(Collectors.toList()) — functional data processing. Prefer streams over manual loops for clarity
- Optional: Optional<User> findUser(id) — eliminates null pointer exceptions. Use .map(), .flatMap(), .orElse() instead of null checks. Never use Optional for fields or parameters
- HttpClient: Modern HTTP client — HttpClient.newHttpClient().send(request, BodyHandlers.ofString()). Async, HTTP/2, WebSocket support. Replaces Apache HttpClient for most cases
- CompletableFuture: Async programming — CompletableFuture.supplyAsync(() -> fetchData()).thenApply(data -> process(data)). Chain async operations without blocking
- Immutable Collections: List.of(), Map.of(), Set.of() — create unmodifiable collections. List.copyOf() for defensive copies. Safer, cleaner code