Java SE 23 û OpenJDK 23 serbest hatin berdan

Piştî şeş mehên pêşveçûnê, Oracle platforma Java SE 23 (Platform Java, Çapa Standard 23) weşand, ku projeya OpenJDK-çavkaniya vekirî wekî pêkanîna referansê bikar tîne. Ji bilî rakirina hin taybetmendiyên kevnar, Java SE 23 bi serbestberdanên berê yên platforma Java-yê re lihevhatina paşverû diparêze - piraniya projeyên Java-ya ku berê hatine nivîsandin dê dema ku di bin guhertoya nû de werin xebitandin bêyî guhertinan bixebitin. Avakirinên amade-sazkirî yên Java SE 22 (JDK, JRE û Server JRE) ji bo Linux (x86_64, AArch64), Windows (x86_64) û macOS (x86_64, AArch64) têne amadekirin. Ji hêla projeya OpenJDK ve hatî pêşve xistin, pêkanîna referansa Java 23 di bin lîsansa GPLv2 de bi tevahî çavkaniyek vekirî ye, digel îstîsnayên GNU ClassPath ku rê dide girêdana dînamîkî bi hilberên bazirganî re.

Java SE 23 wekî serbestberdana piştevaniya birêkûpêk tête dabeş kirin û heya berdana din dê berdewamiya wergirtina nûvekirinan bidomîne. Pêdivî ye ku şaxa Piştgiriya Demdirêj (LTS) Java SE 21 an Java SE 17 be, ku dê bi rêzdarî heya 2031 û 2029 nûvekirinan werbigire (bi gelemperî heya 2028 û 2026-an peyda dibe). Piştgiriya berfireh ji bo şaxa LTS ya Java SE 8 dê heya 2030, û Java SE 11 heya 2032 bidome.

