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: Early Access
Page last updated: 2021-05-25, EA 23
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)
- Release notes
- Jave SE 17 Platform
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 412: Foreign Function & Memory API (Incubator)
- JEP 414: Vector API (Second Incubator)
- JEP 411: Deprecate the Security Manager for Removal
- 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
Proposed to Target Java 17
- JEP 415: Context-Specific Deserialization Filters
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