> Markdown version of [/videos/342-the-cool-thing-about-cool-things-in-java-16-17-lts?t=1213](https://www.wearedevelopers.com/videos/342-the-cool-thing-about-cool-things-in-java-16-17-lts?t=1213). 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). --- # The Cool Thing about Cool Things in Java 16 & 17 LTS Java 17 LTS eliminates migration debt and drastically reduces boilerplate. Upgrade your workflow with Records, Pattern Matching, and secure native APIs to future-proof your architecture. - **Speakers:** Mohamed Taman - **Event:** WeAreDevelopers LIVE - **Published:** February 1, 2022 - **Duration:** 1:11:05 - **URL:** https://www.wearedevelopers.com/videos/342-the-cool-thing-about-cool-things-in-java-16-17-lts ## Summary The transition to Java 17 Long-Term Support (LTS) introduces a faster two-year release cadence, radically simplifying how engineering teams adopt modern platform capabilities. Establishing an internal testing laboratory to evaluate the preceding six-month feature builds—such as Java 16—guarantees a smooth upgrade path by catching deprecations early. This continuous upgrading strategy minimizes migration debt, particularly as the JDK accelerates the systematic removal of obsolete technologies like the Applet API, RMI activation, and experimental Ahead-of-Time compilers. Addressing developer productivity, recent Java iterations significantly reduce boilerplate through architecture enhancements. Records serve as immutable data carriers that effectively replace verbose bean declarations or Lombok decorators, while Pattern Matching for `instanceof` and switch statements eliminates repetitive casting. By combining Records with Sealed Classes, developers can expertly design algebraic data types that explicitly enforce strict inheritance boundaries. Routine code is further streamlined with native functional additions, such as the direct `.toList()` Stream collector and a modernized DateTime formatter that natively interprets human-readable day periods. Under the hood, this milestone replaces unsafe and error-prone native boundaries with stable, secure architecture. The Foreign Linker and Foreign Memory Access APIs offer performant integration with native libraries and off-heap memory, securely superseding the legacy JNI and `sun.misc.Unsafe`. Simultaneously, deprecating primitive wrapper constructors prepares the runtime for Project Valhalla's primitive data classes, which will drastically reduce garbage collection overhead by unblocking identity-free memory allocation. Deployment pipelines also benefit from the new `jpackage` deployment tool, enabling direct generation of self-contained, native OS installers across Windows, macOS, and Linux without third-party packaging scripts. **Keywords:** java 17 LTS migration, java records, pattern matching syntax, sealed classes implementation, foreign memory access API, foreign linker interface, jpackage native installers, enhanced deprecation lifecycle, JDK incubator modules, value-based wrapper classes, JVM elastic metaspace, project valhalla primitives, project loom virtual threads, unix domain socket channels, java algebraic data types ## Chapters 1. **Java 16 and 17 release cadence and migration strategies** (00:00) — Upgrading to Java 17 LTS involves managing new feature cadences and practicing continuous migration routines. 1. **Enabling preview features and incubator modules in Java** (10:10) — Preview features and incubator modules allow developers to test emerging APIs safely before they reach standard integration. 1. **Managing removed APIs and enhanced deprecation practices** (17:24) — The Java JDK utilizes enhanced for-removal annotations to explicitly signal the upcoming deletion of obsolete code abstractions. 1. **Using Java records to create immutable data carriers** (20:13) — Record classes replace boilerplate code for immutable data objects while supporting custom canonical and compact constructor evaluations. 1. **Simplifying object evaluation with pattern matching enhancements** (26:51) — Pattern matching implementations for instanceof operators and switch statements eliminate repetitive variable casting processes. 1. **Enforcing domain constraints with sealed classes and interfaces** (33:39) — Sealed classes explicitly restrict the boundaries of object inheritance to defined sets of internal classes or records. 1. **Leveraging new datetime formatters and stream processing improvements** (37:45) — New core stream extensions execute memory-optimized collections while advanced formatters offer localized representation for relative time periods. 1. **Improving application performance with advanced memory and threading features** (42:07) — Emerging JVM functionality natively handles secure interprocess configurations, orchestrates foreign memory assignments, and preloads environments for virtual threading. 1. **Finding replacements for obsolete and removed Java classes** (52:38) — Maintaining a secure application dependency tree requires removing obsolete abstractions like the Applet API, RMI tools, and outdated protocol algorithms. 1. **Distributing native client installers using the jpackage tool** (57:15) — The jpackage bundle deployment command helps DevOps structures build platform-specific system installers targeted towards optimized container architectures. 1. **Addressing updates on concurrency extensions and code diagnostics** (61:01) — Attendees clarify Java community roles, explore dependency diagnosis flags prior to migration efforts, and conceptualize virtual threading capacities. ## Related Moments - [Migrating applications from Java 11 to Java 17](https://www.wearedevelopers.com/videos/344-what-s-new-for-developers-moving-from-java-11-to-17) (from ""What´s New for Developers Moving from Java 11 to 17?"") - [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") - [Java level compilation requirements and runtime testing across generations](https://www.wearedevelopers.com/videos/380-get-ready-for-jakarta-ee-10) (from "Get Ready for Jakarta EE 10!") ## 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) - [Top 10 Java Libraries](https://www.wearedevelopers.com/magazine/364-top-10-java-libraries) - [Modern Java Switch Expressions](https://www.wearedevelopers.com/magazine/40-modern-java-switch-expressions) ## Related Jobs - [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** - [Java Softwareentwickler Migrationsprojekte (m/w/d)](https://www.wearedevelopers.com/jobs/48138-java-softwareentwickler-migrationsprojekte-m-w-d) at **Finanz Informatik** - [Platform Engineer - Mercury Runtime Platform](https://www.wearedevelopers.com/jobs/ext/293235-platform-engineer-mercury-runtime-platform) at **Raiffeisen Bank International AG** - [Softwareentwickler Java](https://www.wearedevelopers.com/jobs/ext/1245896-softwareentwickler-java) at **Aok Systems Gmbh** - [Senior Software Engineer](https://www.wearedevelopers.com/jobs/ext/15942-senior-software-engineer) at **GitHub** - [Senior Backend Engineer (Java)](https://www.wearedevelopers.com/jobs/ext/19369-senior-backend-engineer-java) at **Bonial International GmbH**