Java 17 is a feature release which will obsolete Java 16 and became a long-term support (LTS) release of Java on its introduction on 14th September 2021.
Current status: Rampdown Phase One
Page last updated: 2021-07-20, EA 31
Schedule:
2021-06-10 Rampdown Phase One (fork from main line)
2021-07-15 Rampdown Phase Two
2021-08-05 Initial Release Candidate
2021-08-19 Final Release Candidate
2021-09-14 General Availability
Resources
Java 17 Early-Access Builds (note: OpenJDK builds only; no Oracle builds)
Selected Changes Targeted to Java 17
JEP 306: Restore Always-Strict Floating-Point Semantic
JEP 356: Enhanced Pseudo-Random Number Generators
JEP 382: New macOS Rendering Pipeline
JEP 391: macOS/AArch64 Port
JEP 398: Deprecate the Applet API for Removal
JEP 403: Strongly Encapsulate JDK Internals
JEP 406: Pattern Matching for switch (Preview)
JEP 407: Remove RMI Activation
JEP 409: Sealed Classes
JEP 411: Deprecate the Security Manager for Removal
JEP 412: Foreign Function & Memory API (Incubator)
JEP 414: Vector API (Second Incubator)
JEP 415: Context-Specific Deserialization Filters
JDK-6323374: Collections.unmodifiable* methods are idempotent for their corresponding collection. The unmodifiable* methods in java.util.Collections will no longer re-wrap a given collection with an unmodifiable view if that collection has already been wrapped by same method. (our unit tests still pass)
JDK-8235139: Deprecate the socket impl factory mechanism
JDK-8259709: Disable SHA-1 XML Signatures. XML signatures that use SHA-1 based digest or signature algorithms have been disabled by default. (our unit tests still pass)
JDK-8259801: Enable XML Signature secure validation mode by default
Significant Changes from Java 11 (18.9 LTS)
The following changes may factor in to our adoption of Java 17 as a new platform, and as a baseline for individual products:
From Java 12:
JEP 182 and JDK-8028563: no more support for
-source
/-target
/-release
1.6.
From Java 13:
JDK-8215608: Old Features Removed from
javadoc
tool. No more HTML4 API documentation.
From Java 14:
JEP 361: Switch Expressions (Standard)
From Java 15:
JEP 372: Remove the Nashorn JavaScript Engine
JEP 378: Text Blocks (Standard)
JEP 381: Remove the Solaris and SPARC Ports
JDK-8237219: Disable native SunEC implementation by default (OSJ-319)
From Java 16:
JEP 394: Pattern Matching for instanceof
JEP 395: Records
JEP 396: Strongly Encapsulate JDK Internals by Default
From Java 17:
JEP 356: Enhanced Pseudo-Random Number Generators
JEP 391: macOS/AArch64 Port (not clear if this will be back-ported to, e.g., Java 11 or not)
JEP 403: Strongly Encapsulate JDK Internals
JEP 409: Sealed Classes
JEP 411: Deprecate the Security Manager for Removal
JDK-8259709: Disable SHA-1 XML Signatures