Java 15 

Java 15 is a non-LTS feature release following Java 14. It preceded Java 16 (March 2021). Java 15 reached end-of-life in March 2021 and receives no further updates. 

Java 15 Release Details 

Release DateSeptember 15, 2020
LTSNo
OpenJDK End-of-LifeMarch 15, 2021
Notable ForText blocks finalized, sealed classes preview, ZGC and Shenandoah production-ready 

Java 15 is end-of-life. Organizations running it should upgrade to a current LTS release: Java 17, Java 21, or Java 25

Java 15 Language Features 

Text Blocks (JEP 378) 

Text blocks are finalized. Multi-line string literals delimited by triple quotes, with automatic indentation management. This completed a three-release journey: preview in Java 13 (JEP 355), second preview in Java 14 (JEP 368), final in Java 15. 

String query = “”” 

        SELECT id, name, email 

        FROM users 

        WHERE active = true 

        ORDER BY name 

        “””; 

Sealed Classes (Preview, JEP 360) 

First preview of sealed classes, which restrict which classes or interfaces can extend or implement them. The compiler enforces the permits clause. Enables exhaustive pattern matching over closed hierarchies. Previewed in Java 15 and 16, finalized in Java 17 (JEP 409). 

Records (Second Preview, JEP 384) 

Second preview of records. Added the ability to declare local records (inside methods), local enums, and local interfaces. Previewed in Java 14 (JEP 359), finalized in Java 16 (JEP 395). 

Pattern Matching for instanceof (Second Preview, JEP 375) 

Second preview identical to the Java 14 version (JEP 305). No changes from the first preview; the feature needed more incubation time. Finalized in Java 16 (JEP 394). 

Java 15 API Changes 

Hidden Classes (JEP 371) 

A standard API for defining classes that cannot be discovered by other classes at runtime. Hidden classes are not visible via reflection, class loaders, or Class.forName(). Designed for frameworks that generate bytecode at runtime (LambdaMetafactory, Nashorn successors, bytecode instrumentation agents). Replaces the undocumented sun.misc.Unsafe.defineClass() mechanism. 

Edwards-Curve Digital Signature Algorithm (JEP 339) 

Adds EdDSA (Edwards-curve Digital Signature Algorithm) to the JDK cryptographic providers. EdDSA provides better performance and simpler implementation than ECDSA. Supports Ed25519 and Ed448 curves, matching RFC 8032. 

var signer = Signature.getInstance(“Ed25519”); 

signer.initSign(keyPair.getPrivate()); 

signer.update(message); 

byte[] signature = signer.sign(); 

Foreign-Memory Access API (Second Incubator, JEP 383) 

Second incubation of the API for accessing off-heap memory. Refined based on feedback from the Java 14 incubation (JEP 370). Continued incubating through Java 16 and 17, finalized in Java 22 (JEP 454). 

Java 15 JVM Changes 

ZGC (JEP 377) 

ZGC becomes a production-ready (no longer experimental) garbage collector. Added in Java 11 as experimental, ZGC provides sub-millisecond pause times independent of heap size. Production-ready in Java 15, generational mode added in Java 21 (JEP 439). 

Shenandoah GC (JEP 379) 

Shenandoah also becomes production-ready. Added as experimental in Java 12 (JEP 189), Shenandoah provides low-pause collection via concurrent evacuation. Generational mode added in Java 25 (JEP 521). 

Disable and Deprecate Biased Locking (JEP 374) 

Biased locking is disabled by default and deprecated for removal. Biased locking was an optimization for uncontended synchronization, but the cost of revocation (needed when a lock becomes contended) now exceeds the benefit on modern hardware. Applications using synchronized with no contention see no measurable regression. 

Java 15 Removals 

JEPChangeImpact
JEP 372Remove Nashorn JavaScript Engine 
JEP 381Remove Solaris and SPARC Ports 
JEP 385Deprecate RMI Activation for Removal RMI activation deprecated. RMI itself remains functional. Removed in Java 17 (JEP 407) 

Java 15 Upgrade Path 

Java 15 has been end-of-life since March 2021. Recommended upgrade targets: 

  • Java 17 LTS: Minimum recommended LTS. Includes sealed classes (final), records (final), pattern matching for instanceof (final), and strong encapsulation of JDK internals 
  • Java 21 LTS: Adds virtual threads, pattern matching for switch, record patterns, generational ZGC 
  • Java 25 LTS: Current LTS. Adds scoped values, compact source files, AOT method profiling, compact object headers 

Azul’s Java 15 Support 

Azul Platform Core provides TCK-certified builds of current LTS releases with extended support. A single subscription covers all supported versions from Java 6 through Java 26. 

Contact Us

Contact us to learn more about our migration services, support, modernization services, and more!