Changelog JDK Java 20: Semua Fitur Baru
Daftar lengkap fitur dan JEP pada JDK 20, rilis Maret 2023, termasuk Scoped Values incubator dan penyempurnaan Virtual Threads, Record Patterns, dan Pattern Matching.
Changelog JDK Java 20
JDK 20 dirilis pada 21 Maret 2023 dan merupakan rilis non-LTS. Versi ini melanjutkan pematangan Project Loom dengan preview kedua Virtual Threads dan Record Patterns, serta memperkenalkan Scoped Values.
Ringkasan JEP
| Nomor | Nama Fitur |
|---|---|
| 429 | Scoped Values (Incubator) |
| 432 | Record Patterns (Second Preview) |
| 433 | Pattern Matching for switch (Fourth Preview) |
| 434 | Foreign Function & Memory API (Second Preview) |
| 436 | Virtual Threads (Second Preview) |
| 437 | Structured Concurrency (Second Incubator) |
| 438 | Vector API (Fifth Incubator) |
Fitur Utama
Scoped Values (JEP 429) — Incubator
Scoped Values memperbolehkan pembagian data yang immutable di dalam scope eksekusi tertentu, alternatif yang lebih aman daripada ThreadLocal:
// Incubator di JDK 20
private static final ScopedValue<String> USER = ScopedValue.newInstance();
ScopedValue.where(USER, "admin").run(() -> {
System.out.println(USER.get()); // "admin"
});
Virtual Threads (JEP 436) — Preview Kedua
Virtual Threads diperbaiki lewat feedback: perbaikan pada API Thread.sleep, penguatan kontrol scheduling, dan stabilitas keseluruhan. Masih memerlukan --enable-preview.
Record Patterns (JEP 432) — Preview Kedua
Record Patterns disempurnakan dengan dukungan inference untuk tipe record pada generic serta penambahan operator:
if (obj instanceof Box<String>(var s)) { ... }
Pattern Matching for switch (JEP 433) — Preview Keempat
Kombinasi terakhir sebelum menjadi standar di JDK 21, termasuk dukungan untuk enum dan exhaustive switch.
Perubahan Lain
- Foreign Function & Memory API (434): Preview kedua.
- Structured Concurrency (437): Incubator kedua.
- Vector API (438): Incubator kelima.
Kesimpulan
JDK 20 adalah rilis stabilisasi dari proyek Loom dan pola bahasa modern. Semua fitur besarnya masih berstatus preview/incubator, menandakan bahwa rilis berikutnya (JDK 21, LTS) akan mengukuhkan: Virtual Threads, Record Patterns, dan Pattern Matching for switch akhirnya siap dikerjakan secara permanen.