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 17 is the third long-term support release under the six-month release cadence. It followed Java 16 and preceded Java 18. Subsequent LTS releases are Java 21 (September 2023) and Java 25 (September 2025).
| Release Date | 14 September 2021 |
| LTS | Yes |
| Preview Features | Pattern Matching for switch (JEP 406), Foreign Function & Memory API (JEP 412) |
| Minimum Supported Versions | Azul Zulu: 11, 17, 21, 25 |
Sealed Classes (JEP 409)
Sealed classes restrict which classes or interfaces can extend or implement them. The compiler enforces the constraint. This replaces conventions like package-private constructors and enables exhaustive pattern matching in switch expressions (finalized in Java 21).
public sealed interface Shape
permits Circle, Rectangle, Triangle {}
public record Circle(double radius) implements Shape {}
public record Rectangle(double width, double height) implements Shape {}
public record Triangle(double base, double height) implements Shape {}
Context-Specific Deserialization Filters (JEP 415)
Applications can configure JVM-wide filters or per-object filters to validate incoming serialized data. Filters inspect the class, array length, depth, and reference count of each object before deserialization proceeds. This addresses the persistent security risk of untrusted serialized data in RMI and JMX workloads.
Enhanced Pseudo-Random Number Generators (JEP 356)
New interface hierarchy (RandomGenerator, RandomGenerator.StreamableGenerator) with implementations for LXM, Xoshiro, and Xoroshiro algorithms. Replaces the single java.util.Random implementation with algorithm-specific choices suited to simulation, cryptography, and statistical workloads.
Restore Always-Strict Floating-Point Semantics (JEP 306)
Restores strict floating-point semantics to all floating-point operations, making strictfp redundant. Since the introduction of SSE and NEON instructions on x86 and ARM, all contemporary hardware uses the extended exponent range that strictfp was designed to guarantee. The keyword remains for compilation but has no effect.
macOS/AArch64 Port (JEP 391)
Native support for Apple Silicon (M1 and later). The port uses the template interpreter and C1/C2 JIT compilers, providing performance parity with x86_64 on the same hardware.
New macOS Rendering Pipeline (JEP 382)
Replaces the deprecated OpenGL pipeline with a Metal-based rendering backend for Java 2D on macOS. Required because Apple deprecated OpenGL in macOS 10.14.
Strongly Encapsulate JDK Internals (JEP 403)
All internal elements of the JDK are now strongly encapsulated by default. The single flag –illegal-access=permit from Java 16 no longer has any effect. The only escape hatch is –add-opens, which must be specified per-package. Libraries depending on sun.misc.Unsafe or internal JDK classes must migrate.
| JEP | Change | Impact |
|---|---|---|
| JEP 407 | Remove RMI Activation | RMI activation daemon (rmid) and java.rmi.activation package removed. RMI itself remains. |
| JEP 410 | Remove Experimental AOT and JIT Compiler | jaotc tool and Graal-based AOT compilation removed. GraalVM remains available as a standalone project. |
| JEP 398 | Deprecate Applet API for Removal | java.applet package marked for removal. Applications should migrate to Java Web Start or native installers. |
| JEP 411 | Deprecate Security Manager for Removal | SecurityManager marked for removal in a future release. Permanently disabled in Java 24. |
Java 17 is the recommended upgrade target for organizations running Java 11 applications. The migration path is straightforward for most applications:
Azul Platform Core provides TCK-certified builds of OpenJDK 17 with extended support through 2029 and beyond. Features include:
Contact us to learn more about our migration services, support, modernization services, and more!