Changelog JDK Java 12: Semua Fitur Baru
Daftar lengkap fitur dan JEP pada JDK 12, rilis Maret 2019, termasuk Switch Expressions, Shenandoah, dan penyempurnaan G1.
Changelog JDK Java 12
JDK 12 dirilis pada 19 Maret 2019 dan merupakan rilis non-LTS. Versi ini fokus pada penyempurnaan performa, pengenalan Switch Expressions (preview), serta eksperimen Shenandoah GC.
Ringkasan JEP
| Nomor | Nama Fitur |
|---|---|
| 189 | Shenandoah: A Low-Pause-Time Garbage Collector |
| 230 | Microbenchmark Suite |
| 325 | Switch Expressions (Preview) |
| 334 | JVM Constants API |
| 340 | One AArch64 Port, Not Two |
| 341 | Default CDS Archives |
| 344 | Abortable Mixed Collections for G1 |
| 346 | Promptly Return Unused Committed Memory from G1 |
Fitur Utama
Switch Expressions (JEP 325) — Preview
Penggunaan ekspresif switch sebagai expression yang mengembalikan nilai dan menghilangkan fall-through:
Day day = Day.MONDAY;
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
Merupakan fitur preview di JDK 12, dikembangkan lagi di JDK 13, dan menjadi standar penuh di JDK 14.
Menguji dengan Flag Preview
Fitur preview harus diaktifkan secara eksplisit:
javac --enable-preview --release 12 Demo.java
java --enable-preview Demo
Shenandoah GC (JEP 189) — Eksperimental
Shenandoah adalah garbage collector dengan pause time rendah yang bekerja secara konkuren (menjeda aplikasi sambil mengumpulkan sampah):
java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -jar app.jar
JVM Constants API (JEP 334)
API baru java.lang.constant untuk memodelkan entitas constant pool pada file class, dipakai oleh compiler yang menargetkan JVM (seperti ByteBuddy atau Groovy).
Penyempurnaan G1
- Abortable Mixed Collections (344): G1 dapat menghentikan mixed collection yang terlalu lama sehingga pause tetap diprediksi.
- Promptly Return Unused Committed Memory (346): G1 mengembalikan memori yang sudah tidak terpakai ke OS secara lebih cepat, bila memenuhi threshold.
Perubahan Lain
- Microbenchmark Suite (230): Menambahkan benchmark JMH ke repository JDK untuk memudahkan developer mengukur performa.
- Default CDS Archives (341): Class Data Sharing diaktifkan secara default, mempercepat startup JVM.
- One AArch64 Port (340): Menggabungkan dua varian port ARM 64-bit menjadi satu.
Kesimpulan
JDK 12 adalah rilis transisi penting: Switch Expressions menandai arah baru sintaks yang lebih ekspresif, Shenandoah memperkenalkan GC concurrent pause rendah, dan JDK terus memoles G1 serta startup time melalui CDS.