Changelog JDK Java 16: Semua Fitur Baru
Daftar lengkap fitur dan JEP pada JDK 16, rilis Maret 2021, termasuk Records dan Pattern Matching standar, Vector API, serta Unix-Domain Socket.
Changelog JDK Java 16
JDK 16 dirilis pada 16 Maret 2021 dan merupakan rilis non-LTS. Versi ini menstandarkan Records dan Pattern Matching untuk instanceof, serta memperkuat JDK Internals dengan strong encapsulation.
Ringkasan JEP
| Nomor | Nama Fitur |
|---|---|
| 338 | Vector API (Incubator) |
| 347 | Enable C++14 Language Features |
| 357 | Migrate from Mercurial to Git |
| 369 | Migrate to GitHub |
| 376 | ZGC: Concurrent Thread-Stack Processing |
| 380 | Unix-Domain Socket Channels |
| 386 | Alpine Linux Port |
| 387 | Elastic Metaspace |
| 388 | Windows/AArch64 Port |
| 389 | Foreign Linker API (Incubator) |
| 390 | Warnings for Value-Based Classes |
| 392 | Packaging Tool |
| 393 | Foreign-Memory Access API (Third Incubator) |
| 394 | Pattern Matching for instanceof |
| 395 | Records |
| 396 | Strongly Encapsulate JDK Internals by Default |
| 397 | Sealed Classes (Second Preview) |
Fitur Utama
Records Menjadi Standar (JEP 395)
Records resmi dijadikan fitur permanen setelah dua kali preview di JDK 14 dan JDK 15:
public record Point(int x, int y) { }
Pattern Matching for instanceof Menjadi Standar (JEP 394)
Pola instanceof dengan pattern variable kini resmi menjadi bagian dari bahasa:
if (obj instanceof String s && s.length() > 5) {
System.out.println(s);
}
Strongly Encapsulate JDK Internals by Default (JEP 396)
Akses ke internal API JDK (seperti sun.misc.*) diblokir secara default. Kode lawas dapat menggunakannya sementara dengan flag --add-opens.
Vector API (JEP 338) — Incubator
API baru untuk menghitung vektor kemunculan CPU secara portable dan performan tinggi, memanfaatkan SIMD:
var species = FloatVector.SPECIES_256;
var a = FloatVector.fromArray(species, fa, 0);
var b = FloatVector.fromArray(species, fb, 0);
var c = a.mul(b);
c.intoArray(fc, 0);
Unix-Domain Socket Channels (JEP 380)
Menambahkan dukungan Unix-domain socket channel untuk komunikasi lokal antar-proses yang lebih cepat dan aman:
UnixDomainSocketAddress addr = UnixDomainSocketAddress.of("/tmp/demo.sock");
Perubahan Lain
- ZGC: Concurrent Thread-Stack Processing (376).
- Alpine Linux Port (386): JDK kini mendukung Alpine Linux (musl).
- Windows/AArch64 Port (388).
- Elastic Metaspace (387): Metaspace mengembalikan memori tidak terpakai ke OS.
- Packaging Tool (392): Ditingkatkan dari incubator.
- Migrasi ke Git & GitHub (357, 369): Sumber JDK pindah dari Mercurial ke Git.
- Sealed Classes (397): Preview kedua.
- Foreign Linker API (389) dan Foreign-Memory Access (393): Incubator untuk interoperabilitas dengan native code.
Kesimpulan
JDK 16 adalah gebrakan: Records dan Pattern Matching resmi mengubah cara menulis Java, sementara Vector API, Foreign Linker API, dan strong encapsulation mempersiapkan platform untuk ekosistem yang lebih aman dan berperforma tinggi.