Di nav 23 nûbûnên ku di Java SE de têne pêşniyar kirin:

  • Moda hilberînê ya xebatê ya berhevkarê çopê ZGC (Generation Z Garbage Collector) ji hêla xwerû ve hatî çalak kirin, bi karanîna veqetandî ya tiştên "kevn" û "ciwan" ve tête çalak kirin, ku ev yek bi jiyanek kurt re karbidestiya paqijkirina tiştên ku vê dawiyê hatine afirandin zêde dike. Bikaranîna ZGC ya Nifşê di dema veqetandina çavkaniyê de xetera rawestan kêm dike, di dema berhevkirina çopê de barkirina CPU û mezaxtina bîranînê kêm dike. Ceribandina Nifşê ZGC bi Apache Cassandra 4 re 4x zêdebûnek di rêwiyan de bi mezinahiya girek sabît û çaryek kêmkirina mezinahiya girikê bi rêveçûna domdar re nîşan da.
  • JavaDoc ji bo karanîna Markdown-ê ji bo belgekirina kodê di şîroveyan de piştgirî zêde kiriye, ku dikare li şûna tevliheviya HTML û JavaDoc @ etîketan were bikar anîn.
    Java SE 23 û OpenJDK 23 serbest hatin berdan
  • Mekanîzmayên lihevhatina nimûneyê bi piştgirîya pêşîn ji bo karanîna celebên seretayî (int, byte, char û celebên din ên bingehîn ên ne-objekt) di her cûre şablonan de, di vegotina "instanceof" û di blokên "veguheztinê" de hatine zêdekirin. switch (x.getStatus()) { case 0 -> "baş"; doz 1 -> "hişyarî"; doza 2 -> "xeletî"; case int i -> “rewşa nenas: ” + i; } heke (i mînaka byte b) { … b … }
  • Piştgiriya pêşîn ji bo karanîna yek daxuyaniyek "modula import M" zêde kir da ku hemî pakêtên ku ji hêla modulek diyarkirî ve di yekcarê de têne derxistin. Guhertin bi girîngî karanîna ji nû ve pirtûkxaneyên modular hêsan dike, dihêle hûn pirtûkxane û dersan bêyî ku cîhê wan di hiyerarşiya pakêtê de diyar bikin têxin nav xwe. Mînakî, destnîşankirina "import module java.base" dê hemî 54 pakêtên ku di nav modula java.base de hene, ku berê hewce bû ku ji hev veqetandî werin binav kirin ("import java.io.*", "import java.util.* ” hwd.).

    Pêkanîna pêşîn a duyemîn a Class-File API-ê ji bo parkirin, hilberandin û veguheztina pelên çîna Java-yê tê pêşniyar kirin. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> {ji bo (ClassElement ce : classModel) { if (!(nimûneya MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);

  • Pêşniyara heştemîn a Vector API fonksiyonên ji bo hesabên vektorê yên ku bi karanîna rêwerzên vektorê yên li ser pêvajoyên x86_64 û AArch64 têne darve kirin peyda dike û dihêle ku operasyon bi hevdemî li ser gelek nirxan (SIMD) werin sepandin. Berevajî kapasîteyên ku di berhevkarê HotSpot JIT-ê de ji bo vektorîkirina otomatîkî ya operasyonên skalar têne peyda kirin, API-ya nû gengaz dike ku bi eşkere vektorîzasyonê ji bo hilberandina daneya paralel kontrol bike.
  • Rêbazên format, printf, readPassword û readLine li pola java.io.Console zêde kirin da ku li ser bingeha cîhê hilbijartî binivîsin, nîşan bidin û bixwînin. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", Dîroka nû()) 2024-mai-16 jeudi
  • Pêkanîna pêşdîtina duyemîn a API-ya Stream-a dirêjkirî hate zêdekirin ku piştgirî dide diyarkirina operasyonên weya navîn, ku dibe ku di rewşên ku operasyonên navber ên çêkirî yên heyî ji bo veguherîna daneya xwestinê ne bes in bikêr be. Rêvebirên xwecihî bi karanîna operasyona navîn a nû Stream::cirandin(Gatherer) ve têne girêdan, ku hêmanên tîrêjê bi sepandina rêvekerek ji hêla bikarhêner ve hatî destnîşan kirin li ser wan pêvajoyê dike. jshell> Stream.of(1,2,3,4,5,6,7,8,9).civandin(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Sêyemîn pêkanîna pêşîn a çînên nepenî yên diyarkirî û mînakên nenavkirî yên rêbaza "sereke" lê zêde kir, ku dikare ji daxuyaniyên giştî/statîk, derbaskirina rêzek argûmanan, û saziyên din ên ku bi danezanek polê ve girêdayî ne veqetîne. // was public class HelloWorld { public static void main(String[] args) { System.out.println("Hello dinya!"); } } // niha tu dikarî main() void { System.out.println("Silav, Cîhan!"); }
  • Pêşdîtinek duyemîn a taybetmendiyekê zêde kir ku destûrê dide çêkeran ku berî gazîkirina super(...) bêjeyan diyar bikin, tê bikar anîn da ku bi eşkere gazî çêkerek çîna dêûbav ji çêkerek çîna mîraskirî bike heke ew biwêjan nabêjin mînakek ku ji hêla çêker ve hatî çêkirin. class Outer { void hello() { System.out.println("Silav"); } class Inner { Inner() { hello(); yekemxweş(); } }
  • Pêvekek sêyem pêşdîtina Nirxên Scoped lê zêde kir, ku dihêle daneyên neguhêrbar di nav mijaran de werin parve kirin û daneyên bi bandor di navbera mijarên zarokan de werin veguheztin (nirx têne mîras kirin). Nirxên Scoped têne pêşve xistin da ku li şûna mekanîzmaya guhêrbarên tîrêjê-herêmî biguhezînin û dema ku jimareyên pir mezin ên têlên virtual (hezar an bi mîlyonan têlan) bikar tînin bikêrtir in. Cûdahiya sereke di navbera Nirxên Scoped û guhêrbarên tîrêjê-herêmî de ev e ku yên berê carekê têne nivîsandin, di pêşerojê de nayên guhertin, û tenê ji bo dirêjahiya darvekirina têxê berdest dimînin.
  • Pêşniyarek sêyemîn a API-ya Hevrêziya Structured ji bo ceribandinê hate pêşniyar kirin, hêsankirina pêşkeftina serîlêdanên pir-mijarî bi hilanîna gelek peywirên ku di mijarên cihêreng de wekî blokek yekane têne xebitandin.
  • Rêbazên gihîştina bîranîna derve (li derveyî JVM) ku ji hêla çîna sun.misc.Unsafe ve hatî peyda kirin hatine betal kirin û ji bo rakirinê hatine plansaz kirin. Ji bo ku meriv bigihîje bîranîna off-heap û bi koda derveyî re têkilî daynin, tê pêşniyar kirin ku API VarHandle û API-ya FFM (Fonksiyon û Bîra Biyanî) bikar bînin.

Wekî din, em dikarin weşandina nûvekirinek platformê ji bo afirandina serîlêdanan bi navgîniya grafîkî ya JavaFX 23 û tevlêkirina berhevkarê GraalVM JIT-ê di Oracle JDK 23-a sereke de destnîşan bikin.

Di heman demê de serbestberdanek nû ya makîneya virtual ya gerdûnî GraalVM jî tê pêşkêş kirin, ku serîlêdanên xebitandinê di JavaScript (Node.js), Python, Ruby, R, her zimanên ji bo JVM (Java, Scala, Clojure, Kotlin) û zimanan piştgirî dike. ji bo kîjan bitkodê LLVM dikare were çêkirin (C, C++, Rust). Digel piştgirîkirina JDK 23, guhertoya nû mezaxtina bîranînê û mezinahiya koda darvekirinê xweşbîn dike, û piştgirîya tam ji amûrên ji bo vekirina Python û WebAssembly di koda Java de bi karanîna berhevkirina JIT peyda dike.

Source: opennet.ru

Add a comment