Changelog JDK Java 17: Semua Fitur Baru
Daftar lengkap fitur dan JEP pada JDK 17, rilis LTS September 2021, termasuk Sealed Classes standar, Pattern Matching for switch preview, dan Pseudo-Random Generator.
Changelog JDK Java 17
JDK 17 dirilis pada 14 September 2021 dan merupakan rilis LTS (dukungan jangka panjang) kedua era rilis 6 bulan, menggantikan JDK 11. Versi ini menstandarkan Sealed Classes, mengenalkan Pattern Matching for switch (preview), serta merombak Random Number Generator.
Ringkasan JEP
| Nomor | Nama Fitur |
|---|---|
| 306 | Restore Always-Strict Floating-Point Semantics |
| 356 | Enhanced Pseudo-Random Number Generators |
| 382 | New macOS Rendering Pipeline |
| 391 | macOS/AArch64 Port |
| 398 | Deprecate the Applet API for Removal |
| 403 | Strongly Encapsulate JDK Internals |
| 406 | Pattern Matching for switch (Preview) |
| 407 | Remove RMI Activation |
| 409 | Sealed Classes |
| 410 | Remove the Experimental AOT and JIT Compiler |
| 411 | Deprecate the Security Manager for Removal |
| 412 | Foreign Function & Memory API (Incubator) |
| 414 | Vector API (Second Incubator) |
| 415 | Context-Specific Deserialization Filters |
Fitur Utama
Sealed Classes Menjadi Standar (JEP 409)
Setelah dua kali preview (JDK 15 dan JDK 16), Sealed Classes kini resmi menjadi bagian dari bahasa:
sealed interface Shape
permits Circle, Square, Rectangle { }
record Circle(double radius) implements Shape { }
record Square(double side) implements Shape { }
Pattern Matching for switch (JEP 406) — Preview
Penggabungan switch expressions dengan pattern matching, memungkinkan switch memeriksa tipe objek:
static String formatter(Object o) {
return switch (o) {
case Integer i -> "int: " + i;
case Long l -> "long: " + l;
case String s -> "string: " + s;
default -> "lainnya";
};
}
Enhanced Pseudo-Random Number Generators (JEP 356)
API baru untuk berbagai generator angka acak (LXM yang terunggul) serta antarmuka terpadu RandomGenerator:
RandomGenerator gen = RandomGeneratorFactory.of("L64X128MixRandom").create();
int nilai = gen.nextInt(1, 101);
Strongly Encapsulate JDK Internals (JEP 403)
Lanjutan dari JDK 16: internal API JDK di-encapsulasi dengan keras. Opsi --add-opens dan sun.* dibatasi.
New macOS Rendering Pipeline (JEP 382)
Pipeline rendering macOS baru yang memanfaatkan Metal API menggantikan pipeline Apple yang lama, sekaligus menyediakan base untuk port macOS/AArch64 (JEP 391).
Perubahan Lain
- Restore Always-Strict Floating-Point (306): Perhitungan float selalu menggunakan semantik strict untuk menghindari ketidakkonsistenan platform.
- Remove RMI Activation (407).
- Remove Experimental AOT/JIT Compiler (410): Mencabut JIT compiler Graal eksperimental dan AOT.
- Deprecate Security Manager untuk dihapus (411).
- Context-Specific Deserialization Filters (415): Memakai filter deserialisasi per-konteks dengan
ObjectInputFilter. - Vector API (414): Incubator kedua.
- Foreign Function & Memory API (412): Incubator.
Kesimpulan
JDK 17 merupakan fondasi LTS modern untuk ekosistem Java. Dengan Sealed Classes, Records, dan Pattern Matching dari rilis sebelumnya, developer kini memiliki toolkit bahasa yang kuat untuk menulis kode ekspresif, aman, dan mudah dipelihara — menjadikan JDK 17 target migrasi utama dari JDK 8 dan JDK 11.