JDK 20 favicon
All About JDK 20
JDK 20 • 2023 • Java 20
Virtual Threads (2nd preview)Scoped Values (incubator)Structured Concurrency (2nd)Record Patterns (2nd)FFM API (2nd preview)

JDK 20 and the shift from JDK 19

Virtual Threads (2nd preview). Structured Concurrency (2nd incubator). Scoped Values (incubator). Record Patterns (2nd preview). Pattern Matching switch (4th preview). Foreign Function & Memory API (2nd preview). Vector API (5th incubator).

Why JDK 20 mattered

The release in context

Virtual Threads (2nd preview). Structured Concurrency (2nd incubator). Scoped Values (incubator). Record Patterns (2nd preview). Pattern Matching switch (4th preview). Foreign Function & Memory API (2nd preview). Vector API (5th incubator).

Virtual Threads (2nd preview)Scoped Values (incubator)Structured Concurrency (2nd)Record Patterns (2nd)FFM API (2nd preview)
  • Virtual Threads (2nd preview). Structured Concurrency (2nd incubator). Scoped Values (incubator). Record Patterns (2nd preview). Pattern Matching switch (4th preview). Foreign Function & Memory API (2nd preview). Vector API (5th incubator).
  • Key release highlights included Virtual Threads (2nd preview), Scoped Values (incubator), Structured Concurrency (2nd), Record Patterns (2nd).
  • Compared with JDK 19, the most visible shifts included Scoped Values (incubator), Applet API, Foreign Function & Memory (2nd preview).
  • Staging release for JDK 21 LTS. Virtual Threads mature through their second preview.
  • This release is best read as continuity: the JDK maturing steadily rather than resetting itself.
Platform stack

JDK 20 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 19 to JDK 20

This release is best read as continuity: the JDK maturing steadily rather than resetting itself.

New Features / Modern APIs

  • Scoped Values (incubator) appeared in JDK 20, adding a new capability in new features / modern apis.
  • FFM API (2nd preview) was updated in JDK 20, showing active movement in new features / modern apis.
  • Record Patterns (2nd preview) was updated in JDK 20, showing active movement in new features / modern apis.
  • Structured Concurrency (2nd incubator) was updated in JDK 20, showing active movement in new features / modern apis.

Java Language Features

  • Pattern Matching switch (4th preview) was updated in JDK 20, showing active movement in java language features.
  • Record Patterns (2nd preview) was updated in JDK 20, showing active movement in java language features.
  • Pattern Matching switch (3rd preview) moved from active change in JDK 19 into a more stable baseline by JDK 20.
  • Record Patterns (preview) carried forward from JDK 19 and settled into the baseline by JDK 20.

JVM: Native Method Interface

  • Foreign Function & Memory (2nd preview) was updated in JDK 20, showing active movement in jvm: native method interface.
  • Foreign Function & Memory (preview) moved from active change in JDK 19 into a more stable baseline by JDK 20.
Matrix slice

Quick comparison table: JDK 19 vs JDK 20

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 19 JDK 20 Why it stands out
New Features / Modern APIs Scoped Values (incubator) Not present NEW Scoped Values (incubator) appeared in JDK 20, adding a new capability in new features / modern apis.
Deployment Applet API Deprecated Deprecated Applet API started being phased out in JDK 20, signaling a shift away from older platform assumptions.
JVM: Native Method Interface Foreign Function & Memory (2nd preview) Not present UPD Foreign Function & Memory (2nd preview) was updated in JDK 20, showing active movement in jvm: native method interface.
JVM: Runtime Data Areas Virtual Thread Stack (2nd preview) Not present UPD Virtual Thread Stack (2nd preview) was updated in JDK 20, showing active movement in jvm: runtime data areas.
Java Language Features Pattern Matching switch (4th preview) Not present UPD Pattern Matching switch (4th preview) was updated in JDK 20, showing active movement in java language features.
Java Language Features Record Patterns (2nd preview) Not present UPD Record Patterns (2nd preview) was updated in JDK 20, showing active movement in java language features.
New Features / Modern APIs FFM API (2nd preview) Not present UPD FFM API (2nd preview) was updated in JDK 20, showing active movement in new features / modern apis.
JVM: Native Method Interface Foreign Function & Memory (preview) UPD Present Foreign Function & Memory (preview) moved from active change in JDK 19 into a more stable baseline by JDK 20.
JVM: Runtime Data Areas Virtual Thread Stack (preview) NEW Present Virtual Thread Stack (preview) carried forward from JDK 19 and settled into the baseline by JDK 20.
Structured comparison

Grouped reading of the release shift

Staging release for JDK 21 LTS. Virtual Threads mature through their second preview.

New Features / Modern APIs
New in JDK 20
  • Scoped Values (incubator)
  • Record Patterns (preview)
  • Structured Concurrency (incubator)
  • Virtual Threads (preview)
Updated by JDK 20
  • FFM API (2nd preview)
  • Record Patterns (2nd preview)
  • Structured Concurrency (2nd incubator)
  • Virtual Threads (2nd preview)
  • Foreign Function & Memory API (preview)
Java Language Features
New in JDK 20
  • Record Patterns (preview)
Updated by JDK 20
  • Pattern Matching switch (4th preview)
  • Record Patterns (2nd preview)
  • Pattern Matching switch (3rd preview)
JVM: Native Method Interface
New in JDK 20
  • Baseline continuity into JDK 20
Updated by JDK 20
  • Foreign Function & Memory (2nd preview)
  • Foreign Function & Memory (preview)
Historical platform profile

Release narrative

Virtual Threads (2nd preview). Structured Concurrency (2nd incubator). Scoped Values (incubator). Record Patterns (2nd preview). Pattern Matching switch (4th preview). Foreign Function & Memory API (2nd preview). Vector API (5th incubator).

Staging release for JDK 21 LTS. Virtual Threads mature through their second preview.

Virtual Threads (2nd preview)Scoped Values (incubator)Structured Concurrency (2nd)Record Patterns (2nd)FFM API (2nd preview)
Why it mattered later

Why JDK 20 matters in the JDK timeline

This release fits into the steady JDK cadence where tooling, runtime behavior, and delivery capabilities evolve one step at a time.

  • JDK 20 sits in the timeline as a feature release, which shaped how teams evaluated and adopted it.
  • It is commonly remembered for Virtual Threads (2nd preview), Scoped Values (incubator), Structured Concurrency (2nd).
  • Compared with JDK 19, it gives a clearer picture of how the JDK platform was evolving release by release.
  • Staging release for JDK 21 LTS. Virtual Threads mature through their second preview.
Related pages

Continue through the platform story