JDK 17 favicon
All About JDK 17
JDK 17 • 2021 • Java 17
Sealed Classes (final)Pattern Matching switch (preview)Strong EncapsulationRandomGeneratorjpackage finalApplet deprecated

JDK 17 and the shift from JDK 16

LTS. Sealed Classes finalised (JEP 409). Pattern Matching for switch (preview). Strong JDK internal encapsulation. Applet API deprecated for removal. macOS AArch64 port. Pseudo-Random Number Generators enhanced. jpackage final.

Why JDK 17 mattered

The release in context

LTS. Sealed Classes finalised (JEP 409). Pattern Matching for switch (preview). Strong JDK internal encapsulation. Applet API deprecated for removal. macOS AArch64 port. Pseudo-Random Number Generators enhanced. jpackage final.

Sealed Classes (final)Pattern Matching switch (preview)Strong EncapsulationRandomGeneratorjpackage finalApplet deprecated
  • LTS. Sealed Classes finalised (JEP 409). Pattern Matching for switch (preview). Strong JDK internal encapsulation. Applet API deprecated for removal. macOS AArch64 port. Pseudo-Random Number Generators enhanced. jpackage final.
  • Key release highlights included Sealed Classes (final), Pattern Matching switch (preview), Strong Encapsulation, RandomGenerator.
  • Compared with JDK 16, the most visible shifts included Pattern Matching switch (preview), Restore Always-Strict Floating-Point, RandomGenerator API.
  • LTS. Modern Java type system complete: records + sealed classes + pattern matching converge.
  • It represents the point where many teams completed the move from the Java 8 and Java 11 eras into the current long-lived baseline.
Platform stack

JDK 17 architecture preview

This larger diagram expands the smaller JDK badge into a layered platform view showing how the development kit, runtime, virtual machine, APIs, tools, and supporting subsystems fit together for this release.

Previous-version diff

What changed from JDK 16 to JDK 17

It represents the point where many teams completed the move from the Java 8 and Java 11 eras into the current long-lived baseline.

Java Language Features

  • Pattern Matching switch (preview) appeared in JDK 17, adding a new capability in java language features.
  • Restore Always-Strict Floating-Point appeared in JDK 17, adding a new capability in java language features.
  • Sealed Classes (final) was updated in JDK 17, showing active movement in java language features.
  • Records appeared in JDK 17, adding a new capability in java language features.

New Features / Modern APIs

  • Pattern Matching switch (preview) appeared in JDK 17, adding a new capability in new features / modern apis.
  • RandomGenerator API appeared in JDK 17, adding a new capability in new features / modern apis.
  • Sealed Classes (final) was updated in JDK 17, showing active movement in new features / modern apis.
  • Records appeared in JDK 17, adding a new capability in new features / modern apis.

Other Base Libraries

  • Enhanced PRNG (RandomGenerator) appeared in JDK 17, adding a new capability in other base libraries.
  • Strong JDK Encapsulation (final) appeared in JDK 17, adding a new capability in other base libraries.
  • Foreign-Memory Access API (2nd incubator) moved from active change in JDK 16 into a more stable baseline by JDK 17.
  • Unix-Domain Socket Channels carried forward from JDK 16 and settled into the baseline by JDK 17.
Matrix slice

Quick comparison table: JDK 16 vs JDK 17

This side-by-side view turns the source evolution matrix into a faster way to see which language, tooling, runtime, and platform layers moved between these two releases.

