JDK 10 favicon
All About JDK 10
JDK 10 • 2018 • Java 10
var (LVTI)Parallel Full GCApp-CDSThread-local HandshakesCollection copyOf

JDK 10 and the shift from JDK 9

First 6-month cadence release. Local Variable Type Inference (var). Parallel full GC for G1. Application Class-Data Sharing. Thread-local handshakes. Time-based versioning.

Why JDK 10 mattered

The release in context

First 6-month cadence release. Local Variable Type Inference (var). Parallel full GC for G1. Application Class-Data Sharing. Thread-local handshakes. Time-based versioning.

var (LVTI)Parallel Full GCApp-CDSThread-local HandshakesCollection copyOf
  • First 6-month cadence release. Local Variable Type Inference (var). Parallel full GC for G1. Application Class-Data Sharing. Thread-local handshakes. Time-based versioning.
  • Key release highlights included var (LVTI), Parallel Full GC, App-CDS, Thread-local Handshakes.
  • Compared with JDK 9, the most visible shifts included Thread-local Handshakes, App CDS (Class Data Sharing), Unmodifiable Collection copies.
  • First 6-month cadence release. var keyword reduces boilerplate for local variables.
  • The meaning of a JDK version changed from a rare mega-release to a more continuous delivery model.
Platform stack

JDK 10 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 9 to JDK 10

The meaning of a JDK version changed from a rare mega-release to a more continuous delivery model.

Java Language Features

  • Unmodifiable Collection copies appeared in JDK 10, adding a new capability in java language features.
  • var (Local-Variable Type Inference) appeared in JDK 10, adding a new capability in java language features.
  • Module System appeared in JDK 10, adding a new capability in java language features.
  • jshell appeared in JDK 10, adding a new capability in java language features.

New Features / Modern APIs

  • List / Map / Set copyOf appeared in JDK 10, adding a new capability in new features / modern apis.
  • var (LVTI) appeared in JDK 10, adding a new capability in new features / modern apis.
  • Flow API (Reactive) carried forward from JDK 9 and settled into the baseline by JDK 10.
  • JPMS Module System carried forward from JDK 9 and settled into the baseline by JDK 10.

JVM: Execution Engine & GC

  • Thread-local Handshakes appeared in JDK 10, adding a new capability in jvm: execution engine & gc.
  • G1 GC (parallel full GC) was updated in JDK 10, showing active movement in jvm: execution engine & gc.
  • G1 GC (new default) moved from active change in JDK 9 into a more stable baseline by JDK 10.
  • CMS GC no longer carried the same role in JDK 10, marking a meaningful platform cleanup.
Matrix slice

Quick comparison table: JDK 9 vs JDK 10

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 9 JDK 10 Why it stands out
JVM: Execution Engine & GC Thread-local Handshakes Not present NEW Thread-local Handshakes appeared in JDK 10, adding a new capability in jvm: execution engine & gc.
JVM: Memory Management App CDS (Class Data Sharing) Not present NEW App CDS (Class Data Sharing) appeared in JDK 10, adding a new capability in jvm: memory management.
Java Language Features Unmodifiable Collection copies Not present NEW Unmodifiable Collection copies appeared in JDK 10, adding a new capability in java language features.
Java Language Features var (Local-Variable Type Inference) Not present NEW var (Local-Variable Type Inference) appeared in JDK 10, adding a new capability in java language features.
New Features / Modern APIs List / Map / Set copyOf Not present NEW List / Map / Set copyOf appeared in JDK 10, adding a new capability in new features / modern apis.
New Features / Modern APIs var (LVTI) Not present NEW var (LVTI) appeared in JDK 10, adding a new capability in new features / modern apis.
Deployment Applet / Java Plug-in Deprecated Deprecated Applet / Java Plug-in started being phased out in JDK 10, signaling a shift away from older platform assumptions.
Deployment Java Web Start Deprecated Deprecated Java Web Start started being phased out in JDK 10, signaling a shift away from older platform assumptions.
JVM: Execution Engine & GC G1 GC (parallel full GC) Not present UPD G1 GC (parallel full GC) was updated in JDK 10, showing active movement in jvm: execution engine & gc.
lang and util Base Libraries Collections (copyOf) Not present UPD Collections (copyOf) was updated in JDK 10, showing active movement in lang and util base libraries.
lang and util Base Libraries Versioning (time-based) Not present UPD Versioning (time-based) was updated in JDK 10, showing active movement in lang and util base libraries.
Tools & Tool APIs jmod Not present Present jmod appeared in JDK 10, adding a new capability in tools & tool apis.
JVM: Class Loader Subsystem Platform ClassLoader NEW Present Platform ClassLoader carried forward from JDK 9 and settled into the baseline by JDK 10.
JVM: Memory Management Compact Strings NEW Present Compact Strings carried forward from JDK 9 and settled into the baseline by JDK 10.
Structured comparison

Grouped reading of the release shift

First 6-month cadence release. var keyword reduces boilerplate for local variables.

Java Language Features
New in JDK 10
  • Unmodifiable Collection copies
  • var (Local-Variable Type Inference)
  • Module System
  • jshell
  • @SafeVarargs on private methods
Updated by JDK 10
  • Try-with-resources improvement
  • jdeps
  • jlink
New Features / Modern APIs
New in JDK 10
  • List / Map / Set copyOf
  • var (LVTI)
  • Flow API (Reactive)
  • JPMS Module System
  • Multi-release JARs
Updated by JDK 10
  • Optional
JVM: Execution Engine & GC
New in JDK 10
  • Thread-local Handshakes
Updated by JDK 10
  • G1 GC (parallel full GC)
  • G1 GC (new default)
  • CMS GC
Historical platform profile

Release narrative

First 6-month cadence release. Local Variable Type Inference (var). Parallel full GC for G1. Application Class-Data Sharing. Thread-local handshakes. Time-based versioning.

First 6-month cadence release. var keyword reduces boilerplate for local variables.

var (LVTI)Parallel Full GCApp-CDSThread-local HandshakesCollection copyOf
Why it mattered later

Why JDK 10 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 10 sits in the timeline as a cadence transition, which shaped how teams evaluated and adopted it.
  • It is commonly remembered for var (LVTI), Parallel Full GC, App-CDS.
  • Compared with JDK 9, it gives a clearer picture of how the JDK platform was evolving release by release.
  • First 6-month cadence release. var keyword reduces boilerplate for local variables.
Related pages

Continue through the platform story