Changelog JDK Java 18: Semua Fitur Baru
Daftar lengkap fitur dan JEP pada JDK 18, rilis Maret 2022, termasuk Simple Web Server, UTF-8 default, dan deprecation Finalization.
Changelog JDK Java 18
JDK 18 dirilis pada 22 Maret 2022 dan merupakan rilis non-LTS. Versi ini membawa Simple Web Server, menjadikan UTF-8 sebagai default, dan menandai awal langkah perombakan internal seperti Reflection berbasis Method Handles.
Ringkasan JEP
| Nomor | Nama Fitur |
|---|---|
| 400 | UTF-8 by Default |
| 408 | Simple Web Server |
| 413 | Code Snippets in Java API Documentation |
| 416 | Reimplement Core Reflection with Method Handles |
| 417 | Vector API (Third Incubator) |
| 418 | Internet-Address Resolution SPI |
| 419 | Foreign Function & Memory API (Second Incubator) |
| 420 | Pattern Matching for switch (Second Preview) |
| 421 | Deprecate Finalization for Removal |
Fitur Utama
UTF-8 by Default (JEP 400)
Standard Charsets menjadikan UTF-8 sebagai charset default untuk seluruh API Java — menggantikan default yang bergantung pada platform/OS:
// Sebelumnya bergantung pada lokasi OS, kini selalu UTF-8
String s = new String(bytes);
new OutputStreamWriter(out); // kini UTF-8
Simple Web Server (JEP 408)
Server HTTP statis minimalis yang dapat diluncurkan lewat command line untuk pengembangan, prototyping, dan pengujian:
jwebserver
var server = SimpleFileServer.createFileServer(
new InetSocketAddress(8080), Path.of("."), OutputLevel.INFO);
server.start();
Reimplement Core Reflection with Method Handles (JEP 416)
Core Reflection (java.lang.reflect dan java.lang.invoke) diimplementasikan ulang di atas Method Handles, memberi dasar yang kokoh untuk Project Loom (Virtual Threads).
Code Snippets in Java API Documentation (JEP 413)
Menambahkan sintaks untuk memasukkan contoh kode yang dapat diverifikasi ke dalam dokumentasi Javadoc:
/**
* Contoh penggunaan:
* {@snippet :
* var list = List.of(1, 2, 3);
* }
*/
Internet-Address Resolution SPI (JEP 418)
Service Provider Interface untuk resolusi nama host/alamat, memungkinkan penggantian resolver bawaan (misalnya menambahkan caches atau resolver khusus).
Perubahan Lain
- Vector API (417): Incubator ketiga.
- Pattern Matching for switch (420): Preview kedua.
- Foreign Function & Memory API (419): Incubator kedua.
- Deprecate Finalization for Removal (421):
Object.finalize()didepresiasi agar dihapus pada masa depan.
Kesimpulan
JDK 18 adalah rilis pemantapan: default UTF-8 menyederhanakan penanganan teks lintas platform, Simple Web Server memudahkan developer, dan perombakan internal Reflection menjadi batu pijakan menuju Virtual Threads dan Project Loom di rilis-rilis berikutnya.