Itusilẹ ti Syeed Java SE 22 ati OpenJDK 22 imuse itọkasi ṣiṣi

Lẹhin oṣu mẹfa ti idagbasoke, Oracle ti tu Java SE 22 (Java Platform, Standard Edition 22) Syeed, eyiti o nlo iṣẹ orisun ṣiṣi OpenJDK gẹgẹbi imuse itọkasi. Yatọ si yiyọkuro diẹ ninu awọn ẹya ti a ti sọ tẹlẹ, Java SE 22 n ṣetọju ibaramu sẹhin pẹlu awọn idasilẹ iṣaaju ti pẹpẹ Java — awọn iṣẹ akanṣe Java ti a kọ tẹlẹ yoo tun ṣiṣẹ laisi iyipada nigbati o ba ṣiṣẹ labẹ ẹya tuntun. Awọn ipilẹ fifi sori ẹrọ ti Java SE 22 (JDK, JRE, ati Server JRE) ti pese sile fun Linux (x86_64, AArch64), Windows (x86_64), ati macOS (x86_64, AArch64). Ti dagbasoke nipasẹ iṣẹ akanṣe OpenJDK, imuse itọkasi Java 22 jẹ orisun ṣiṣi ni kikun labẹ iwe-aṣẹ GPLv2 pẹlu awọn imukuro GNU ClassPath lati gba ọna asopọ agbara si awọn ọja iṣowo.

Java SE 22 jẹ ipin bi itusilẹ atilẹyin deede ati pe yoo tẹsiwaju lati gba awọn imudojuiwọn titi di itusilẹ atẹle. Ẹka Atilẹyin Igba pipẹ (LTS) yẹ ki o jẹ Java SE 21 tabi Java SE 17, eyiti yoo gba awọn imudojuiwọn titi di 2031 ati 2029, lẹsẹsẹ (gbogbo wa titi di 2028 ati 2026). Atilẹyin gbogbo eniyan fun ẹka LTS ti Java SE 11 pari ni Oṣu Kẹsan to kọja, ṣugbọn atilẹyin ti o gbooro yoo tẹsiwaju titi di ọdun 2032. Atilẹyin ti o gbooro fun ẹka LTS ti Java SE 8 yoo tẹsiwaju titi di ọdun 2030.

Jẹ ki a leti pe bẹrẹ pẹlu itusilẹ ti Java 10, iṣẹ akanṣe naa yipada si ilana idagbasoke tuntun kan, ti o tumọ si ọna kukuru fun dida awọn idasilẹ tuntun. Iṣẹ ṣiṣe tuntun ti ni idagbasoke ni ẹka titunto si imudojuiwọn nigbagbogbo, eyiti o pẹlu awọn ayipada ti a ti ṣetan ati lati eyiti awọn ẹka ti wa ni ẹka ni gbogbo oṣu mẹfa lati mu awọn idasilẹ titun duro.

