Rhyddhad Java SE 18

Ar ôl chwe mis o ddatblygiad, mae Oracle wedi rhyddhau platfform Java SE 18 (Java Platform, Standard Edition 18), sy'n defnyddio prosiect ffynhonnell agored OpenJDK fel gweithrediad cyfeirio. Ac eithrio dileu rhai nodweddion anghymeradwy, mae Java SE 18 yn cynnal cydnawsedd yn ôl â datganiadau blaenorol y platfform Java - bydd y rhan fwyaf o brosiectau Java a ysgrifennwyd yn flaenorol yn dal i weithio heb eu haddasu pan fyddant yn cael eu rhedeg o dan y fersiwn newydd. Mae adeiladau gosodadwy o Java SE 18 (JDK, JRE, a Server JRE) yn cael eu 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 18 yn ffynhonnell agored lawn o dan y drwydded GPLv2 gydag eithriadau GNU ClassPath i ganiatáu cysylltu deinamig â chynhyrchion masnachol.

Mae Java SE 18 wedi'i gategoreiddio fel datganiad cymorth rheolaidd, gyda diweddariadau i'w rhyddhau cyn y datganiad nesaf. Dylai'r gangen Cymorth Hirdymor (LTS) fod yn Java SE 17, a fydd yn derbyn diweddariadau tan 2029. Dwyn i gof bod y prosiect, gan ddechrau gyda rhyddhau Java 10, wedi newid i broses ddatblygu newydd, sy'n awgrymu cylch byrrach ar gyfer ffurfio datganiadau newydd. Mae swyddogaethau newydd bellach yn cael eu datblygu mewn un brif gangen sy'n cael ei diweddaru'n gyson, sy'n ymgorffori newidiadau sydd eisoes wedi'u cwblhau ac y caiff canghennau eu canghennu bob chwe mis ohoni i sefydlogi datganiadau newydd.

Mae nodweddion newydd yn Java 18 yn cynnwys:

  • Yr amgodio rhagosodedig yw UTF-8. Bydd Java APIs sy'n prosesu data testun yn seiliedig ar amgodio nodau nawr yn defnyddio UTF-8 yn ddiofyn ar bob platfform, waeth beth fo gosodiadau'r system a gosodiadau locale. I ddychwelyd i'r hen ymddygiad, lle dewisir yr amgodio yn seiliedig ar locale y system, gallwch ddefnyddio'r opsiwn "-Dfile.encoding=COMPAT".
  • Mae'r pecyn yn cynnwys y pecyn com.sun.net.httpserver, sy'n cynnwys y cyfleustodau jwebserver a API llyfrgell gyda gweithredu gweinydd http syml ar gyfer gwasanaethu cynnwys statig (CGI a thrinwyr tebyg i servlet ni chefnogir). Nid yw'r gweinydd HTTP adeiledig wedi'i optimeiddio ar gyfer llwythi gwaith ac nid yw'n cefnogi rheoli mynediad a dilysu, gan ei fod wedi'i anelu'n bennaf at ei ddefnyddio yn y broses ddatblygu ar gyfer prosiectau prototeipio, dadfygio a phrofi.
  • Mae JavaDoc yn darparu cefnogaeth i'r tag "@snippet" i wreiddio enghreifftiau gweithredol a phytiau cod i ddogfennaeth API, lle gallwch ddefnyddio offer dilysu, amlygu cystrawen, ac integreiddio IDE.
  • Mae gweithrediad java.lang.reflect API (Myfyrdod Craidd), a gynlluniwyd i gael gwybodaeth am ddulliau, meysydd a llunwyr dosbarth, yn ogystal â mynediad i strwythur mewnol dosbarthiadau, wedi'i ailgynllunio. Mae'r API java.lang.reflect ei hun yn parhau heb ei newid, ond mae bellach yn cael ei weithredu gan ddefnyddio dolenni dull a ddarperir gan y modiwl java.lang.invoke, yn lle defnyddio generaduron bytecode. Roedd y newid yn ein galluogi i uno gweithrediadau java.lang.reflect a java.lang.invoke, a symleiddio eu cynnal.
  • Mae trydydd rhagolwg o'r Vector API wedi'i gynnig, gan ddarparu swyddogaethau ar gyfer cyfrifiadau fector sy'n cael eu gweithredu gan ddefnyddio cyfarwyddiadau fector ar broseswyr x86_64 ac AArch64 a chaniatáu i weithrediadau gael eu cymhwyso ar yr un pryd i werthoedd lluosog (SIMD). Yn wahanol i'r galluoedd a ddarperir yn y casglwr HotSpot JIT ar gyfer auto-fectoreiddio gweithrediadau sgalar, mae'r API newydd yn ei gwneud hi'n bosibl rheoli fectoreiddio yn benodol ar gyfer prosesu data cyfochrog.
  • Ychwanegwyd rhyngwyneb SPI (rhyngwyneb darparwr gwasanaeth) ar gyfer datrys enwau gwesteiwr a chyfeiriadau IP, sy'n eich galluogi i ddefnyddio datrysiadau amgen yn java.net.InetAddress nad ydynt yn gysylltiedig â thrinwyr a gynigir gan y system weithredu.
  • Darperir ail ragolwg o'r API Swyddogaeth a Chof Tramor, sy'n caniatáu i gymwysiadau ryngweithio â chod a data y tu allan i amser rhedeg Java. Mae'r API newydd yn caniatáu ichi alw swyddogaethau nad ydynt yn JVM yn effeithlon a chael mynediad at gof nad yw'n cael ei reoli gan JVM. Er enghraifft, gallwch ffonio swyddogaethau o lyfrgelloedd a rennir allanol a chael mynediad at ddata proses heb ddefnyddio JNI.
  • Mae ail weithrediad arbrofol o baru patrymau mewn ymadroddion “switsh” wedi'i ychwanegu, gan ganiatáu defnyddio patrymau hyblyg mewn labeli “achos” yn hytrach na gwerthoedd union, gan gwmpasu cyfres o werthoedd ar unwaith, y bu'n rhaid eu defnyddio yn flaenorol. cadwyni beichus o ymadroddion “os...arall”. Gwrthrych o = 123L; String formatted = switsh (o) { achos Cyfanrif i -> String.format ("int %d", i); cas Hir l -> String.format ("hir %d", l); cas Dwbl d -> String.format("dwbl %f", d); case String s -> String.format("Llinyn %s", s); rhagosodedig -> o.toString(); };
  • Mae'r mecanwaith cwblhau a'i ddulliau cysylltiedig megis Object.finalize(), Enum.finalize(), Runtime.runFinalization() a System.runFinalization() wedi'u anghymeradwyo a byddant yn cael eu hanalluogi mewn datganiad yn y dyfodol.
  • Mae casglwyr sbwriel ZGC (Z Garbage Collector), SerialGC, a ParallelGC yn cefnogi dad-ddyblygu rhes.

Ffynhonnell: opennet.ru

Ychwanegu sylw