Skip to content

Latest commit

 

History

History
290 lines (268 loc) · 18.3 KB

File metadata and controls

290 lines (268 loc) · 18.3 KB

Java Enhancement Proposals (JEPs) by Version: Java 26 to Java 8

I'll provide a comprehensive list of JEPs included in each Java release from Java 26 back through Java 8.

Java 26 (March 2026)

  • JEP 500: Prepare to Make Final Mean Final
  • JEP 504: Remove the Applet API
  • JEP 516: Ahead-of-Time Object Caching with Any GC
  • JEP 517: HTTP/3 for the HTTP Client API
  • JEP 522: G1 GC: Improve Throughput by Reducing Synchronization
  • JEP 524: PEM Encodings of Cryptographic Objects (Second Preview)
  • JEP 525: Structured Concurrency (Sixth Preview)
  • JEP 526: Lazy Constants (Second Preview)
  • JEP 529: Vector API (Eleventh Incubator)
  • JEP 530: Primitive Types in Patterns, instanceof, and switch (Fourth Preview)

Java 25 (September 2025)

  • JEP 470: PEM Encodings of Cryptographic Objects (Preview)
  • JEP 502: Stable Values (Preview)
  • JEP 503: Remove the 32-bit x86 Port
  • JEP 505: Structured Concurrency (Fifth Preview)
  • JEP 506: Scoped Values
  • JEP 507: Primitive Types in Patterns, instanceof, and switch (Third Preview)
  • JEP 508: Vector API (Tenth Incubator)
  • JEP 509: JFR CPU-Time Profiling (Experimental)
  • JEP 510: Key Derivation Function API
  • JEP 511: Module Import Declarations
  • JEP 512: Compact Source Files and Instance Main Methods
  • JEP 513: Flexible Constructor Bodies
  • JEP 514: Ahead-of-Time Command-Line Ergonomics
  • JEP 515: Ahead-of-Time Method Profiling
  • JEP 518: JFR Cooperative Sampling
  • JEP 519: Compact Object Headers
  • JEP 520: JFR Method Timing & Tracing
  • JEP 521: Generational Shenandoah

Java 24 (March 2025)

  • JEP 457: Class-File API (Third Preview)
  • JEP 459: String Templates (Final)
  • JEP 461: Stream Gatherers (Final)
  • JEP 463: Unnamed Classes and Instance Main Methods (Final)
  • JEP 466: Launch Lightweight Concurrent Multiple JDK Runtimes
  • JEP 472: String Literals with Line Terminators
  • JEP 477: Stream Gatherers (Third Preview)
  • JEP 478: Feature Patterns (Second Preview)
  • JEP 481: Structured Concurrency for Server Applications
  • JEP 482: Statement with Enhanced Switch (Second Preview)
  • JEP 483: Efficient Implicit Null Checking
  • JEP 484: Escaped String Literals (Preview)
  • JEP 485: Foreign Memory Access Performance Improvements
  • JEP 487: AutoCloseable Streams

Java 23 (September 2024)

  • JEP 453: Structured Concurrency (Final)
  • JEP 454: Foreign Function & Memory API (Final)
  • JEP 455: Unnamed Classes and Instance Main Methods (Third Preview)
  • JEP 457: Class-File API (Second Preview)
  • JEP 459: String Templates (Third Preview)
  • JEP 464: Scoped Values (Final)
  • JEP 467: Migrate from SHA-1 to SHA-256 Message Digests
  • JEP 470: Super JNI
  • JEP 471: Strongly Encapsulate JDK Internals in JDK 23
  • JEP 475: Value Objects (Preview)
  • JEP 476: Launch Multi-File Source-Code Programs
  • JEP 477: Stream Gatherers (Second Preview)
  • JEP 478: Introduction to Feature Patterns (Preview)
  • JEP 479: Private Volatile Reads
  • JEP 482: Statement with Enhanced Switch (Preview)

