Java SE 16 lage

Apre sis mwa nan devlopman, Oracle lage Java SE 16 (Java Platform, Standard Edition 16), ki itilize pwojè OpenJDK kòm yon aplikasyon referans. Java SE 16 kenbe konpatibilite bak ak degaje anvan yo nan platfòm Java a; tout pwojè Java ki te ekri yo pral travay san chanjman lè yo te lanse anba nouvo vèsyon an. Pare-pou-enstale bati nan Java SE 16 (JDK, JRE ak sèvè JRE) yo prepare pou Linux (x86_64, AArch64), Windows ak macOS. Devlope pa pwojè OpenJDK la, aplikasyon referans Java 16 la se yon sous totalman louvri anba lisans GPLv2, ak eksepsyon GNU ClassPath ki pèmèt lyen dinamik ak pwodwi komèsyal yo.

Java SE 16 klase kòm yon lage sipò jeneral epi li pral kontinye resevwa mizajou jiska pwochen lage a. Branch Sipò Alontèm (LTS) ta dwe Java SE 11, ki pral kontinye resevwa mizajou jiska 2026. Pwochen piblikasyon LTS la pwograme pou septanm 2021. Se pou nou raple w ke kòmanse ak lage nan Java 10, pwojè a chanje nan yon nouvo pwosesis devlopman, ki vle di yon sik ki pi kout pou fòmasyon nan nouvo degaje. Nouvo fonksyonalite yo devlope kounye a nan yon sèl branch mèt toujou ap mete ajou, ki gen ladann chanjman ki pare yo epi ki soti nan ki branch yo branch chak sis mwa estabilize nouvo degaje.

Nan preparasyon pou nouvo lage a, devlopman te deplase soti nan sistèm kontwòl vèsyon Mercurial la nan Git ak platfòm devlopman kolaborasyon GitHub. Migrasyon an espere amelyore pèfòmans operasyon depo, ogmante efikasite depo, bay aksè a chanjman nan tout istwa pwojè a, amelyore sipò pou revizyon kòd, epi pèmèt API yo otomatize workflows. Anplis de sa, itilizasyon Git ak GitHub fè pwojè a pi atire pou débutan ak devlopè ki abitye ak Git.

