Java 17 (21.9 LTS)

Java 17 is a feature release which obsoleted Java 16 and became a long-term support (LTS) release of Java on its introduction on 14th September 2021.

Java 17 is fully supported by Eclipse 2021-12 and later.

Current status: General Availability

Resources

Selected Changes in 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 409Sealed Classes

  • JEP 411Deprecate 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-8259709Disable 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-8259801Enable 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:

From Java 13:

  • JDK-8215608: Old Features Removed from javadoc  tool. No more HTML4 API documentation.

From Java 14:

  • JEP 361Switch Expressions (Standard)

From Java 15:

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

  • JDK-8259801: Enable XML Signature secure validation mode by default