Java 22 (March 2024)

  • JEP 423: Region Pinning for G1
  • JEP 447: Statements before super(...) (Preview)
  • JEP 456: Unnamed Variables & Patterns
  • JEP 457: Class-File API (Preview)
  • JEP 458: Foreign Function & Memory API
  • JEP 459: String Templates (Second Preview)
  • JEP 460: Vector API (Sixth Incubator)
  • JEP 461: Stream Gatherers (Preview)
  • JEP 462: Structured Concurrency
  • JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview)
  • JEP 464: Scoped Values (Second Preview)
  • JEP 469: Explicit Heap Allocation

Java 21 (September 2023) - LTS

  • JEP 430: String Templates (Preview)
  • JEP 431: Sequenced Collections
  • JEP 439: Generational ZGC
  • JEP 440: Record Patterns
  • JEP 441: Pattern Matching for switch
  • JEP 442: Foreign Function & Memory API (Third Preview)
  • JEP 443: Unnamed Patterns and Variables (Preview)
  • JEP 444: Virtual Threads
  • JEP 445: Unnamed Classes and Instance Main Methods (Preview)
  • JEP 446: Scoped Values (Preview)
  • JEP 448: Vector API (Fifth Incubator)
  • JEP 449: Deprecate the Windows 32-bit x86 Port for Removal
  • JEP 451: Prepare to Disallow the Dynamic Loading of Agents
  • JEP 452: Key Encapsulation Mechanism API

Java 20 (March 2023)

  • JEP 429: Scoped Values (Incubator)
  • JEP 432: Record Patterns (Second Preview)
  • JEP 433: Pattern Matching for switch (Fourth Preview)
  • JEP 434: Foreign Function & Memory API (Second Preview)
  • JEP 436: Virtual Threads (Second Preview)
  • JEP 437: Structured Concurrency (Second Incubator)

Java 19 (September 2022)

  • JEP 405: Record Patterns (Preview)
  • JEP 422: Linux/RISC-V Port
  • JEP 424: Foreign Function & Memory API (Preview)
  • JEP 425: Virtual Threads (Preview)
  • JEP 426: Vector API (Fourth Incubator)
  • JEP 427: Pattern Matching for switch (Third Preview)
  • JEP 428: Structured Concurrency (Incubator)

Java 18 (March 2022)

  • JEP 400: UTF-8 by Default
  • JEP 408: Simple Web Server
  • JEP 413: Code Snippets in Java API Documentation
  • JEP 416: Reimplement Core Reflection with Method Handles
  • JEP 417: Vector API (Third Incubator)
  • JEP 418: Internet-Address Resolution SPI
  • JEP 419: Foreign Function & Memory API (Second Incubator)
  • JEP 420: Pattern Matching for switch (Second Preview)
  • JEP 421: Deprecate Finalization for Removal

Java 17 (September 2021) - LTS

  • JEP 306: Restore Always-Strict Floating-Point Semantics
  • 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 410: Remove the Experimental AOT and JIT Compiler
  • 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

Java 16 (March 2021)

  • JEP 338: Vector API (Incubator)
  • JEP 347: Enable C++14 Language Features
  • JEP 357: Migrate from Mercurial to Git
  • JEP 369: Migrate to GitHub
  • JEP 376: ZGC: Concurrent Thread-Stack Processing
  • JEP 380: Unix-Domain Socket Channels
  • JEP 386: Alpine Linux Port
  • JEP 387: Elastic Metaspace
  • JEP 388: Windows/AArch64 Port
  • JEP 389: Foreign Linker API (Incubator)
  • JEP 390: Warnings for Value-Based Classes
  • JEP 392: Packaging Tool
  • JEP 393: Foreign-Memory Access API (Third Incubator)
  • JEP 394: Pattern Matching for instanceof
  • JEP 395: Records
  • JEP 396: Strongly Encapsulate JDK Internals by Default
  • JEP 397: Sealed Classes (Second Preview)

Java 15 (September 2020)

  • JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
  • JEP 360: Sealed Classes (Preview)
  • JEP 371: Hidden Classes
  • JEP 372: Remove the Nashorn JavaScript Engine
  • JEP 373: Reimplement the Legacy DatagramSocket API
  • JEP 374: Disable and Deprecate Biased Locking
  • JEP 375: Pattern Matching for instanceof (Second Preview)
  • JEP 377: ZGC: A Scalable Low-Latency Garbage Collector
  • JEP 378: Text Blocks
  • JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
  • JEP 381: Remove the Solaris and SPARC Ports
  • JEP 383: Foreign-Memory Access API (Second Incubator)
  • JEP 384: Records (Second Preview)
  • JEP 385: Deprecate RMI Activation for Removal

