Нашри Java SE 16

Пас аз шаш моҳи таҳия, Oracle Java SE 16 (Platform Java, Edition Standard 16) -ро баровард, ки лоиҳаи OpenJDK-ро ҳамчун татбиқи истинод истифода мебарад. Java SE 16 мутобиқати қафоро бо версияҳои қаблии платформаи Java нигоҳ медорад; ҳама лоиҳаҳои қаблан навишташудаи Java ҳангоми оғоз кардани версияи нав бидуни тағир кор хоҳанд кард. Сохтаҳои омодаи насби Java SE 16 (JDK, JRE ва Server JRE) барои Linux (x86_64, AArch64), Windows ва macOS омода карда шудаанд. Татбиқи истинодҳои Java 16, ки аз ҷониби лоиҳаи OpenJDK таҳия шудааст, дар зери иҷозатномаи GPLv2 манбаи пурра кушода аст ва истисноҳои GNU ClassPath имкон медиҳад, ки пайванди динамикӣ бо маҳсулоти тиҷоратӣ имконпазир гардад.

Java SE 16 ҳамчун як нашри дастгирии умумӣ тасниф карда мешавад ва то нашри навбатӣ гирифтани навсозиро идома медиҳад. Филиали Дастгирии дарозмуддат (LTS) бояд Java SE 11 бошад, ки то соли 2026 навсозиро идома медиҳад. Нашри навбатии LTS моҳи сентябри соли 2021 ба нақша гирифта шудааст. Ёдовар мешавем, ки аз барориши Java 10 оғоз шуда, лоиҳа ба раванди нави рушд гузашт, ки давраи кӯтоҳтари ташаккули релизҳои навро дар назар дорад. Функсияҳои нав ҳоло дар як филиали устоди доимо навшаванда таҳия карда шудааст, ки тағйироти омодаро дар бар мегирад ва аз он шохаҳо ҳар шаш моҳ барои устувор кардани релизҳои нав шохаҳо ҷудо карда мешаванд.

Ҳангоми омодагӣ ба нашри нав, рушд аз системаи идоракунии версияи Mercurial ба Git ва платформаи рушди муштараки GitHub гузашт. Интизор меравад, ки муҳоҷир иҷрои амалиёти анборҳоро беҳтар созад, самаранокии нигаҳдории онро афзоиш диҳад, дастрасӣ ба тағиротро дар тӯли таърихи лоиҳа таъмин кунад, дастгирии баррасии кодро беҳтар созад ва API-ҳоро барои автоматикунонии ҷараёнҳои корӣ фароҳам орад. Илова бар ин, истифодаи Git ва GitHub лоиҳаро барои шурӯъкунандагон ва таҳиягарони ба Git одаткарда ҷолибтар мегардонад.