Awọn ẹya tuntun ni Java 22 pẹlu:

  • Akojo idoti G1 pẹlu atilẹyin fun pinni agbegbe, eyiti o fun ọ laaye lati ṣatunṣe ipo awọn nkan Java fun igba diẹ ni iranti lati yago fun gbigbe wọn nipasẹ agbowọ idoti ati lati gba awọn itọkasi si awọn nkan wọnyi lati kọja lailewu laarin Java ati koodu abinibi. Pinning gba ọ laaye lati dinku airi ati yago fun piparẹ ikojọpọ idoti nigbati o ba n ṣiṣẹ awọn agbegbe pataki ti JNI (Interface Java abinibi) pẹlu koodu abinibi (lakoko ti o n ṣiṣẹ awọn apakan wọnyi, JVM ko yẹ ki o gbe awọn nkan pataki ti o ni nkan ṣe pẹlu wọn lati yago fun awọn ipo ere-ije). Pinning yọ awọn nkan to ṣe pataki kuro ni wiwo ti agbodọti, eyiti o le tẹsiwaju lati nu awọn agbegbe ti a ko pin mọ.
  • Ẹya alakoko kan ti ṣafikun lati gba awọn ikosile laaye lati sọ ni pato ninu awọn olupilẹṣẹ ṣaaju pipe Super (...), ti a lo lati pe olukọ kilasi ni gbangba lati oluṣe kilaasi jogun ti awọn ọrọ yẹn ko ba tọka si apẹẹrẹ ti a ṣẹda nipasẹ oluṣe. kilasi Lode { ofo hello () {System.out.println ("Hello"); } kilasi Inner {Inu () {helo (); Super (); } }
  • FFM (Iṣẹ Ajeji & Iranti) API ti ni imuduro, gbigba ibaraenisepo ti awọn eto Java pẹlu koodu ita ati data nipa pipe awọn iṣẹ lati awọn ile-ikawe ita ati iwọle si iranti ni ita JVM, laisi lilo si lilo JNI (Interface Native Java).
  • Atilẹyin fun awọn oniyipada ti a ko darukọ ati ibaamu ilana ti ṣiṣẹ - dipo ti a ko lo ṣugbọn awọn oniyipada pataki ati awọn ilana nigba pipe, o le pato ohun kikọ “_” ni bayi. // je Okun pageName = yipada (oju-iwe) { irú GitHubIssuePage (var url, var akoonu, var links, int issueNumber) -> "ISSUE #" + issueNumber; ...}; // bayi o le Okun pageName = yipada (oju-iwe) { case GitHubIssuePage(_, _, _, int issueNumber) -> "ISSUE #" + issueNumber; };
  • Imuse alakoko ti Kilasi-Faili API ti wa ni idamọran fun sisọ, ti ipilẹṣẹ, ati iyipada awọn faili kilasi Java. ClassFile cf = ClassFile.of (); ClassModel classModel = cf.parse (baiti); baiti [] newBytes = cf.build (classModel.thisClass () .asSymbol (), classBuilder -> {fun (ClassElement ce: classModel) {ti o ba ti (! (ce instanceof MethodModel mm && mm.methodName ().stringValue (). startsWith ("debug")) {classBuilder.with (ce);
  • IwUlO Java n pese agbara lati ṣiṣe awọn eto Java, ti a pese ni irisi awọn faili koodu pupọ tabi awọn ile-ikawe kilasi ti a ṣajọ tẹlẹ, laisi ikojọpọ awọn faili wọnyi lọtọ ati laisi atunto eto kikọ. Ẹya tuntun jẹ ki o rọrun lati ṣiṣe awọn eto ninu eyiti koodu ti awọn kilasi oriṣiriṣi ti pin si awọn faili lọtọ. Prog.java: kilasi Pirogi {gbangba aimi ofo akọkọ (okun[] args) { Helper.run (); } } Helper.java: Oluranlọwọ kilasi {aimi asan run () {System.out.println ("Hello!"); }}

    Fun apẹẹrẹ, lati ṣiṣẹ eto ti o ni awọn faili meji “Prog.java” ati “Helper.java” o ti to lati ṣiṣẹ “java Prog.java”, eyiti yoo ṣajọ kilasi Prog, ṣalaye itọkasi si kilasi Oluranlọwọ, wa ati ṣajọ faili Oluranlọwọ java ati pipe ọna akọkọ.

  • Ṣafikun imuse alakoko keji ti Awọn awoṣe Okun, ti a ṣe ni afikun si awọn ọrọ gangan okun ati awọn bulọọki ọrọ. Awọn awoṣe okun gba ọ laaye lati darapo ọrọ pọ pẹlu awọn ikosile iṣiro ati awọn oniyipada laisi lilo + oniṣẹ ẹrọ. Iyipada awọn ọrọ ti wa ni ṣiṣe ni lilo awọn iyipada \{..}, ati pe awọn oluṣakoso pataki le sopọ lati ṣayẹwo deede awọn iye ti o rọpo. Fun apẹẹrẹ, ẹrọ SQL ṣayẹwo awọn iye ti o rọpo sinu koodu SQL ati da ohun elo java.sql.Statement pada bi o ti wu jade, lakoko ti ero isise JSON n ṣe abojuto deede ti awọn iyipada JSON ati da JsonNode pada. Ìbéèrè okun = "Yan * LATI Ènìyàn p NIBI p." + ohun ini + " = '" + iye + "'"; // wà Ìbéèrè Gbólóhùn = SQL."""Yan * LATI Eniyan p NIBI p.\{property} = '\{iye}'"""; // di
  • Awotẹlẹ keje ti Vector API ti ṣafikun, pese awọn iṣẹ fun awọn iṣiro vector ti o ṣe ni lilo awọn ilana fekito lori x86_64 ati awọn ilana AArch64 ati gba awọn iṣẹ ṣiṣe ni akoko kanna si awọn iye pupọ (SIMD). Ko awọn agbara ti a pese ni HotSpot JIT alakojo fun auto-vectorization ti scalar mosi, titun API mu ki o ṣee ṣe lati ṣakoso awọn taara vectorization fun ni afiwe data processing.
  • A ti ṣafikun imuse alakoko ti API ṣiṣan ti o gbooro ti o ṣe atilẹyin asọye awọn iṣẹ agbedemeji tirẹ, eyiti o le wulo ni awọn ọran nibiti awọn iṣẹ agbedemeji ti a ṣe sinu tẹlẹ ko to fun iyipada data ti o fẹ. Awọn olutọju abinibi ti sopọ pẹlu lilo iṣẹ agbedemeji tuntun ṣiṣan :: apejo (Apejọ), eyiti o ṣe ilana awọn eroja ṣiṣan nipasẹ lilo oluṣakoso-pato olumulo si wọn. jshell> Ṣiṣan.ti (1,2,3,4,5,6,7,8,9) . kó (titun WindowFixed (3)) .toList () $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]
  • Ẹya keji ti API esiperimenta fun Concurrency Structured ti ni idamọran fun idanwo, eyiti o jẹ ki idagbasoke awọn ohun elo olona-asapo pọ si nipasẹ sisẹ awọn iṣẹ ṣiṣe lọpọlọpọ ti a ṣe ni oriṣiriṣi awọn okun bi bulọọki kan.
  • Ṣafikun imuse alakoko keji ti awọn kilasi ti a sọ ni gbangba ati awọn apẹẹrẹ ti a ko darukọ ti ọna “akọkọ”, eyiti o le pin kaakiri pẹlu awọn ikede gbangba/aimi, gbigbe awọn ariyanjiyan lọpọlọpọ, ati awọn nkan miiran ti o ni nkan ṣe pẹlu ikede kilasi kan. // je àkọsílẹ kilasi HelloWorld { àkọsílẹ aimi ofo akọkọ (Okun [] args) {System.out.println ("Hello aye!"); }} // bayi o le di ofo akọkọ () {System.out.println ("Hello, World!"); }
  • Ṣafikun imuse awotẹlẹ keji ti Awọn iye Scoped, gbigba data alaileyipada lati pin kaakiri awọn okun ati data paarọ daradara laarin awọn okun ọmọ (awọn iye ti jogun). Awọn iye iwọn ti wa ni idagbasoke lati rọpo ẹrọ oniyipada okun-agbegbe ati pe o munadoko diẹ sii nigba lilo awọn nọmba ti o tobi pupọ ti awọn okun foju (ẹgbẹẹgbẹrun tabi awọn miliọnu awọn okun). Iyatọ akọkọ laarin Awọn iye Scoped ati awọn oniyipada okun-agbegbe ni pe a kọ tẹlẹ ni ẹẹkan, ko le yipada ni ọjọ iwaju, ati pe o wa nikan fun iye akoko ipaniyan okun naa.
  • Akojọpọ idoti ti o jọra ti ni ilọsiwaju iṣẹ ṣiṣe nigbati o n ṣiṣẹ pẹlu awọn akojọpọ nla ti awọn nkan. Imudara jẹ ki o ṣee ṣe ni diẹ ninu awọn idanwo pẹlu ọpọlọpọ awọn ohun elo lati dinku idaduro ṣaaju ki o to bẹrẹ lati wa ohun kan nipasẹ 20%.

Ni afikun, o le ṣe akiyesi atẹjade imudojuiwọn kan si pẹpẹ fun ṣiṣẹda awọn ohun elo pẹlu wiwo ayaworan JavaFX 22.

orisun: opennet.ru

Fi ọrọìwòye kun