- Oracle secara resmi mengumumkan perilisan Java 24 (JDK 24)
- JDK 24 adalah implementasi referensi Java SE Platform versi 24 yang ditetapkan dalam JSR 399 milik JCP, dan dirilis melalui JDK Release Process (JEP 3)
[Ringkasan per JEP]
-
JEP 404: Generational Shenandoah (eksperimental)
- Mendukung collection berbasis generasi pada Shenandoah GC untuk meningkatkan performa
-
JEP 450: Compact Object Headers (eksperimental)
- Mengurangi ukuran object header di HotSpot JVM dari 96~128 bit menjadi 64 bit
- Diharapkan mengurangi ukuran heap, meningkatkan densitas deployment, dan memperbaiki data locality
-
JEP 472: Prepare to Restrict the Use of JNI
- Menambahkan peringatan saat menggunakan JNI (Java Native Interface)
- Memberikan peringatan yang konsisten di API Foreign Function & Memory (FFM)
- Menyediakan peringatan sebagai persiapan pembatasan penggunaan JNI dan API FFM di masa mendatang
- Jika diperlukan, aplikasi dapat mengaktifkan interface tersebut secara opsional
-
JEP 475: Late Barrier Expansion for G1
- Menyederhanakan implementasi barrier pada garbage collector G1
- Menggeser waktu ekspansi barrier di compiler C2 JIT dari tahap awal ke tahap akhir
-
JEP 478: Key Derivation Function API (preview)
- Memperkenalkan API Key Derivation Function (KDF) untuk fungsi derivasi kunci kriptografi
- Memungkinkan derivasi kunci tambahan dari secret key dan data lainnya
-
JEP 483: Ahead-of-Time Class Loading & Linking
- Membuat class aplikasi langsung siap digunakan saat startup HotSpot JVM
- Status load dan link yang sudah dilakukan pada satu eksekusi dapat disimpan di cache untuk startup lebih cepat pada eksekusi berikutnya
-
JEP 484: Class-File API
- Menyediakan API standar untuk parsing, pembuatan, dan transformasi file class Java
-
JEP 485: Stream Gatherers
- Menambahkan dukungan operasi intermediate kustom ke Stream API
- Memungkinkan transformasi data yang sulit dilakukan dengan operasi intermediate yang ada saat ini
-
JEP 486: Permanently Disable the Security Manager
- Security Manager bukan lagi sarana keamanan utama untuk kode sisi klien
- Dinonaktifkan setelah ditetapkan untuk dihapus di Java 17 (JEP 411)
- API Security Manager dijadwalkan akan dihapus sepenuhnya pada rilis mendatang
-
JEP 487: Scoped Values (preview keempat)
- Memperkenalkan Scoped Values untuk berbagi data immutable di dalam thread dengan child thread
- Dapat mengurangi biaya memori dan waktu dibanding variabel thread-local
- Diharapkan meningkatkan performa saat digunakan bersama virtual thread dan structured concurrency
-
JEP 488: Primitive Types in Patterns, instanceof, and switch (preview kedua)
- Menambahkan dukungan tipe primitif dalam pattern matching
- Memungkinkan penggunaan semua tipe primitif dalam
instanceof dan switch
-
JEP 489: Vector API (inkubator kesembilan)
- Memperkenalkan API untuk operasi vektor
- Diharapkan meningkatkan performa karena dikompilasi menjadi instruksi vektor, bukan operasi skalar
-
JEP 490: ZGC: Remove the Non-Generational Mode
- Menghapus mode non-generational pada ZGC dan menjadikan mode generational sebagai default
-
JEP 491: Synchronize Virtual Threads without Pinning
- Meningkatkan perilaku pada sintaks
synchronized agar virtual thread dapat melepaskan platform thread
- Meningkatkan performa dan skalabilitas dengan mencegah virtual thread terikat pada platform thread
-
JEP 492: Flexible Constructor Bodies (preview ketiga)
- Mengizinkan statement sebelum pemanggilan constructor eksplisit (
super(..), this(..))
- Memungkinkan inisialisasi field sebelum instance selesai diinisialisasi sepenuhnya
-
JEP 494: Module Import Declarations (preview kedua)
- Menambahkan deklarasi untuk mengimpor package yang diekspor modul secara lebih sederhana
- Menyederhanakan reuse library yang dimodularisasi
-
JEP 495: Simple Source Files and Instance Main Methods (preview keempat)
- Mendukung source file dan method sederhana yang mudah ditulis oleh pemula
- Memungkinkan penulisan program sederhana tanpa kode yang kompleks
-
JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
- Memperkenalkan Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM)
- Memperkuat keamanan kunci simetris dan bersiap menghadapi serangan komputasi kuantum
-
JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
- Memperkenalkan Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm (ML-DSA)
- Memperkuat pencegahan pemalsuan/perubahan data dan autentikasi penanda tangan
- Ditujukan untuk menghadapi serangan komputasi kuantum di masa depan
-
JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
- Memberikan peringatan saat method akses memori di
sun.misc.Unsafe digunakan
- Menganjurkan migrasi ke VarHandle API dan FFM API
-
JEP 499: Structured Concurrency (preview keempat)
- Memperkenalkan structured concurrency untuk menangani kelompok tugas terkait sebagai satu unit kerja
- Menyederhanakan penanganan error dan pembatalan, serta meningkatkan keandalan dan visibilitas
[Ringkasan fitur baru JDK 24]
-
Configurable New Session Tickets Count for TLSv1.3
-
Mechanism to Disable TLS Cipher Suites by Pattern Matching
- Dari file konfigurasi
java.security, cipher suite TLS dapat dinonaktifkan melalui properti jdk.tls.disabledAlgorithms
- Mendukung pattern matching (wildcard
_ dapat digunakan)
- Contoh:
"TLS_RSA_*" menonaktifkan semua cipher suite yang diawali TLS_RSA
-
New Option to Extract a JAR File to a Specific Directory Using the jar Tool
-
New Reader.of(CharSequence) Method
- Menambahkan method factory statis baru
java.io.Reader.of(CharSequence)
- Mendukung pembacaan yang efisien dari
String, StringBuilder, dan lainnya
-
New Method Process.waitFor(Duration)
- Menambahkan method
java.lang.Process#waitFor(Duration)
- Mencegah kebingungan dalam penetapan satuan pada
waitFor() yang lama
-
Support for Unicode 16.0
- Menambahkan dukungan untuk Unicode 16.0
- Total 154.998 karakter dan 7 skrip baru ditambahkan
- Garay (Afrika Barat)
- Gurung Khema, Kirat Rai, Ol Onal, Sunuwar (India dan Nepal)
- Todhri (Albania)
- Tulu-Tigalari (India barat daya)
-
New JAR Command Option to Not Overwrite Existing Files
-
New MXBean to Monitor and Manage Virtual Thread Scheduler
- Menambahkan interface
jdk.management.VirtualThreadSchedulerMXBean
- Memungkinkan pemantauan status dan paralelisme scheduler virtual thread
- Memungkinkan perubahan target paralelisme scheduler secara dinamis
-
New jcmd Commands Thread.vthread_scheduler and Thread.vthread_pollers
- Menambahkan perintah baru ke tool
jcmd
Thread.vthread_scheduler: menampilkan status thread scheduler
Thread.vthread_pollers: menampilkan status I/O poller
-
Support for Including Security Properties Files
- File konfigurasi
java.security kini dapat menyertakan file properti lain
- Menggunakan
include <jalur file>
- Kata kunci
include tidak dapat digunakan sebagai nama properti
-
Document Standard Hash and MGF Algorithms for RSASSA-PSS Signature
- Mendokumentasikan hash standar dan message generation function yang dapat digunakan pada tanda tangan RSASSA-PSS
-
SunPKCS11 Provider Is Enhanced to Use CKM_AES_CTS Mechanism
- Menambahkan dukungan transformasi AES/CTS pada provider SunPKCS11
- Menambahkan properti konfigurasi baru
cipherTextStealingVariant (CS1, CS2, CS3)
- Untuk NSS, nilai default diatur ke CS1
-
New Summary Page for External Specifications
- Menambahkan halaman ringkasan untuk melihat sekilas spesifikasi eksternal yang dirujuk oleh Java SE dan JDK API
-
jpackage Supports WiX Toolset v4 and v5 on Windows
jpackage menambahkan dukungan untuk WiX Toolset v4 dan v5
- Secara otomatis memilih versi installer terbaru
- Mengonversi source kustom format WiX v3 ke format v4 secara otomatis
-
Add W3C DTDs and XSDs to the JDK Built-in Catalog
- Menambahkan DTD dan XSD W3C ke katalog XML bawaan JDK
- Dapat dimuat secara lokal tanpa jaringan
- Item yang ditambahkan:
- namespace xml
- XML Schema Part 1 & 2
- XHTML 1.0 & 1.1
- DTD spesifikasi XML W3C
4 komentar
Project Valhalla sudah dikembangkan sangat lama, jadi semoga bisa membuahkan hasil yang baik.
Secara pribadi, saya berharap struktur flat dari value class dapat mengurangi referensi pointer sehingga memberi keuntungan pada kecepatan akses memori.
Sepertinya banyak menerima pengaruh (positif) dari Kotlin. Akhir-akhir ini saya sangat puas menggunakan bahasa Kotlin, tetapi saya juga mendukung Java yang bisa dibilang sebagai asal mulanya.
Saya sangat menantikan Structured Concurrency dan Scoped Value.
Pendapat Hacker News
SecurityManager diam-diam menghilang. Dulu ada profesor yang mengajar mata kuliah pilihan Java dan sering menekankan kelebihan SecurityManager. Saat itu saya sangat skeptis, dan sekarang rasanya memuaskan karena skeptisisme itu terbukti benar
Ingin pratinjau structured concurrency segera selesai. Ini membantu Java menutup kesenjangan terakhir dibanding golang dalam kemudahan pemrograman konkurensi. Go memudahkan pembuatan channel dan wait group. Structured concurrency menggunakan elemen-elemen dasar ini agar tugas tingkat lebih tinggi lebih mudah ditulis dan dipahami
Tidak adanya pinning virtual thread adalah keunggulan besar. Sekarang virtual thread bisa digunakan hampir tanpa batasan
Senang melihat Streams masih tetap disukai. Di perusahaan, kami sering melakukan wawancara gaya fizzbuzz, dan orang yang memilih Java lalu menggunakan stream biasanya lolos. Ini menunjukkan ergonomi dan intuitivitas bahasa tersebut, serta kekuatan abstraksi. Java stream sama kuatnya dengan rantai operasi gaya fungsional di Ruby, tetapi performanya benar-benar bagus
Fitur baru: tautan proyek OpenJDK 24
Rilis ARM32 dan Risc-V akan segera tersedia di sini
Raspberry 2 dan Vision Five 2 adalah perangkat keras yang sangat visioner yang diabaikan oleh Oracle dan OpenJDK
Pertanyaan tentang perbedaan lisensi antara penggunaan OpenJDK dan rilis resmi Oracle JDK
Mengejutkan JEP 491 belum disebutkan. Ini memastikan kata kunci "synchronized" tidak merusak virtual thread. Ini keuntungan besar untuk menjalankan kode lama di virtual thread
Perkembangan versi Java dalam beberapa tahun terakhir cukup menarik. Setelah Java 9, 10, dan 11 LTS, saya masih memakai Java 8. Terlalu banyak yang harus dikerjakan
Saat membandingkan Java versi terbaru dengan Kotlin, Java terus membaik dan mengambil fitur-fitur Kotlin, tetapi Kotlin juga terus berkembang dengan caranya sendiri
GraalVM juga bisa digunakan untuk Java 24. Ada banyak fitur bagus
Pinning pada virtual thread akhirnya hilang