Sawisé nem sasi pangembangan, Oracle wis ngrilis Java SE 24 (Java Platform, Standard Edition 24), sing migunakaké proyèk OpenJDK sumber terbuka minangka implementasi referensi. Kajaba mbusak sawetara fitur sing wis ora digunakaké, Java SE 24 njaga kompatibilitas mundur karo rilis platform Java sadurungé—umumé proyèk Java sing wis ditulis sadurungé bakal mlaku tanpa owah nalika mlaku ing versi anyar. Build Java SE 24 sing wis siap diinstal (JDK, JRE, lan Server JRE) wis disiyapake kanggo Linux (x86_64, AArch64), Windows (x86_64) lan macOS (x86_64, AArch64). Dikembangake dening proyek OpenJDK, implementasi referensi Java SE 24 minangka sumber terbuka kanthi lengkap miturut lisensi GPLv2 kanthi Pengecualian GNU ClassPath, sing ngidini pranala dinamis karo produk komersial.
Java SE 24 dikategorikake minangka rilis dhukungan reguler, kanthi nganyari bakal dirilis nganti rilis sabanjure. Cabang dhukungan jangka panjang (LTS) kudu dadi Java SE 21 utawa Java SE 17, sing bakal nampa nganyari nganti 2031 lan 2029 (umume kasedhiya nganti 2028 lan 2026). Dhukungan lengkap kanggo cabang Java SE 8 LTS bakal terus nganti 2030, lan Java SE 11 bakal terus nganti 2032. Rilis LTS sabanjure yaiku rilis musim gugur saka Java SE 25.
Antarane 24 inovasi sing diusulake ing Java SE:
- Mode operasi generatif eksperimental saka kolektor sampah Shenandoah diusulake, sing kanthi kapisah ngolah obyek lawas lan mentas digawe kanggo nambah efisiensi ngresiki obyek kanthi umur sing cendhak. Mode anyar nyedhiyakake throughput sing bisa diprediksi, ketahanan kanggo mbukak variasi, lan nyuda konsumsi memori sajrone nglumpukake sampah. Penjadwal Shenandoah duwe tujuan kanggo nyuda wektu mandheg nglumpukake sampah kanthi nindakake luwih akeh karya sing sejajar karo eksekusi aplikasi Java.
- HotSpot JVM ngetrapake dhukungan eksperimen kanggo header obyek kompak, sing ukurane dikurangi saka 64 dadi 96 bit (64 nganti 12 bait) ing sistem 8-bit. Ngurangi ukuran header ngidini sampeyan nyuda ukuran tumpukan lan nambah efisiensi cache.
- Penagih sampah G1 wis nyederhanakake implementasine alangan sing ngawasi akses aplikasi menyang memori. Ing versi anyar, operasi expansion alangi wis dipindhah menyang tataran mengko kompilasi ing C2 JIT. Tes nuduhake yen jinis transfer iki bisa nyuda overhead saka kompiler C2 JIT kanthi 10-20% gumantung saka aplikasi kasebut.
- Nambahake API kanggo nggunakake fungsi derivasi kunci kriptografi (KDF), sing ngidini ngasilake kunci tambahan kanthi dawa sing dibutuhake adhedhasar kunci rahasia (contone, sandhi) lan sakumpulan data sing sewenang-wenang. KDF API saiki ing status pratinjau.
- Nambahake kemampuan kanggo preemptively (Ahead-of-Time) mbukak lan kelas link. Owah-owahan kasebut ngidini HotSpot JVM miwiti luwih cepet kanthi nyedhiyakake kelas sing digunakake ing aplikasi sing wis dimuat lan disambungake. Nalika aplikasi pisanan diluncurake, negara kabeh kelas disiram menyang cache lan digunakake kanggo nyepetake loading ing peluncuran sabanjure.
- Added Class-File API kanggo parsing, ngasilake lan ngowahi file kelas Java.
ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(byte); byte [] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> {kanggo (ClassElement ce : classModel) {yen (!(ce instanceof MethodModel mm && mm.methodName().stringValue().startsWith(«debug»))) {classBuilder} .
- API Stream lengkap wis ditambahake sing ndhukung nemtokake operasi penengah dhewe, kang bisa migunani ing kasus endi operasi penengah dibangun ing ora cukup kanggo transformasi data sing dikarepake. Custom handler sing ditempelake nggunakake operasi penengah anyar Stream:: kumpul (Gatherer), kang proses unsur stream dening nglamar handler sing ditemtokake pangguna kanggo wong-wong mau. jshell> Stream.of(1,2,3,4,5,6,7,8,9).kumpul(WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- Implementasi awal kaping papat saka Scoped Values diusulake, ngidini kanggo nuduhake data sing ora bisa diganti ing benang lan ijol-ijolan data sing efisien ing antarane benang anak (nilai diwarisake). Scoped Values berkembang kanggo ngganti mekanisme variabel lokal lan luwih efisien nalika nggunakake benang virtual sing akeh banget (ewonan lan mayuta-yuta benang). Bentenipun utama antarane Scoped Values lan variabel thread-lokal yaiku sing mantan ditulis sapisan, ora bisa diganti mengko, lan tetep kasedhiya mung kanggo durasi eksekusi thread.
- Mesin pencocokan pola wis dianyari kanggo nyakup dhukungan awal kanggo nggunakake jinis primitif (int, byte, char, lan jinis non-obyek dhasar liyane) ing kabeh jinis template, operator instanceof, lan blok switch. switch (x.getStatus()) {kasus 0 -> "oke"; kasus 1 -> «warning»; kasus 2 -> «kesalahan»; case int i -> "status ora dingerteni:" + i; } yen (i instanceof byte b) { … b … }
- Iki minangka konsep kaping sanga saka Vector API, sing nyedhiyakake fungsi kanggo komputasi vektor sing ditindakake kanthi nggunakake instruksi vektor saka prosesor x86_64 lan AArch64 lan ngidini operasi bisa ditrapake ing sawetara nilai sekaligus (SIMD). Beda karo operasi skalar kompiler HotSpot JIT, API anyar menehi kemampuan kanggo ngontrol vektorisasi kanthi jelas kanggo pangolahan data paralel.
- Dhukungan sing ditindakake kanggo nyinkronake benang virtual tanpa disematake menyang benang khusus platform. Utas virtual kanthi cara utawa ekspresi sing disinkronake ing negara sing diblokir saiki ngeculake utas platforme, ngidini benang virtual liyane bisa digunakake, kanthi signifikan nambah jumlah utas virtual sing kasedhiya lan nambah skalabilitas aplikasi sing nggunakake multithreading.
- Nambahake draf katelu saka fitur sing ngidini konstruktor nemtokake ekspresi sadurunge nelpon super(...) kanthi tegas nelpon konstruktor kelas induk saka konstruktor kelas sing asale, anggere ekspresi kasebut ora nuduhake conto sing digawe dening konstruktor. class Outer {void hello() { System.out.println("Halo"); } kelas Inner { Inner() { hello(); super(); } } }
- Utilitas jlink ngetrapake dhukungan kanggo nggawe gambar run-time tanpa nggunakake file JMOD, sing ngidini nyuda ukuran JDK kira-kira 25%.
- Nambahake konsep kapindho nggunakake statement "modul impor M" siji kanggo ngimpor kabeh paket sing diekspor dening modul kasebut bebarengan. Owah-owahan kasebut ndadekake luwih gampang nggunakake maneh perpustakaan modular kanthi ngidini perpustakaan lan kelas dilebokake tanpa kudu nemtokake panggonane ing hirarki paket. Contone, nemtokake "modul impor java.base" bakal ngimpor kabeh 54 paket sing kalebu ing modul java.base, sing sadurunge kudu kasebut kanthi kapisah ("import java.io.*", "import java.util.*", lsp.).
- Nambahake implementasi awal kaping papat saka kelas sing diumumake sacara implisit lan conto sing ora dijenengi saka metode "utama", sing bisa ditindakake tanpa deklarasi umum / statis, ngliwati macem-macem argumen, lan entitas liyane sing ana gandhengane karo deklarasi kelas. // was public class HelloWorld {public static void main(String[] args) { System.out.println(«Hello world!»); } } // saiki sampeyan bisa mbatalake main () { System.out.println («Hello, World!»); }
- Draf papat saka Structured Concurrency API, sing nyederhanakake pangembangan aplikasi multithreaded kanthi nambani macem-macem tugas sing mlaku ing macem-macem benang minangka unit siji, saiki kasedhiya kanggo dites.
- API KeyPairGenerator, Signature, lan KeyFactory saiki ndhukung algoritma ML-KEM (CRYSTALS-Kyber) lan ML-DSA (CRYSTALS-Dilithium), sing distandarisasi dening Institut Standar lan Teknologi Nasional AS (NIST) lan tahan kanggo brute force ing komputer kuantum. Algoritma kasebut nggunakake metode kriptografi adhedhasar ngrampungake masalah teori kisi, wektu solusi sing padha ing komputer konvensional lan kuantum.
- Ing kolektor sampah ZGC, dhukungan kanggo mode operasi non-generatif, sing ora misahake pangolahan obyek "lawas" lan "enom", wis dibusak. Diwiwiti karo Java SE 23, mode generatif ZGC minangka standar.
- Ditambahake bebaya babagan nggunakake API JNI (Antarmuka Asli Jawa) lan FFM (Fungsi & Memori Asing) kanggo nyiapake pangembang kanggo akses sing diwatesi menyang data API amarga kalebu mode integritas ing rilis mangsa ngarep sing nglarang interaksi karo kode asli minangka standar.
- Aktifake output bebaya nalika nggunakake cara akses memori external (njaba JVM) diwenehake dening sun.misc.Unsafe kelas. Kanggo ngakses memori mati-numpuk lan sesambungan karo kode external, dianjurake kanggo nggunakake API VarHandle. Ing rilis sadurunge, dhukungan kanggo sun.misc.Unsafe wis ora digunakake.
- Manajer Keamanan Pateni, sing wis suwe ilang relevansi lan ora diklaim sawise dhukungan plugin browser rampung. Keamanan Manager wis ora digunakake ing Jawa 17. Kode Keamanan Manager wis ngrancang bakal rampung dibusak ing release mangsa.
- Удалён код для поддержки 32-разрядной платформы ОС Windows на системах x86. Объявлен устаревшим и запланирован к удалению порт Java для 32-разрядных систем x86 (будет прекращена поддержка Linux на 32-разрядных системах x86).
Kajaba iku, kita bisa nyathet publikasi nganyari platform kanggo nggawe aplikasi kanthi antarmuka grafis JavaFX 24 lan rilis anyar mesin virtual universal GraalVM, sing ndhukung aplikasi sing mlaku ing JavaScript (Node.js), Python, Ruby, R, basa apa wae kanggo JVM (Java, Scala, Clojure, Kotlin) lan basa sing bisa digawe LLVM (t. Saliyane ndhukung JDK 24, versi anyar GraalVM kalebu optimasi kanggo tugas machine learning, dhukungan sing luwih apik kanggo kompilasi bytecode Java menyang kode mesin, lan mekanisme SkipFlow kanggo nyuda ukuran file sing bisa dieksekusi lan nyuda wektu kompilasi.
Source: opennet.ru