Nouvo karakteristik nan Java 16 yo enkli:

  • Te ajoute modil eksperimantal jdk.incubator.vector ak yon aplikasyon Vector API, ki bay fonksyon pou kalkil vektè ki fèt lè l sèvi avèk enstriksyon vektè sou processeurs x86_64 ak AArch64 epi pèmèt operasyon yo aplike ansanm nan plizyè valè (SIMD). Kontrèman ak kapasite yo bay nan HotSpot JIT du pou oto-vectorization nan operasyon eskalè, nouvo API a pèmèt ou klèman kontwole vektorizasyon pou pwosesis done paralèl.
  • JDK ak VM HotSpot kòd ekri nan C++ gen dwa sèvi ak karakteristik prezante nan spesifikasyon C++14 la. Anvan sa, estanda C++ 98/03 yo te pèmèt.
  • ZGC (Z Garbage Collector), ki opere nan mòd pasif epi minimize reta akòz koleksyon fatra otank posib, te ajoute kapasite pou trete pil fil an paralèl san yo pa sispann fil aplikasyon an. ZGC a kounye a gen sèlman travay ki mande sispansyon, ki gen reta konstan, anjeneral, pa depase kèk santèn mikrosgond.
  • Te ajoute sipò pou sipò Unix (AF_UNIX) nan klas SocketChannel, ServerSocketChannel ak java.nio.channels.
  • Yo te aplike yon pò pou distribisyon Linux Alpine ak estanda C bibliyotèk musl, ki popilè nan anviwònman pou kontenè, mikwosèvis, nwaj ak sistèm entegre. Pò yo pwopoze a nan anviwònman sa yo pèmèt ou kouri pwogram Java tankou aplikasyon regilye. Anplis de sa, lè l sèvi avèk jlink, ou ka retire tout modil ki pa itilize yo epi kreye yon anviwònman minim ase pou kouri aplikasyon an, ki pèmèt ou kreye imaj kontra enfòmèl ant aplikasyon espesifik.
  • Mekanis Elastic Metaspace yo te aplike, optimize operasyon yo nan allocation ak retounen memwa okipe pa metadata klas (metaspace) nan JVM HotSpot. Itilizasyon Elastic Metaspace diminye fwagmantasyon memwa, redwi klas loader anlè, epi tou li gen yon efè benefik sou pèfòmans aplikasyon pou sèvè ki dire lontan akòz pi vit retounen nan memwa okipe pa metadata klas ki pa itilize nan sistèm operasyon an. Pou chwazi mòd lage memwa apre dechaje klas yo, opsyon "-XX:MetaspaceReclaimPolicy=(balanse|agresif|okenn)" yo ofri.
  • Yo te ajoute yon pò JDK pou sistèm Windows kouri sou pyès ki nan konpitè ak processeurs ki baze sou achitekti AArch64.
  • Yo pwopoze yon twazyèm aperçu Foreign-Memory Access API, ki pèmèt aplikasyon Java yo jwenn aksè nan rejyon memwa yo an sekirite ak efikasman andeyò pil Java a lè yo manipile nouvo abstraksyon MemorySegment, MemoryAddress ak MemoryLayout.
  • Yo te aplike yon eksperimantal Foreign Linker API, ki bay aksè nan Java nan kòd natif natal. Ansanm ak Foreign-Memory API, nouvo koòdone pwogramasyon an rann li pi fasil pou kreye anvlòp sou bibliyotèk pataje konvansyonèl yo.
  • Te ajoute sèvis piblik jpackage, ki pèmèt ou kreye pakè pou aplikasyon Java endepandan. Itilite a baze sou javapackager ki soti nan JavaFX epi li pèmèt ou kreye pakè nan fòma natif natal nan divès platfòm (msi ak ègzekutabl pou Windows, pkg ak dmg pou macOS, deb ak rpm pou Linux). Pake yo gen ladan tout depandans obligatwa yo.
  • Ankapsulasyon strik nan tout entèn JDK pèmèt pa default, ak eksepsyon de API kritik tankou sun.misc.Unsafe. Valè opsyon "--illegal-access" la kounye a mete sou "refize" olye pou yo "pèmi" pa default, ki pral bloke tantativ nan kòd pou jwenn aksè nan pifò klas, metòd ak jaden entèn yo. Pou kontoune restriksyon an, sèvi ak opsyon "-illegal-access=permit".
  • Aplikasyon an nan matche modèl nan "instanceof" operatè a te estabilize, ki pèmèt ou imedyatman defini yon varyab lokal pou refere a valè a tcheke. Pou egzanp, ou ka imedyatman ekri "si (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" san yo pa defini klèman "String s = (String) obj". Was: if (obj instanceof Group) { Group group = (Group) obj; var antre = group.getEntries(); } Koulye a, ou ka fè san yo pa defini "Gwoup group = (Group) obj": if (obj instanceof Group Group) { var entries = group.getEntries (); }
  • Aplikasyon mo kle "dosye" a te estabilize, bay yon fòm kontra enfòmèl ant pou definisyon klas ki elimine nesesite pou defini klèman divès metòd ki ba nivo tankou equals(), hashCode() ak toString() nan ka kote done yo estoke. sèlman nan jaden ak ki li pa chanje. Lè yon klas sèvi ak aplikasyon estanda equals(), hashCode() ak toString() metòd, li ka fè san yo pa definisyon eksplisit yo: dosye piblik BankTransaction(LocalDate dat, doub kantite, deskripsyon String) {}

    Deklarasyon sa a pral otomatikman ajoute aplikasyon equals(), hashCode() ak toString() metòd anplis metòd konstrukteur ak getter.

  • Yo pwopoze yon dezyèm bouyon pou klas sele ak koòdone ki pa ka itilize pa lòt klas ak koòdone pou eritye, pwolonje, oswa pase sou plas aplikasyon yo. Klas sele yo bay tou yon fason ki pi klè pou mete restriksyon sou itilizasyon yon sipèklas pase modifikasyon aksè, ki baze sou lis klèman sou klas yo pèmèt pou ekstansyon. pake com.example.geometry; klas piblik sele fòm pèmi kom.egzanp.polè.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Sous: opennet.ru

Add nouvo kòmantè