Skip to content

Latest commit

 

History

History
965 lines (636 loc) · 60.1 KB

File metadata and controls

965 lines (636 loc) · 60.1 KB

Java Features

Timeline of all JDK enhancements with respective JEP links. The entries are grouped by target JDK version and sorted by their number ascending.

This page is co-generated by AI. Please, report issues with links and/or descriptions if needed.

Java JDK 26

  • JEP 500: Prepare to Make Final Mean Final

    • Issues warnings when deep reflection is used to mutate final fields, preparing the ecosystem for a future release that will restrict such mutations by default to improve program safety and enable performance optimizations.
  • JEP 504: Remove the Applet API

    • Removes the obsolete Applet API (java.applet package, javax.swing.JApplet, and related classes), which was deprecated for removal in JDK 17 and is unusable since no modern browsers or JDK versions support applets.
  • JEP 516: Ahead-of-Time Object Caching with Any GC

    • Enhances the ahead-of-time cache so it can be used with any garbage collector, including ZGC, by storing cached Java objects in a neutral, GC-agnostic format that is loaded sequentially into memory rather than mapped directly.
  • JEP 517: HTTP/3 for the HTTP Client API

    • Updates the HTTP Client API to support the HTTP/3 protocol (based on QUIC), enabling faster handshakes, avoidance of head-of-line blocking, and more reliable transport, with opt-in usage and transparent downgrade to HTTP/2 or HTTP/1.1.
  • JEP 522: G1 GC: Improve Throughput by Reducing Synchronization

    • Increases G1 garbage collector throughput by introducing a second card table to eliminate synchronization between application and GC optimizer threads, reducing write barrier size and yielding 5–15% throughput gains in heavy workloads.
  • JEP 524: PEM Encodings of Cryptographic Objects (Second Preview)

    • Continues previewing the API for encoding and decoding cryptographic objects (keys, certificates, CRLs) to and from the PEM format, with refinements including renaming PEMRecord to PEM and enhanced EncryptedPrivateKeyInfo support.
  • JEP 525: Structured Concurrency (Sixth Preview)

    • Continues previewing structured concurrency for grouping related concurrent tasks as single units of work, with minor API refinements including a new Joiner.onTimeout() method and allSuccessfulOrThrow() now returning a list of results.
  • JEP 526: Lazy Constants (Second Preview)

    • Continues previewing the API for deferred immutability, renamed from StableValue to LazyConstant, re-oriented to focus on high-level use cases with lazy lists and maps moved to java.util.List and java.util.Map.
  • JEP 529: Vector API (Eleventh Incubator)

    • Continues incubating the Vector API for expressing SIMD-style parallel operations that compile at runtime to optimal vector instructions on supported CPUs; awaiting Project Valhalla value classes before promotion to preview.
  • JEP 530: Primitive Types in Patterns, instanceof, and switch (Fourth Preview)

    • Continues previewing support for primitive types in pattern matching, instanceof, and switch, with enhanced unconditional exactness definitions and tighter dominance checks in switch constructs.

Java JDK 25

Java JDK 24

Java JDK 23

Java JDK 22

Java JDK 21 (LTS)

Java JDK 20

Java JDK 19

Java JDK 18

Java JDK 17 (LTS)

Java JDK 16

Java JDK 15

Java JDK 14

Java JDK 13

  • JEP 350: Dynamic CDS Archives

    • Extends the existing Class-Data Sharing ("CDS") feature to allow dynamic archiving of classes at the end of Java application execution. This aims to improve the startup time for short-running Java applications.
  • JEP 351: ZGC: Uncommit Unused Memory

    • Enhances the Z Garbage Collector to return unused heap memory to the operating system, aiming for improved resource utilization and better co-existence with other processes.
  • JEP 353: Reimplement the Legacy Socket API

    • Provides a new implementation for the legacy java.net.Socket and java.net.ServerSocket APIs, replacing the underlying native implementation for better maintainability.
  • JEP 354: Switch Expressions (Preview)

    • Introduces a preview of the new switch expression, a more concise and safe alternative to the existing switch statement.
  • JEP 355: Text Blocks (Preview)

    • Introduces a preview of text blocks to simplify the task of writing Java programs that deal with multi-line string literals, while also improving their readability and maintainability.

Java JDK 12

Java JDK 11 (LTS)

Java JDK 10

Java JDK 9

Java JDK 8

There are also a number of JEPs introduced in Java JDK 8 and it's iterations 8u20, 8u40 and 8u60, but they are not included in this list, as this project only aims to cover changes from Java 9 and up.

Refer to JEP Index for the rest of the entries including pending, drafts and rejected.