Rakirina platforma Java SE 22 û OpenJDK 22 pêkanîna referansa vekirî

Piştî şeş mehên pêşveçûnê, Oracle platforma Java SE 22 (Java Platform, Edition Standard 22) derxist, ku projeya çavkaniya vekirî OpenJDK wekî pêkanîna referansê bikar tîne. Ji xeynî rakirina hin taybetmendiyên paşverû, Java SE 22 bi serbestberdanên berê yên platforma Java-yê re lihevhatina paşverû diparêze - piraniya projeyên Java-yê yên ku berê hatine nivîsandin dema ku di bin guhertoya nû de têne xebitandin dê hîn jî bêyî guheztinê bixebitin. Avakirinên Java SE 22 yên sazkirî (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 22 bi tevahî di bin lîsansa GPLv2 de bi îstîsnayên GNU ClassPath vekirî ye da ku rê bide girêdana dînamîkî bi hilberên bazirganî re.

Java SE 22 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 gelemperî ya ji bo şaxa LTS ya Java SE 11 di Îlona borî de qediya, lê piştgirîya berfireh dê heya 2032 berdewam bike. Piştgiriya berfireh ji bo şaxa LTS ya Java SE 8 dê heya 2030 berdewam bike.

Ka em ji we re bi bîr bînin ku bi destpêkirina serbestberdana Java 10-ê re, proje derbasî pêvajoyek nû ya pêşkeftinê bû, ku tê wateya çerxek kurttir ji bo damezrandina weşanên nû. Karbidestiya nû naha di yek şaxek masterê ya ku bi domdarî nûvekirî de tête pêşve xistin, ku tê de guheztinên amade hene û jê şeş ​​mehan carekê şax têne şax kirin da ku serbestberdanên nû saxlem bikin.

Taybetmendiyên nû di Java 22 de ev in:

  • Berhevkarê çopê G1 piştgirî ji bo pînekirina herêmê vedihewîne, ku dihêle hûn cîhê tiştên Java-yê di bîranînê de demkî rast bikin da ku ji hêla berhevkarê çopê ve neyên guheztin û rê bidin referansên van tiştan ku bi ewlehî di navbera Java û koda xwemalî de derbas bibin. Pînekirin dihêle hûn derengmayînê kêm bikin û dema ku deverên krîtîk ên JNI (Navenda Native Java) bi koda xwemalî têne darve kirin (dema ku van beşan têne darve kirin, JVM divê tiştên krîtîk ên ku bi wan re têkildar in neguhezîne da ku ji şert û mercên nijadê dûr bixe, berhevkirina çopê neçalak bike). Pînekirin tiştên krîtîk ji ber çavê berhevkarê çopê radike, ya ku dikare paqijkirina deverên nepînkirî bidomîne.
  • Taybetmendiyek pêşîn hate zêdekirin da ku rê bide diyar kirin ku di çêkeran de berî gazîkirina super(...), tê bikar anîn ku bi eşkere gazî çêkerek çîna dêûbav ji çêkerek pola mîraskirî bike, ger ew biwêj nabêjin mînakek ku ji hêla çêker ve hatî afirandin. class Outer { void hello() { System.out.println("Silav"); } class Inner { Inner() { hello(); yekemxweş(); } }
  • FFM (Fonksiyon û Bîra Biyanî) API hatiye stabilîzekirin, ku rê dide danûstendina bernameyên Java bi kod û daneya derve re bi bangkirina fonksiyonên ji pirtûkxaneyên derveyî û gihîştina bîranîna li derveyî JVM, bêyî ku bikar bîne JNI (Navenda Native Java).
  • Piştgiriya ji bo guhêrbarên nenavkirî û lihevhatina nimûneyê hate çalak kirin - li şûna guhêrbar û qalibên nebikaranîn lê hewcedar dema bang kirin, hûn dikarin aniha karaktera "_" diyar bikin. // was String pageName = switch (rûpel) { case GitHubIssuePage(var url, var naveroka, var links, int issueNumber) -> "ISSUE #" + issueNumber; ...}; // niha tu dikarî String pageName = biguherînî (rûpel) { case GitHubIssuePage(_, _, _, int issueNumber) -> "ISSUE #" + issueNumber; };
  • Pêvekek pêşîn a Class-File API-ê ji bo parskirin, 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);
  • Karûbarên java bêyî berhevkirina van pelan ji hev veqetandî û bêyî mîhengkirina pergala çêkirinê, kapasîteya meşandina bernameyên Java-yê peyda dike, ku di forma gelek pelên kodê an pirtûkxaneyên pola pêş-komkirî de têne peyda kirin. Taybetmendiya nû meşandina bernameyên ku tê de koda çînên cihêreng di pelên cûda de têne veqetandin hêsantir dike. Prog.java: class Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("Silav!"); } }

    Mînakî, ji bo meşandina bernameyek ku ji du pelên "Prog.java" û "Helper.java" pêk tê, niha bes e ku meriv "java Prog.java" bixebite, ku dê çîna Prog berhev bike, referansek ji çîna Alîkarî re diyar bike. pelê Helper java bibînin û berhev bikin û rêbaza sereke bang bikin.

  • Pêvekek pêşîn a duyemîn a Şablonên String zêde kir, ku ji bilî rêzikên rêzikan û blokên nivîsê hatî bicîh kirin. Şablonên rêzikê dihêle hûn bêyî ku operatora + bikar bînin nivîsê bi biwêj û guhêrbarên hesabkirî re bikin yek. Veguheztina biwêjan bi karanîna veguheztinên \{..} pêk tê, û rêvebirên taybetî dikarin werin girêdan da ku rastbûna nirxên cîgir kontrol bikin. Mînakî, motora SQL nirxên ku di koda SQL de têne veguheztin kontrol dike û tiştek java.sql.Statement wekî encam vedigerîne, dema ku pêvajoya JSON rastbûna veguheztinên JSON dişopîne û JsonNode vedigerîne. String query = "HILBIJARTIN * JI KESÊ P WHERE p." + milk + " = '" + nirx + "'"; // bû Daxuyaniya pirsê = SQL."""HILBIJARTIN * JI Kesê p WHERE p.\{property} = '\{nirx}'"""; // bû
  • Pêşniyarek heftemîn a Vector API hate zêdekirin, 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 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.
  • Pêvekek pêşî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 veguheztina daneya xwestî 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]]
  • Guhertoyek duyemîn a API-ya ceribandinê ya ji bo Hevrêziya Structured ji bo ceribandinê hatîye pêşniyar kirin, ku pêşkeftina serîlêdanên pir-tehlî hêsan dike bi hilgirtina gelek karên ku di mijarên cihêreng de wekî blokek yekane têne darve kirin.
  • Pêvekek pêşîn a duyemîn a çînên nepenî yên diyarkirî û mînakên nenavkirî yên rêbaza "serekî" 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êvekek pêşdîtina duyemîn a Nirxên Scoped zêde kir, ku dihêle daneyên neguhêrbar li ser mijaran werin parve kirin û daneyên bi bandor di navbera têlê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.
  • Berhevkarê çopê Parallel dema ku bi rêzikên mezin ên tiştan re dixebite performansa çêtir kiriye. Optimîzasyonê di hin ceribandinan de bi rêzikên mezin ên hêmanan de îmkan da ku derengiyê kêm bike berî ku dest bi lêgerîna tiştekê 20%.

Wekî din, hûn dikarin weşandina nûvekirinek platformê ji bo afirandina serîlêdanên bi navgînek grafîkî JavaFX 22 bi bîr bînin.

Source: opennet.ru

Add a comment