> Markdown version of [/videos/344-what-s-new-for-developers-moving-from-java-11-to-17](https://www.wearedevelopers.com/videos/344-what-s-new-for-developers-moving-from-java-11-to-17). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # "What´s New for Developers Moving from Java 11 to 17?" Tired of writing endless DTO boilerplate and redundant casting? Discover how Java 17's native records, text blocks, and enhanced pattern matching drastically streamline your daily coding workflow. - **Speakers:** Daniel Strmečki - **Event:** WeAreDevelopers LIVE - **Published:** February 1, 2022 - **Duration:** 47:15 - **URL:** https://www.wearedevelopers.com/videos/344-what-s-new-for-developers-moving-from-java-11-to-17 ## Summary The transition from Java 11 to Java 17 marks a significant update for enterprise developers, driven by a new Oracle release cadence moving from three-year to two-year cycles for long-term support (LTS) versions. Accompanying this is a more permissive licensing model allowing free commercial use for three years. For development teams, migrating to Java 17 isn't about adopting completely paradigm-shifting constructs like the functional changes of Java 8, but rather leaning into a collection of pragmatic, quality-of-life enhancements. Upgrading ensures ongoing security tier support while providing modern syntax updates that drastically reduce boilerplate and improve overall code readability. The release introduces several core language additions that directly impact day-to-day coding. Text blocks radically simplify the inclusion of multi-line strings like HTML or JSON formatting, while the introduction of the `record` keyword acts as a native alternative to library annotations, auto-generating DTO boilerplate such as getters and constructors. Pattern matching sees broad application alongside these syntax upgrades, simplifying `instanceof` checks by eliminating redundant explicit casting and significantly upgrading switch statement formats. Developers can now utilize lambda-style syntax in switch expressions without forced break fall-throughs, and preview type-based pattern matching alongside targeted boolean condition logic. API architectural control is also heavily refined through sealed classes and interfaces, enabling maintainers to explicitly permit specific subclasses and securely lock down inheritance boundaries. Other streamlined toolkit updates include a concise stream `.toList()` method, a modernized random number generator interface designed for extensibility, and dramatically improved NullPointerExceptions that finally pinpoint the exact variable causing a failure. Ultimately, while individual updates are incremental, collectively they yield a more robust and self-documenting Java ecosystem that immediately benefits code maintenance, API design, and daily debugging workflows. **Keywords:** java 17 migration, jdk release cadence, lts version upgrade, java text blocks syntax, enhanced switch expressions, pattern matching instanceof, java records boilerplate, sealed classes inheritance, stream api improvements, random generator interface, debugging nullpointerexceptions, dto class generation, lombok data alternative, java 11 to 17 comparison, api inheritance control ## Chapters 1. **Migrating applications from Java 11 to Java 17** (00:03) — The session outlines the agenda for exploring nine key developer features introduced between Java 11 and Java 17. 1. **Oracle JDK 17 free simple license terms explained** (02:06) — The new simple license term allows commercial use of Oracle JDK 17 at no cost for three years. 1. **Changes to the Java long-term support release cadence** (03:25) — Oracle transitions from a three-year to a two-year release cycle for long-term supported Java versions. 1. **Configuring IDEs and build tools for Java 17** (04:23) — Enabling preview language features in IntelliJ and Maven compilers is necessary to test modern Java capabilities. 1. **Improving HTML string readability using multi-line text blocks** (06:33) — Text blocks simplify multi-line string definitions by eliminating the need for extensive concatenation and explicit newline characters. 1. **Streamlining statement logic with the enhanced switch syntax** (09:24) — The enhanced switch introduces multiple comma-separated cases and specialized syntax that prevents automatic execution fall-through. 1. **Simplifying object type checking with instanceof pattern matching** (13:06) — Pattern matching for the instanceof operator eliminates boilerplate casting by directly assigning valid objects to scoped variables. 1. **Finer case selection using pattern matching in switch** (15:55) — Preview features in switch statements permit matching by variable type and adding boolean execution logic to individual cases. 1. **Eliminating boilerplate DTO code with Java record keywords** (19:40) — The record keyword auto-generates constructors, field getters, and standard methods to rapidly scaffold simple internal configuration objects. 1. **Controlling class inheritance hierarchy using sealed classes** (22:23) — The sealed keyword restricts interface and class extension by explicitly defining which permitted subclasses can implement the methods. 1. **Converting streams to immutable lists using standard methods** (26:20) — The streamlined stream collection method directly produces an immutable list containing potential null values without requiring collector utility classes. 1. **Generating numbers safely via the random generator interface** (28:20) — Recommended random data implementations now utilize robust and extensible core interfaces instead of the legacy thread-unsafe random class. 1. **Debugging faster with explicit null pointer exception details** (30:36) — Updated Java stack traces explicitly identify the exact missing variable reference that ultimately triggered a null pointer failure. 1. **Summarizing the minor API updates across the JDK releases** (31:53) — The transition from Java 11 to 17 primarily revolves around incremental API improvements rather than disruptive application architecture shifts. 1. **Evaluating upgrade feasibility and deprecated framework functionalities** (33:49) — Upgrading depends heavily on validating application framework compatibilities and avoiding reliance on actively deprecated core Java modules. 1. **Comparing native Java records with the Lombok plugin** (38:12) — While native records easily replace basic data classes, comprehensive code generation utilities still fulfill highly complex programming requirements. 1. **Discussing modern Java language evolution and syntax innovations** (42:11) — Language maintenance consistently focuses on slowly adopting stabilized external syntax variations while strictly safeguarding critical backward ecosystem compatibility. ## Related Moments - [Java 16 and 17 release cadence and migration strategies](https://www.wearedevelopers.com/videos/342-the-cool-thing-about-cool-things-in-java-16-17-lts) (from "The Cool Thing about Cool Things in Java 16 & 17 LTS") - [Major language and productivity upgrades from Java 12 to 17](https://www.wearedevelopers.com/videos/658-beam-me-up-java-unraveling-the-warp-speed-evolution-a-journey-through-java-lts-versions-11-to-21) (from "Beam Me Up, Java! Unraveling the Warp-Speed Evolution: A Journey through Java LTS Versions 11 to 21") - [Choosing Java 17 for modern Spring Boot applications](https://www.wearedevelopers.com/videos/383-kubernetes-native-java) (from "Kubernetes Native Java") - [Reviewing modern Java features from version 12 to 17](https://www.wearedevelopers.com/videos/387-using-java-17-latest-features-in-real-world-projects) (from "Using Java 17 latest features in real world projects") - [Summarizing the path forward for Java evolution](https://www.wearedevelopers.com/videos/105-best-of-java-15-and-beyond-my-favorite-features) (from "Best of Java 15 and beyond—my favorite features") - [Significant performance and language features launching in Java 21](https://www.wearedevelopers.com/videos/658-beam-me-up-java-unraveling-the-warp-speed-evolution-a-journey-through-java-lts-versions-11-to-21) (from "Beam Me Up, Java! Unraveling the Warp-Speed Evolution: A Journey through Java LTS Versions 11 to 21") ## Related Articles - [Modern Java Records](https://www.wearedevelopers.com/magazine/41-modern-java-records) - [Using Java 17 latest features in real world projects](https://www.wearedevelopers.com/magazine/121-using-java-17-latest-features-in-real-world-projects) - [Modern Java Switch Expressions](https://www.wearedevelopers.com/magazine/40-modern-java-switch-expressions) - [Java Basics](https://www.wearedevelopers.com/magazine/122-java-basics) ## Related Jobs - [Softwareentwickler Java](https://www.wearedevelopers.com/jobs/ext/1245896-softwareentwickler-java) at **Aok Systems Gmbh** - [Senior Software Engineer (L3)](https://www.wearedevelopers.com/jobs/ext/1956800-senior-software-engineer-l3) at **Twilio** - [Senior Software Developer Java (m/w/d)](https://www.wearedevelopers.com/jobs/39654-senior-software-developer-java-m-w-d) at **Sopra Steria Custom Software Solutions GmbH** - [Senior Software Engineer](https://www.wearedevelopers.com/jobs/ext/15942-senior-software-engineer) at **GitHub** - [Java Softwareentwickler Migrationsprojekte (m/w/d)](https://www.wearedevelopers.com/jobs/48138-java-softwareentwickler-migrationsprojekte-m-w-d) at **Finanz Informatik** - [(Senior) Java Software-Entwickler](https://www.wearedevelopers.com/jobs/48140-senior-java-software-entwickler) at **Finanz Informatik**