Ar Γ΄l chwe mis o ddatblygu, mae Oracle wedi rhyddhau Java SE 25 (Java Platform, Standard Edition 24), sy'n defnyddio'r prosiect ffynhonnell agored OpenJDK fel ei weithrediad cyfeirio. Ac eithrio cael gwared ar rai nodweddion sydd wedi darfod, mae Java SE 25 yn cynnal cydnawsedd Γ΄l-Γ΄l Γ’ datganiadau blaenorol o blatfform Javaβbydd y rhan fwyaf o brosiectau Java a ysgrifennwyd yn flaenorol yn rhedeg heb eu newid wrth redeg o dan y fersiwn newydd. Mae adeiladau parod i'w gosod o Java SE 25 (JDK, JRE, a Server JRE) wedi'u paratoi ar gyfer Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Wedi'i ddatblygu gan y prosiect OpenJDK, mae gweithrediad cyfeirio Java SE 25 yn gwbl ffynhonnell agored o dan y drwydded GPLv2 gyda'r Eithriad GNU ClassPath, sy'n caniatΓ‘u cysylltu deinamig Γ’ chynhyrchion masnachol.
Mae Java SE 25 yn fersiwn gymorth estynedig, gyda diweddariadau'n parhau tan 2033 (ar gael yn gyffredinol tan fis Medi 2030). Bydd Java SE 17 a 21 hefyd yn parhau i gael eu cefnogi fel canghennau cymorth hirdymor (LTS), gyda diweddariadau'n parhau tan 2029 a 2031, yn y drefn honno (ar gael yn gyffredinol tan 2026 a 2028). Bydd cymorth estynedig ar gyfer canghennau LTS Java SE 8 ac 11 yn parhau tan 2030 a 2032.
Ymhlith y 25 nodwedd newydd a gynigiwyd yn Java SE (1, 2, 3, 4):
- Ychwanegwyd API StableValue arbrofol ar gyfer gweithio gyda gwrthrychau sy'n cynnwys data na ellir ei newid ac sy'n cael eu trin fel cysonion yn y JVM. Mae optimeiddiadau perfformiad tebyg i'r rhai ar gyfer meysydd gyda'r allweddair "terfynol" yn cael eu cymhwyso i wrthrychau o'r fath. Mae'r API StableValue yn gwahanu creu gwerthoedd cyson oddi wrth eu cychwyn, yn sicrhau mai dim ond unwaith y gellir cychwyn gwerth, yn lleihau amser cychwyn rhaglen, ac yn galluogi optimeiddiadau plygu cyson a ddefnyddiwyd yn flaenorol mewn cod mewnol JDK yn unig i gael eu cymhwyso i god defnyddiwr. class Application { // Cyn: // static final UserService USERS = new UserService(); // Nawr: static final StableValue DEFNYDDWYR = StableValue.of(); public staticDefnyddiwrService users() { return DEFNYDDWYR.orElseSet(DefnyddiwrService::new); } }
- Ychwanegwyd API arbrofol ar gyfer amgodio a datgodio gwrthrychau gydag allweddi cryptograffig, tystysgrifau, a rhestrau dirymu tystysgrifau gan ddefnyddio'r fformat PEM (Pivacy-Enhanced Mail).
- Ychwanegwyd cefnogaeth ar gyfer gwerthoedd cwmpasog, gan ganiatΓ‘u rhannu data na ellir ei newid ar draws edafedd a chyfnewid data yn effeithlon rhwng edafedd plant (etifeddir gwerthoedd). Mae gwerthoedd cwmpasog wedi'u cynllunio i ddisodli newidynnau lleol-edafedd ac maent yn fwy effeithlon wrth ddefnyddio nifer fawr iawn o edafedd rhithwir (miloedd neu filiynau o edafedd). Y prif wahaniaeth rhwng gwerthoedd cwmpasog a newidynnau lleol-edafedd yw eu bod yn cael eu hysgrifennu unwaith, na ellir eu haddasu, ac maent yn parhau ar gael dim ond am hyd gweithrediad yr edafedd.
- Ychwanegwyd API ar gyfer defnyddio ffwythiannau deillio allweddi cryptograffig (KDFs), sy'n caniatΓ‘u cynhyrchu allweddi ychwanegol o'r hyd gofynnol yn seiliedig ar allwedd gyfrinachol (e.e., cyfrinair) a set ddata mympwyol.
- Mae cod a sgriptiau adeiladu ar gyfer cefnogi systemau x32 86-bit wedi'u dileu. Mae dileu cefnogaeth ar gyfer systemau x32 86-bit wedi symleiddio'r seilwaith adeiladu a phrofi JDK ac wedi ei gwneud hi'n bosibl gweithredu nodweddion penodol i'r platfform heb greu trinwyr wrth gefn ar gyfer systemau x32 86-bit.
- Ychwanegwyd y gallu i ddefnyddio un datganiad "import module M" i fewnforio pob pecyn a allforir gan fodiwl penodol. Mae'r newid hwn yn symleiddio ailddefnyddio llyfrgelloedd modiwlaidd yn sylweddol, gan ganiatΓ‘u i lyfrgelloedd a dosbarthiadau gael eu cynnwys heb nodi eu safle yn hierarchaeth y pecynnau. Er enghraifft, bydd nodi "import module java.base" yn mewnforio pob un o'r 54 pecyn sydd wedi'u cynnwys yn y modiwl java.base, a fyddai wedi gofyn am gyfeiriadau unigol o'r blaen ("import java.io.*," "import java.util.*," ac ati).
- Cynigir dull fformatio rhaglen gryno a allai fod yn ddefnyddiol ar gyfer dysgu a datblygu cymwysiadau bach. Mae'r fformat cryno yn dileu'r angen i ddiffinio dosbarthiadau diangen, yn mewnforio APIs safonol yn awtomatig, ac yn darparu dulliau mewnbwn/allbwn symlach. Er enghraifft, gellir lleihau'r cymhwysiad "Helo, Byd!" i: void main() { IO.println("Helo, Byd!"); }
- Caniateir mynegiadau mewn adeiladwyr cyn y galwad i super(β¦) a ddefnyddir i alw adeiladwr dosbarth rhiant yn benodol o fewn adeiladwr dosbarth deilliedig, cyn belled nad yw'r mynegiadau hynny'n cyfeirio at yr achos sy'n cael ei greu gan yr adeiladwr. class Outer { void hello() { System.out.println("Helo"); } class Inner { Inner() { hello(); super(); } } }
- Mae modd casglu sbwriel cynhyrchiol wedi'i ychwanegu ar gyfer casglwr sbwriel Shenandoah, sy'n prosesu gwrthrychau hen a rhai a grΓ«wyd yn ddiweddar ar wahΓ’n i wella effeithlonrwydd casglu gwrthrychau byrhoedlog. Mae'r modd newydd hwn yn darparu trwybwn mwy rhagweladwy, gwydnwch i amrywiadau llwyth, a llai o ddefnydd cof yn ystod casglu sbwriel. Nod amserlennwr Shenandoah yw lleihau amser segur yn ystod casglu sbwriel trwy gyflawni mwy o waith ochr yn ochr Γ’ gweithredu cymhwysiad Java.
- Mae llwytho dosbarthiadau Blaen-Amser a chysylltu creu storfa wedi'i symleiddio, gan gyflymu cychwyn HotSpot JVM trwy ddefnyddio dosbarthiadau sydd eisoes wedi'u llwytho a'u cysylltu. Nid oes angen gweithrediadau ar wahΓ’n ar gyfer cofnodi gweithgaredd a chreu'r storfa wrth gychwyn mwyach; mae un gorchymyn yn ddigonol: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App β¦
- Wrth gychwyn y HotSpot Java VM, mae'r gallu i ddefnyddio proffiliau gweithredu dulliau a gafwyd yn ystod lansiad blaenorol y rhaglen wedi'i weithredu. Mae'r newid hwn yn caniatΓ‘u i'r crynhoydd JIT osgoi cronni ystadegau a dechrau cynhyrchu cod brodorol ar unwaith heb aros i'r proffil gael ei gynhyrchu.
- Mae'r HotSpot JVM yn gweithredu cefnogaeth ar gyfer penawdau gwrthrych cryno, y mae eu maint ar systemau 64-bit wedi'i leihau o 96 i 64 bit (o 12 i 8 beit). Mae lleihau maint y pennawd yn lleihau maint y pentwr ac yn gwella effeithlonrwydd y storfa.
- Cynigir gweithrediad prawf o'r API Fector. Mae'n darparu swyddogaethau ar gyfer cyfrifiadau fector a gyflawnir gan ddefnyddio cyfarwyddiadau fector prosesydd x86_64 ac AArch64 ac yn caniatΓ‘u gweithredu ar yr un pryd ar werthoedd lluosog (SIMD). Yn wahanol i awto-fectoreiddio gweithrediadau sgalar y crynhoydd HotSpot JIT, mae'r API newydd yn caniatΓ‘u rheolaeth benodol dros fectoreiddio ar gyfer prosesu data cyfochrog.
- Mae pumed drafft yr API Cyfochredd Strwythuredig, sy'n symleiddio datblygiad cymwysiadau aml-edau trwy drin tasgau lluosog sy'n rhedeg ar wahanol edafedd fel un uned, wedi'i ryddhau i'w brofi.
- Mae'r peiriant paru patrymau yn cyflwyno trydydd drafft o'r nodwedd i ganiatΓ‘u defnyddio mathau cyntefig (int, byte, char, a mathau sylfaen eraill nad ydynt yn wrthrychau) ym mhob math o dempledi, y gweithredwr instanceof, a blociau switch. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { β¦ b β¦ }
- Mae JDK Flight Recorder (JFR) yn ychwanegu cefnogaeth proffilio arbrofol gyda olrhain mwy cywir o ddefnydd adnoddau CPU ar y platfform. LinuxGellir dangos gwybodaeth am amser gweithredu gwahanol strwythurau yn glir gan ddefnyddio diagramau lliw FlameGraph.
- Sefydlogrwydd gwell i JDK Flight Recorder (JFR) wrth samplu pentyrrau edau Java yn anghydamserol trwy groesi'r pentwr galwadau mewn mannau diogel yn unig.
- Mae Cofnodwr Hedfan JDK (JFR) wedi'i ddiweddaru gyda galluoedd olrhain ac amseru dulliau newydd. Mae'n cefnogi olrhain pentwr galwadau dulliau penodol a chofnodi ystadegau galwadau dull manwl gywir, gan gwmpasu metrigau fel amser gweithredu a chyfrif galwadau.
Ffynhonnell: opennet.ru
