Java SE 17 berdan

Piştî şeş mehên pêşveçûnê, Oracle platforma Java SE 17 (Java Platform, Edition Standard 17) derxist, ku projeya çavkaniya vekirî OpenJDK wekî pêkanîna referansê bikar tîne. Ji xeynî rakirina hin taybetmendiyên paşverû, Java SE 17 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 17 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 17 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 17 wekî serbestberdana Piştgiriya Demdirêj (LTS) tê dabeş kirin, ku dê heya sala 2029-an nûvekirinan bidomîne. Nûvekirinên ji bo serbestberdana berê ya Java 16-ê hatine sekinandin. Şaxa LTS ya berê ya Java 11 dê heya 2026-ê were piştgirî kirin. Serbestberdana LTS ya paşîn ji bo Îlona 2024-an tê plansaz kirin. 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 17 de ev in:

  • Pêkanîna ezmûnî ya hevberdana nimûneyê di biwêjên "guhêrbar" de tê pêşniyar kirin, ku destûrê dide karanîna ne nirxên rast di etîketên "doz" de, lê şablonên maqûl ên ku di carekê de rêzek nirxan vedihewîne, ji bo ku berê hewce bû ku meriv giran bikar bîne. zincîrên biwêjên "eger... dî". Digel vê yekê, "veguheztin" xwedan şiyana birêvebirina nirxên NULL ye. Objekt o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("dirêj %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Piştgiriya stabîlkirî ji bo çîn û navgînên mohrkirî, yên ku ji hêla çîn û navgînên din ve nayên bikar anîn da ku mîras, dirêjkirin, an jinavbirina pêkanînê. Di heman demê de çînên mohrkirî rêgezek diyarkertir peyda dikin da ku karanîna superclass ji guhêrbarên gihîştinê sînordar bike, li ser bingeha eşkere navnîşkirina jêr-classên ku ji bo dirêjkirinê têne destûr kirin. pakêt com.example.geometry; çîna mohrkirî ya giştî Destûrên şeklê com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Pêşniyarek duyemîn a Vector API tê pêşniyar kirin, ku fonksiyonên ji bo hesabên vektorê yên ku bi karanîna rêwerzên vektorê 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.
  • Pêşdîtinek API-ya Fonksiyon û Bîra Biyanî lê zêde kir, ku dihêle serîlêdan bi kod û daneya li derveyî dema xebitandina Java re têkilî daynin. API-ya nû dihêle hûn bi bandor bangî fonksiyonên ne-JVM bikin û bigihîjin bîra ne-JVM-rêvebir. Mînakî, hûn dikarin fonksiyonên ji pirtûkxaneyên hevpar ên derveyî bang bikin û bêyî karanîna JNI bigihîjin daneyên pêvajoyê.
  • Motora danûstendinê ya macOS-ê ku Java 2D API-yê hêzdar dike, ku di encamê de Swing API-yê hêzdar dike, hate adaptekirin ku API-ya grafikên Metal bikar bîne. Platforma macOS-ê ji hêla xwerû ve karanîna OpenGL-ê didomîne, û ji bo çalakkirina piştgiriya Metal pêdivî ye ku "-Dsun.java2d.metal=true" were danîn û bi kêmî ve macOS 10.14.x were xebitandin.
  • Ji bo platforma macOS/AArch64 (komputerên Apple li ser bingeha çîpên nû yên Apple M1) portek zêde kir. Taybetmendiyek taybetî ya portê piştgirî ji bo mekanîzmaya parastina bîranîna W^X (Write XOR Execute) ye, ku tê de rûpelên bîranînê ji bo nivîsandin û darvekirinê hevdem nayên gihîştin. (kod tenê piştî ku nivîsandin neçalak bibe dikare were darve kirin, û nivîsandina li ser rûpelek bîranînê tenê piştî ku darvekirin neçalak dibe gengaz e).
  • Vegere ku tenê semantîka hişkfp ji bo bilêvkirinên xala herikîn bikar bîne. Piştgiriya ji bo semantîka "default", ku ji serbestberdana Java 1.2 ve heye, hate sekinandin, di nav de hêsankirinên ji bo xebitandina pergalên bi hevprosesorên matematîkî yên pir kevn ên x87 (piştî hatina rêwerzên SSE2, hewcedariya semantîkên zêde ji holê rabû).
  • Cûreyên nû yên navbeynkariyê ji afirînerên hejmarên pseudorandom re hatine bicîh kirin, û algorîtmayên din jî ji bo hilberîna çêtirîn hejmarên çawalêhato hatine bicîh kirin. Ji serlêdanan re derfet tê dayîn ku algorîtmayek ji bo hilberîna hejmarên pseudorandom hilbijêrin. Piştgiriya pêşkeftî ji bo hilberîna herikên tiştên rasthatî.
  • Pêkûpêkkirina hişk a hemî hundurên JDK-ê, ji bilî API-yên krîtîk ên wekî sun.misc.Unsafe. Veguheztina hişk hewildanên kodê ji bo gihîştina çîn, rêbaz û zeviyên hundurîn asteng dike. Berê, bi karanîna vebijarka "--illlegal-access=destûr" dikaribû moda dorpêçkirina hişk were neçalak kirin, lê ev nuha hate betal kirin. Serlêdanên ku hewcedariya wan bi gihandina çînên hundurîn, rêbaz û zeviyan heye divê bi eşkere wan bi karanîna vebijarka --add-opens an jî taybetmendiya Add-Opens di pelê manifest de diyar bikin.
  • Ji sepanan re şiyana danasîna fîlterên deserialîzasyona daneyê tê dayîn, ku dikarin li ser bingeha operasyonên deserialîzasyonê yên taybetî hesas bin û dînamîkî werin hilbijartin. Parzûnên diyarkirî ji bo tevahiya makîneya virtual (JVM-wide), yanî. ne tenê serîlêdanê bixwe, lê di heman demê de pirtûkxaneyên sêyemîn ên ku di serîlêdanê de têne bikar anîn jî vedigire.
  • Swing rêbaza javax.swing.filechooser.FileSystemView.getSystemIcon zêde kiriye da ku îkonên mezin bar bike da ku UI li ser ekranên DPI-ya Bilind baştir bike.
  • java.net.DatagramSocket API ji bo girêdana bi komên Multicast re bêyî hewcedariya java.net.MulticastSocket API-ya cihê piştgirî dide.
  • Karsaziya IGV (Ideal Graph Visualizer) hate çêtir kirin, ku di berhevkarê HotSpot VM C2 JIT de dîmenek înteraktîf ya nûneriya koda navîn peyda dike.
  • Di JavaDoc de, ji hêla berhevkarê javac-ê ve, dema ku xeletiyek derdikeve, hêjmara xeta pirsgirêkê ya di pelê çavkaniyê de û cîhê xeletiyê nuha têne destnîşan kirin.
  • Taybetmendiya native.encoding lê zêde kir, ku navê kodkirina karaktera pergalê (UTF-8, koi8-r, cp1251, hwd.) nîşan dide.
  • Navbera java.time.InstantSource hate zêdekirin, ku destûrê dide manîpulasyona demê bêyî referansa li herêmek demjimêrê.
  • java.util.HexFormat API-ê ji bo veguhertina nûneriya hexadecimal û berevajî vê yekê zêde kir.
  • Modek reşholê li berhevkerê hate zêdekirin, ku operasyonên rakirina koda mirî asteng dike, ku dikare dema ceribandinên performansê were bikar anîn.
  • Vebijarka "-Xlog:async" li Runtime zêde kir da ku têketin di moda asynkron de tomar bike.
  • Dema ku girêdanên ewledar têne damezrandin, TLS 1.3 ji hêla xwerû ve tê çalak kirin (berê TLS 1.2 dihat bikar anîn).
  • API-ya Applet a berê ya berê hatî ragihandin (java.applet.Applet*, javax.swing.JApplet), ku ji bo xebitandina sepanên Java-yê di geroka gerokê de dihat bikar anîn, hate veguheztin bo kategoriya ku ji bo rakirinê hatî destnîşan kirin (peywendiya xwe winda kir piştî bidawîbûna piştgirîyê ji bo pêveka Java ji bo gerokan).
  • Rêvebirê Ewlekariyê, ku ji mêj ve têkildariya xwe winda kiriye û piştî bidawîbûna piştgirîya ji bo pêveka geroka gerokê re nayê îdîakirin, hate veguheztin nav kategoriya yên ku ji bo rakirinê hatine plansaz kirin.
  • Mekanîzmaya Çalakkirina RMI hate rakirin, ku kevnar e, di kategoriya vebijarkek Java 8-ê de hatî veguheztin û di pratîka nûjen de hema qet nayê bikar anîn.
  • Berhevkarek ezmûnî ku JIT (tenê-di-dem) piştgirî dike ji bo berhevkirina dînamîkî ya koda Java-yê ji bo HotSpot JVM, û her weha awayê berhevkirina pêşbînîkirî (AOT, pêş-dem) dersên nav koda makîneyê berî destpêkirina makîneya virtual. , ji SDKê hatiye derxistin. Berhevkar bi Java û li ser bingeha xebata projeya Graal hate nivîsandin. Tê destnîşan kirin ku lênihêrîna berhevker gelek ked hewce dike, ku dema ku daxwazek ji pêşdebiran tune be rastdar nabe.

Source: opennet.ru

Add a comment