No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.
No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.
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.
| Release Date | September 15, 2020 |
| LTS | No |
| OpenJDK End-of-Life | March 15, 2021 |
| Notable For | Text 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.
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).
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
| JEP | Change | Impact |
|---|---|---|
| JEP 372 | Remove Nashorn JavaScript Engine | |
| JEP 381 | Remove Solaris and SPARC Ports | |
| JEP 385 | Deprecate RMI Activation for Removal | RMI activation deprecated. RMI itself remains functional. Removed in Java 17 (JEP 407) |
Java 15 has been end-of-life since March 2021. Recommended upgrade targets:
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 to learn more about our migration services, support, modernization services, and more!