Apre sis mwa nan devlopman, Oracle pibliye platfòm Java SE 23 (Java Platform, Standard Edition 23), ki sèvi ak pwojè OpenJDK ki louvri kòm yon aplikasyon referans. Ak eksepsyon de retire kèk karakteristik demode, Java SE 23 kenbe konpatibilite bak ak degaje anvan yo nan platfòm Java a - pifò pwojè Java yo te ekri yo pral travay san chanjman lè yo kouri anba nouvo vèsyon an. Pare-pou-enstale bati nan Java SE 22 (JDK, JRE ak sèvè JRE) yo prepare pou Linux (x86_64, AArch64), Windows (x86_64) ak macOS (x86_64, AArch64). Pwojè OpenJDK devlope, aplikasyon referans Java 23 la se yon sous totalman louvri anba lisans GPLv2, ak eksepsyon GNU ClassPath ki pèmèt lyen dinamik ak pwodwi komèsyal yo.
Java SE 23 klase kòm yon lage sipò regilye epi li pral kontinye resevwa mizajou jiska pwochen lage a. Branch Sipò Alontèm (LTS) ta dwe Java SE 21 oswa Java SE 17, ki pral resevwa mizajou jiska 2031 ak 2029, respektivman (jeneralman disponib jiska 2028 ak 2026). Sipò pwolonje pou branch LTS Java SE 8 la pral dire jiska 2030, ak Java SE 11 jiska 2032.
Pami 23 inovasyon yo pwopoze nan Java SE:
- Mòd jeneratif operasyon ZGC (Generation Z Garbage Collector) pèseptè fatra a pèmèt pa default, lè l sèvi avèk pwosesis separe nan "fin vye granmoun" ak "jenn" objè, ki ogmante efikasite nan netwaye objè ki fèk kreye ak yon lavi kout. Sèvi ak Generational ZGC diminye risk pou yo bloke pandan alokasyon resous, diminye chaj CPU ak konsomasyon memwa pandan koleksyon fatra. Tès Generational ZGC ak Apache Cassandra 4 te montre yon ogmantasyon 4x nan debi ak yon gwosè pil fiks ak yon rediksyon trimès nan gwosè pil ak debi konstan.
- JavaDoc te ajoute sipò pou itilize Markdown pou dokimante kòd nan kòmantè, ki ka itilize olye de yon melanj HTML ak JavaDoc @ tags.