Хусусиятҳои нав дар Java 16 иборатанд аз:

  • Модули таҷрибавии jdk.incubator.vector бо татбиқи API Vector, ки функсияҳоро барои ҳисобҳои векторӣ таъмин мекунад, ки бо истифода аз дастурҳои векторӣ дар протсессори x86_64 ва AArch64 иҷро карда мешаванд ва имкон медиҳанд, ки амалиётҳо дар як вақт ба арзишҳои сершумор (SIMD) татбиқ карда шаванд. Баръакси қобилиятҳое, ки дар компилятори HotSpot JIT барои худкор-векторизатсияи амалиёти скалярӣ пешбинӣ шудаанд, API-и нав ба шумо имкон медиҳад, ки векторизатсияро барои коркарди параллелии маълумот назорат кунед.
  • Рамзи JDK ва VM HotSpot, ки дар C++ навишта шудааст, иҷозат дода мешавад, ки хусусиятҳои дар мушаххасоти C++14 ҷорӣшударо истифода баранд. Пештар, стандартҳои C++ 98/03 иҷозат дода мешуданд.
  • ZGC (Z Garbage Collector), ки дар реҷаи ғайрифаъол кор мекунад ва таъхирҳоро аз ҷамъоварии ахлот то ҳадди имкон кам мекунад, қобилияти коркарди стекҳои риштаро дар баробари таваққуф кардани риштаҳои барнома илова кардааст. Ҳоло ZGC танҳо кореро дорад, ки таваққуфро талаб мекунад, ки таъхирҳои доимӣ дорад, одатан аз чандсад микросония зиёд нест.
  • Дастгирии розеткаҳои Unix (AF_UNIX) ба синфҳои SocketChannel, ServerSocketChannel ва java.nio.channels илова карда шуд.
  • Порт барои тақсимоти Linux Alpine бо китобхонаи стандартии C musl, ки дар муҳитҳо барои контейнерҳо, хидматрасониҳои хурд, абрӣ ва системаҳои дохилӣ маъмул аст, амалӣ карда шуд. Порти пешниҳодшуда дар чунин муҳитҳо ба шумо имкон медиҳад, ки барномаҳои Java-ро ба мисли барномаҳои муқаррарӣ иҷро кунед. Илова бар ин, бо истифода аз jlink, шумо метавонед ҳамаи модулҳои истифоданашударо хориҷ кунед ва муҳити ҳадди ақали кофӣ барои иҷро кардани барнома эҷод кунед, ки ба шумо имкон медиҳад тасвирҳои паймоне, ки барои барнома хос аст, эҷод кунед.
  • Механизми Elastic Metaspace амалӣ карда шуд, ки амалиёти тақсимот ва баргардонидани хотираро, ки дар метамаълумоти синф (метфазо) дар JVM HotSpot ишғол кардааст, оптимизатсия мекунад. Истифодаи Elastic Metaspace тақсимоти хотираро коҳиш медиҳад, сарбории пурборкунандаи синфро коҳиш медиҳад ва инчунин ба кори барномаҳои серверии дарозмуддат аз ҳисоби тезтар баргардонидани хотираи ишғолкардаи метамаълумоти синфи истифоданашуда ба системаи оператсионӣ таъсири судманд мерасонад. Барои интихоби режими озодкунии хотира пас аз борфарорӣ дарсҳо, варианти "-XX:MetaspaceReclaimPolicy=(балансдор|хашмовар|ҳеҷ)" пешниҳод карда мешавад.
  • Порти JDK барои системаҳои Windows, ки дар сахтафзор бо протсессорҳо дар асоси меъмории AArch64 кор мекунанд, илова карда шудааст.
  • Пешнамоиши сеюми API Access-Memory Access пешниҳод шудааст, ки ба барномаҳои Java имкон медиҳад, ки ба минтақаҳои хотираи берун аз теппаи Java тавассути коркарди абстраксияҳои нави MemorySegment, MemoryAddress ва MemoryLayout ба таври бехатар ва самаранок дастрасӣ пайдо кунанд.
  • API-и таҷрибавии хориҷӣ Linker амалӣ карда шуд, ки дастрасиро аз Java ба рамзи модарӣ таъмин мекунад. Якҷоя бо API-и хориҷӣ-хотира, интерфейси нави барномасозӣ эҷоди бастаҳоро дар китобхонаҳои маъмулии муштарак осонтар мекунад.
  • Утилити jpackage илова карда шуд, ки ба шумо имкон медиҳад бастаҳо барои барномаҳои мустақили Java эҷод кунед. Утилита ба javapackager аз JavaFX асос ёфтааст ва ба шумо имкон медиҳад бастаҳоро дар форматҳои аслӣ барои платформаҳои гуногун эҷод кунед (msi ва exe барои Windows, pkg ва dmg барои macOS, deb ва rpm барои Linux). Бастаҳо ҳама вобастагии заруриро дар бар мегиранд.
  • Инкапсуляцияи қатъии ҳамаи ҷузъҳои дохилии JDK бо нобаёнӣ фаъол аст, ба истиснои API-ҳои муҳим ба монанди sun.misc.Unsafe. Қимати опсияи "--illegal-access" ҳоло ба ҷои "иҷозат" ба таври нобаёнӣ ба "инкор кардан" муқаррар шудааст, ки кӯшиши дастрасии бештари синфҳо, усулҳо ва майдонҳои дохилиро аз код манъ мекунад. Барои гузаштан аз маҳдудият, имконоти "-illegal-access=permit" -ро истифода баред.
  • Татбиқи мутобиқати намуна дар оператори "instanceof" устувор карда шуд, ки ба шумо имкон медиҳад, ки фавран тағирёбандаи маҳаллиро барои истинод ба арзиши тафтишшуда муайян кунед. Масалан, шумо метавонед фавран "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" -ро бидуни муайян кардани "String s = (String) obj" нависед. Буд: if (obj instanceof Group) { Group Group = (Group) obj; var entries = group.getEntries(); } Акнун шумо метавонед бидуни муайян кардани "Гурӯҳи гурӯҳ = (Гурӯҳ) obj" иҷро кунед: if (obj instanceof Group group) { var enries = group.getEntries(); }
  • Татбиқи калимаи калидии "record" мӯътадил карда шуд, ки шакли паймонеро барои таърифҳои синфҳо таъмин мекунад, ки зарурати ба таври возеҳ муайян кардани усулҳои гуногуни сатҳи паст, аз қабили equals(), hashCode() ва toString()-ро дар ҳолатҳое, ки маълумот нигоҳ дошта мешавад, аз байн мебарад. танхо дар майдонхое. ки бо онхо тагьир намеёбад. Вақте ки синф татбиқи стандартии усулҳои equals(), hashCode() ва toString()-ро истифода мебарад, он метавонад бидуни таърифи возеҳи онҳо иҷро шавад: сабти ҷамъиятии BankTransaction(Сана LocalDate, маблағи дукарата, Тавсифи сатр) {}

    Ин эъломия ба таври худкор татбиқи усулҳои equals(), hashCode() ва toString() -ро ба ғайр аз усулҳои созанда ва гетер илова мекунад.

  • Лоиҳаи дуюм барои синфҳо ва интерфейсҳои мӯҳршуда пешниҳод карда мешавад, ки аз ҷониби дигар синфҳо ва интерфейсҳо барои мерос гирифтан, васеъ кардан ё бекор кардани татбиқҳо истифода намешаванд. Синфҳои мӯҳршуда инчунин роҳи бештари декларативии маҳдуд кардани истифодаи суперклассро нисбат ба тағирдиҳандаҳои дастрасӣ дар асоси номбар кардани возеҳ зерклассҳои барои васеъшавӣ иҷозатдодашуда таъмин мекунанд. бастаи com.example.geometry; синфи мӯҳри оммавӣ Шакл ба com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Майдон иҷозат медиҳад {…}

Манбаъ: opennet.ru

Илова Эзоҳ