Area Component JDK 16 JDK 17 Why it stands out
Java Language Features Pattern Matching switch (preview) Not present NEW Pattern Matching switch (preview) appeared in JDK 17, adding a new capability in java language features.
Java Language Features Restore Always-Strict Floating-Point Not present NEW Restore Always-Strict Floating-Point appeared in JDK 17, adding a new capability in java language features.
New Features / Modern APIs Pattern Matching switch (preview) Not present NEW Pattern Matching switch (preview) appeared in JDK 17, adding a new capability in new features / modern apis.
New Features / Modern APIs RandomGenerator API Not present NEW RandomGenerator API appeared in JDK 17, adding a new capability in new features / modern apis.
Other Base Libraries Enhanced PRNG (RandomGenerator) Not present NEW Enhanced PRNG (RandomGenerator) appeared in JDK 17, adding a new capability in other base libraries.
Other Base Libraries Strong JDK Encapsulation (final) Not present NEW Strong JDK Encapsulation (final) appeared in JDK 17, adding a new capability in other base libraries.
Deployment Java Web Start Deprecated Removed Java Web Start no longer carried the same role in JDK 17, marking a meaningful platform cleanup.
Deployment Applet API (deprecated for removal) Not present Deprecated Applet API (deprecated for removal) started being phased out in JDK 17, signaling a shift away from older platform assumptions.
JVM: Execution Engine & GC JIT (C1+C2+Graal preview) Not present UPD JIT (C1+C2+Graal preview) was updated in JDK 17, showing active movement in jvm: execution engine & gc.
Tools & Tool APIs jpackage (final) Not present UPD jpackage (final) was updated in JDK 17, showing active movement in tools & tool apis.
JVM: Execution Engine & GC Elastic Metaspace NEW Present Elastic Metaspace carried forward from JDK 16 and settled into the baseline by JDK 17.
JVM: Memory Management Elastic Metaspace NEW Present Elastic Metaspace carried forward from JDK 16 and settled into the baseline by JDK 17.
Tools & Tool APIs jpackage UPD Present jpackage moved from active change in JDK 16 into a more stable baseline by JDK 17.
lang and util Base Libraries Reflection (strongly encapsulated) UPD Present Reflection (strongly encapsulated) moved from active change in JDK 16 into a more stable baseline by JDK 17.
Structured comparison

Grouped reading of the release shift

LTS. Modern Java type system complete: records + sealed classes + pattern matching converge.

Java Language Features
New in JDK 17
  • Pattern Matching switch (preview)
  • Restore Always-Strict Floating-Point
  • Records
Updated by JDK 17
  • Sealed Classes (final)
  • Pattern Matching instanceof (final)
  • Records (final)
  • Sealed Classes (2nd preview)
New Features / Modern APIs
New in JDK 17
  • Pattern Matching switch (preview)
  • RandomGenerator API
  • Records
  • Vector API (incubator)
Updated by JDK 17
  • Sealed Classes (final)
  • Pattern Matching (final)
  • Records (final)
  • Sealed Classes (2nd preview)
Other Base Libraries
New in JDK 17
  • Enhanced PRNG (RandomGenerator)
  • Strong JDK Encapsulation (final)
  • Unix-Domain Socket Channels
Updated by JDK 17
  • Foreign-Memory Access API (2nd incubator)
Historical platform profile

Release narrative

LTS. Sealed Classes finalised (JEP 409). Pattern Matching for switch (preview). Strong JDK internal encapsulation. Applet API deprecated for removal. macOS AArch64 port. Pseudo-Random Number Generators enhanced. jpackage final.

LTS. Modern Java type system complete: records + sealed classes + pattern matching converge.

Sealed Classes (final)Pattern Matching switch (preview)Strong EncapsulationRandomGeneratorjpackage finalApplet deprecated
Why it mattered later

Why JDK 17 matters in the JDK timeline

This JDK milestone matters as a long-term operational anchor, so it is especially important for migration planning, baselining, and enterprise adoption.

  • JDK 17 sits in the timeline as a lts anchor, which shaped how teams evaluated and adopted it.
  • It is commonly remembered for Sealed Classes (final), Pattern Matching switch (preview), Strong Encapsulation.
  • Compared with JDK 16, it gives a clearer picture of how the JDK platform was evolving release by release.
  • LTS. Modern Java type system complete: records + sealed classes + pattern matching converge.
Related pages

Continue through the platform story