- Mekanis matche modèl yo te amelyore ak sipò preliminè pou itilizasyon kalite primitif (int, byte, char, ak lòt kalite debaz ki pa objè) nan tout kalite modèl, nan deklarasyon "instanceof", ak nan blòk "switch". switch (x.getStatus()) { ka 0 -> "oke"; ka 1 -> "avètisman"; ka 2 -> "erè"; ka int i -> "enkoni sitiyasyon: " + i; } si (mwen egzanp byte b) { … b … }
- Te ajoute sipò preliminè pou itilize yon sèl "modil enpòte M" deklarasyon pou enpòte tout pakè ekspòte pa yon modil espesifye alafwa. Chanjman an siyifikativman senplifye reitilizasyon bibliyotèk modilè, sa ki pèmèt ou enkli bibliyotèk ak klas yo san yo pa detèmine plas yo nan yerachi pake a. Pa egzanp, espesifye "enpòte modil java.base" pral enpòte tout 54 pakè ki enkli nan modil la java.base, ki anvan yo ta bezwen mansyone separeman ("import java.io.*", "import java.util.*". ” elatriye).
Yo pwopoze yon dezyèm aplikasyon preliminè API Class-File pou analize, jenere, ak konvèti fichye klas Java yo. ClassFile cf = ClassFile.of (); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { pou (ClassElement ce : classModel) { if (!(se egzanp MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);
- Aperçu wityèm nan Vector API a bay fonksyon pou kalkil vektè ke yo egzekite lè l sèvi avèk enstriksyon vektè sou processeurs x86_64 ak AArch64 epi pèmèt operasyon yo dwe aplike ansanm nan plizyè valè (SIMD). Kontrèman ak kapasite yo bay nan HotSpot JIT du pou oto-vectorization nan operasyon eskalè, nouvo API a fè li posib pou kontwole klèman vektorizasyon pou pwosesis done paralèl.
- Te ajoute metòd fòma, printf, readPassword ak readLine nan klas java.io.Console pou fòme, montre ak li tèks ki baze sou lokal yo chwazi a. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", nouvo dat()) 2024-mai-16 jwi
- Yo te ajoute yon dezyèm aplikasyon preview pwolonje Stream API ki sipòte defini pwòp operasyon entèmedyè ou yo, ki ka itil nan ka kote operasyon entèmedyè entegre ki egziste deja yo pa ase pou transfòmasyon done yo vle. Manadjè natif natal yo konekte lè l sèvi avèk nouvo operasyon entèmedyè Stream::gather(Gatherer), ki trete eleman kouran lè li aplike yon moun kap okipe yo. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- Te ajoute yon twazyèm aplikasyon preliminè nan klas ki deklare implicitman ak egzanp san non nan metòd "prensipal la", ki ka dispanse ak deklarasyon piblik/estatik, pase yon seri agiman, ak lòt antite ki asosye ak yon deklarasyon klas. // te klas piblik HelloWorld { public static void main(String[] args) { System.out.println("Alo mond!"); } } // kounye a ou ka anile main() { System.out.println ("Bonjou, Mondyal!"); }
- Te ajoute yon dezyèm aperçu nan yon karakteristik ki pèmèt konstruktè yo presize ekspresyon yo anvan yo rele super (...), yo itilize pou rele klèman konstrukteur yon klas paran soti nan konstrukteur yon klas eritye si ekspresyon sa yo pa fè referans a yon egzanp ki kreye pa konstrukteur a. klas Eksteryè { void hello () { System.out.println ("Alo"); } klas Inner { Inner () { alo (); super(); } } }
- Te ajoute yon twazyèm aplikasyon Preview Valè Scoped, ki pèmèt done imuiabl yo dwe pataje atravè fil ak done echanje avèk efikasite ant fil timoun (valè yo eritye). Valè Scoped yo ap devlope pou ranplase mekanis varyab lokal yo epi yo pi efikas lè w ap itilize yon gwo kantite fil vityèl (dè milye oswa dè milyon de fil). Diferans prensipal ant Valè Scoped ak varyab lokal fil yo se ke ansyen yo ekri yon fwa, yo pa ka chanje nan lavni, epi yo rete disponib sèlman pou dire ekzekisyon fil la.
- Yo te pwopoze yon twazyèm aperçu Structured Concurrency API pou fè tès, senplifye devlopman aplikasyon milti-threaded pa trete plizyè travay ki kouri nan diferan fil kòm yon blòk sèl.
- Metòd aksè memwa ekstèn yo (andeyò JVM la) klas sun.misc.Unsafe ofri yo te obsève ak pwograme pou yo retire li. Pou jwenn aksè nan memwa ki pa taye epi kominike avèk kòd ekstèn, li rekòmande pou itilize API VarHandle ak API FFM (Fonksyon Etranjè ak memwa).
Anplis de sa, nou ka sonje piblikasyon yon aktyalizasyon nan platfòm la pou kreye aplikasyon ak koòdone grafik JavaFX 23 ak enklizyon de du GraalVM JIT nan prensipal Oracle JDK 23 la.
Yo prezante tou yon nouvo lage inivèsèl machin vityèl GraalVM, ki sipòte aplikasyon pou kouri nan JavaScript (Node.js), Python, Ruby, R, nenpòt lang pou JVM a (Java, Scala, Clojure, Kotlin) ak lang. pou ki LLVM bitcode ka pwodwi (C, C++, Rust). Anplis sipòte JDK 23, nouvo vèsyon an optimize konsomasyon memwa ak gwosè kòd ègzekutabl, epi li bay sipò konplè pou zouti pou entegre Python ak WebAssembly nan kòd Java lè l sèvi avèk konpilasyon JIT.
Sous: opennet.ru

