JDK 9 favicon
All About JDK 9
JDK 9 • 2017 • Java 9
JPMS ModulesJShell REPLHTTP/2 ClientFlow APIG1 default GCCompact Strings

JDK 9 and the shift from JDK 8

Project Jigsaw: Java Platform Module System (JPMS). JDK modularised into 75+ modules. JShell REPL. HTTP/2 Client (incubator). Multi-release JARs. Reactive Streams (Flow API). 6-month release cadence begins.

Why JDK 9 mattered

The release in context

Project Jigsaw: Java Platform Module System (JPMS). JDK modularised into 75+ modules. JShell REPL. HTTP/2 Client (incubator). Multi-release JARs. Reactive Streams (Flow API). 6-month release cadence begins.

JPMS ModulesJShell REPLHTTP/2 ClientFlow APIG1 default GCCompact Strings
  • Project Jigsaw: Java Platform Module System (JPMS). JDK modularised into 75+ modules. JShell REPL. HTTP/2 Client (incubator). Multi-release JARs. Reactive Streams (Flow API). 6-month release cadence begins.
  • Key release highlights included JPMS Modules, JShell REPL, HTTP/2 Client, Flow API.
  • Compared with JDK 8, the most visible shifts included Platform ClassLoader, Compact Strings, @SafeVarargs on private methods.
  • The most architecturally significant Java release. Module system took 10 years to build (Project Jigsaw, started 2005).
  • This is the moment where the public JRE story changed and the JDK became more explicitly modular, inspectable, and customizable.
Platform stack

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

This is the moment where the public JRE story changed and the JDK became more explicitly modular, inspectable, and customizable.

Java Language Features

  • @SafeVarargs on private methods appeared in JDK 9, adding a new capability in java language features.
  • Diamond in anonymous classes appeared in JDK 9, adding a new capability in java language features.
  • Module System (JPMS) appeared in JDK 9, adding a new capability in java language features.
  • Private interface methods appeared in JDK 9, adding a new capability in java language features.

New Features / Modern APIs

  • Flow API (Reactive) appeared in JDK 9, adding a new capability in new features / modern apis.
  • JPMS Module System appeared in JDK 9, adding a new capability in new features / modern apis.
  • Multi-release JARs appeared in JDK 9, adding a new capability in new features / modern apis.
  • Optional was updated in JDK 9, showing active movement in new features / modern apis.

Other Base Libraries

  • HTTP/2 Client (incubator) appeared in JDK 9, adding a new capability in other base libraries.
  • Process API updates appeared in JDK 9, adding a new capability in other base libraries.
  • Reactive Streams Flow API appeared in JDK 9, adding a new capability in other base libraries.
  • Date & Time API carried forward from JDK 8 and settled into the baseline by JDK 9.
Matrix slice

Quick comparison table: JDK 8 vs JDK 9

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 8 JDK 9 Why it stands out
JVM: Class Loader Subsystem Platform ClassLoader Not present NEW Platform ClassLoader appeared in JDK 9, adding a new capability in jvm: class loader subsystem.
JVM: Memory Management Compact Strings Not present NEW Compact Strings appeared in JDK 9, adding a new capability in jvm: memory management.
Java Language Features @SafeVarargs on private methods Not present NEW @SafeVarargs on private methods appeared in JDK 9, adding a new capability in java language features.
Java Language Features Diamond in anonymous classes Not present NEW Diamond in anonymous classes appeared in JDK 9, adding a new capability in java language features.
New Features / Modern APIs Flow API (Reactive) Not present NEW Flow API (Reactive) appeared in JDK 9, adding a new capability in new features / modern apis.
New Features / Modern APIs JPMS Module System Not present NEW JPMS Module System appeared in JDK 9, adding a new capability in new features / modern apis.
Other Base Libraries HTTP/2 Client (incubator) Not present NEW HTTP/2 Client (incubator) appeared in JDK 9, adding a new capability in other base libraries.
Other Base Libraries Process API updates Not present NEW Process API updates appeared in JDK 9, adding a new capability in other base libraries.
Tools & Tool APIs jmod (module packaging) Not present NEW jmod (module packaging) appeared in JDK 9, adding a new capability in tools & tool apis.
Deployment Applet / Java Plug-in Present Deprecated Applet / Java Plug-in started being phased out in JDK 9, signaling a shift away from older platform assumptions.
Deployment Java Web Start Present Deprecated Java Web Start started being phased out in JDK 9, signaling a shift away from older platform assumptions.
JVM: Execution Engine & GC CMS GC Present Deprecated CMS GC started being phased out in JDK 9, signaling a shift away from older platform assumptions.
JVM: Execution Engine & GC G1 GC (new default) Not present UPD G1 GC (new default) was updated in JDK 9, showing active movement in jvm: execution engine & gc.
Tools & Tool APIs jlink (custom runtime) Not present UPD jlink (custom runtime) was updated in JDK 9, showing active movement in tools & tool apis.
Structured comparison

Grouped reading of the release shift

The most architecturally significant Java release. Module system took 10 years to build (Project Jigsaw, started 2005).

Java Language Features
New in JDK 9
  • @SafeVarargs on private methods
  • Diamond in anonymous classes
  • Module System (JPMS)
  • Private interface methods
  • jshell (REPL)
Updated by JDK 9
  • Try-with-resources improvement
  • jdeps
  • jlink
New Features / Modern APIs
New in JDK 9
  • Flow API (Reactive)
  • JPMS Module System
  • Multi-release JARs
  • Lambda
  • Default Methods
Updated by JDK 9
  • Optional
Other Base Libraries
New in JDK 9
  • HTTP/2 Client (incubator)
  • Process API updates
  • Reactive Streams Flow API
  • Date & Time API
Updated by JDK 9
  • Steady platform carry-forward in JDK 9
Historical platform profile

Release narrative

Project Jigsaw: Java Platform Module System (JPMS). JDK modularised into 75+ modules. JShell REPL. HTTP/2 Client (incubator). Multi-release JARs. Reactive Streams (Flow API). 6-month release cadence begins.

The most architecturally significant Java release. Module system took 10 years to build (Project Jigsaw, started 2005).

JPMS ModulesJShell REPLHTTP/2 ClientFlow APIG1 default GCCompact Strings
Why it mattered later

Why JDK 9 matters in the JDK timeline

This release is best understood as a turning point in how developers thought about the Java platform, not just as a routine toolkit increment.

  • JDK 9 sits in the timeline as a modular reset, which shaped how teams evaluated and adopted it.
  • It is commonly remembered for JPMS Modules, JShell REPL, HTTP/2 Client.
  • Compared with JDK 8, it gives a clearer picture of how the JDK platform was evolving release by release.
  • The most architecturally significant Java release. Module system took 10 years to build (Project Jigsaw, started 2005).
Related pages

Continue through the platform story