Java 14 (March 2020)

  • JEP 305: Pattern Matching for instanceof (Preview)
  • JEP 343: Packaging Tool (Incubator)
  • JEP 345: NUMA-Aware Memory Allocation for G1
  • JEP 349: JFR Event Streaming
  • JEP 352: Non-Volatile Mapped Byte Buffers
  • JEP 358: Helpful NullPointerExceptions
  • JEP 359: Records (Preview)
  • JEP 361: Switch Expressions (Standard)
  • JEP 362: Deprecate the Solaris and SPARC Ports
  • JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector
  • JEP 364: ZGC on macOS
  • JEP 365: ZGC on Windows
  • JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination
  • JEP 367: Remove the Pack200 Tools and API
  • JEP 368: Text Blocks (Second Preview)
  • JEP 370: Foreign-Memory Access API (Incubator)

Java 13 (September 2019)

  • JEP 350: Dynamic CDS Archives
  • JEP 351: ZGC: Uncommit Unused Memory
  • JEP 353: Reimplement the Legacy Socket API
  • JEP 354: Switch Expressions (Preview - 2nd round)
  • JEP 355: Text Blocks (Preview)

Java 12 (March 2019)

  • JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
  • JEP 230: Microbenchmark Suite
  • JEP 325: Switch Expressions (Preview)
  • JEP 334: JVM Constants API
  • JEP 340: One AArch64 Port, Not Two
  • JEP 341: Default CDS Archives
  • JEP 344: Abortable Mixed Collections for G1
  • JEP 346: Promptly Return Unused Committed Memory from G1

Java 11 (September 2018)

  • JEP 181: Nest-Based Access Control
  • JEP 309: Dynamic Class-File Constants
  • JEP 315: Improve Aarch64 Intrinsics
  • JEP 318: Epsilon: A No-Op Garbage Collector
  • JEP 320: Remove the Java EE and CORBA Modules
  • JEP 321: HTTP Client (Standard)
  • JEP 323: Local-Variable Syntax for Lambda Parameters
  • JEP 324: Key Agreement with Curve25519 and Curve448
  • JEP 327: Unicode 10
  • JEP 328: Flight Recorder
  • JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
  • JEP 330: Launch Single-File Source-Code Programs
  • JEP 331: Low-Overhead Heap Profiling
  • JEP 332: Transport Layer Security (TLS) 1.3
  • JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
  • JEP 335: Deprecate the Nashorn JavaScript Engine
  • JEP 336: Deprecate the Pack200 Tools and API

Java 10 (March 2018)

  • JEP 286: Local-Variable Type Inference
  • JEP 296: Consolidate the JDK Forest into a Single Repository
  • JEP 304: Garbage-Collector Interface
  • JEP 307: Parallel Full GC for G1
  • JEP 310: Application Class-Data Sharing
  • JEP 312: Thread-Local Handshakes
  • JEP 313: Remove the Native-Header Generation Tool (javah)
  • JEP 314: Additional Unicode Language-Tag Extensions
  • JEP 316: Heap Allocation on Alternative Memory Devices
  • JEP 317: Experimental Java-Based JIT Compiler
  • JEP 319: Root Certificates
  • JEP 322: Time-Based Release Versioning

Java 9 (September 2017)

Java 8 (March 2014)

  • JSR 337: Java SE 8 Release Contents
  • Lambda Expressions (JSR 335)
  • Parallel Array Sorting
  • Remove the Permanent Generation
  • Default Methods (Interface Evolution)
  • Type Annotations (JSR 308)
  • Repeating Annotations
  • Date and Time API (JSR 310)
  • Nashorn JavaScript Engine
  • Compact Profiles
  • Stream API
  • Fork/Join Framework enhancements
  • Java IO improvements
  • Method Parameter Reflection

This list covers all the major JEPs from Java 8. Note that earlier versions (particularly Java 8) used JSRs (Java Specification Requests) rather than JEPs for some features.