Нашри Java SE 15

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

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

Аз навоварй Java 15 метавонад щайд:

  • Дохилшуда дастгирии алгоритми эҷоди имзои рақамии EdDSA (Edwards-Curve Digital Signature Algorithm) RFC 8032). Татбиқи пешниҳодшудаи EdDSA аз платформаҳои сахтафзор вобаста нест, аз ҳамлаҳои паҳлӯии канал муҳофизат карда мешавад (вақти доимии ҳама ҳисобҳо таъмин карда мешавад) ва иҷроиш нисбат ба татбиқи мавҷудаи ECDSA, ки бо забони C навишта шудааст, бо ҳамон сатҳи муҳофизат тезтар аст. Масалан, EdDSA бо истифода аз каҷи эллиптикӣ бо калиди 126-битӣ иҷрои шабеҳро ба ECDSA бо каҷи эллиптикии secp256r1 ва калиди 128-бит нишон медиҳад.
  • Илова карда шуд дастгирии таҷрибавӣ барои синфҳо ва интерфейсҳои мӯҳршуда, ки онҳоро дигар синфҳо ва интерфейсҳо барои мерос гирифтан, васеъ кардан ё бекор кардани татбиқ истифода бурда наметавонанд. Синфҳои мӯҳршуда инчунин роҳи бештари декларативии маҳдуд кардани истифодаи суперклассро нисбат ба тағирдиҳандаҳои дастрасӣ, дар асоси номгӯи возеҳи зерсинфҳои барои тамдид иҷозатшуда таъмин мекунанд.

    бастаи com.example.geometry;

    Синфи мӯҳри оммавӣ Шакли
    иҷозат медиҳад com.example.polar.Circle,
    com.example.чоргона.Роҳкунҷа,
    com.example.quad.simple.Майдон {…}

  • Илова карда шуд дастгирии синфҳои пинҳонӣ, ки наметавонанд мустақиман аз ҷониби байткоди синфҳои дигар истифода шаванд. Мақсади асосии синфҳои пинҳонӣ дар чаҳорчӯбаҳое истифода мешаванд, ки дар вақти корӣ синфҳоро ба таври динамикӣ тавлид мекунанд ва онҳоро бавосита истифода мебаранд. инъикос. Чунин синфҳо одатан давраи маҳдуди ҳаёт доранд, бинобар ин нигоҳ доштани онҳо барои дастрасӣ аз синфҳои ба таври статикӣ тавлидшуда асоснок нест ва танҳо боиси зиёд шудани истеъмоли хотира мегардад. Синфҳои пинҳонӣ инчунин зарурати API-и ғайристандартии sun.misc.Unsafe::defineAnonymousClass-ро, ки дар оянда бартараф карда мешаванд, аз байн мебаранд.
  • Ҷамъоварии партовҳои ZGC (Z Garbage Collector) ба эътидол оварда шудааст ва барои истифодаи васеъ омода эътироф шудааст. ZGC дар реҷаи ғайрифаъол кор мекунад, таъхирро аз ҳисоби ҷамъоварии ахлот то ҳадди имкон кам мекунад (вақти таваққуф ҳангоми истифодаи ZGC аз 10 мс зиёд нест).
  • Муътадил ва барои истифодаи умумӣ омода ёфт
    чамъкунандаи ахлот Шэннова, кор бо таваққуфҳои минималӣ (Camer-Pause-Time партов). Shenandoah аз ҷониби Red Hat таҳия шудааст ва бо истифодаи алгоритме, ки вақти таваққуф дар вақти ҷамъоварии ахлотро тавассути иҷро кардани тозакунӣ дар баробари иҷрои барномаҳои Java кам мекунад, намоён аст. Андозаи таъхирҳое, ки аз ҷониби коллекторҳои партов ҷорӣ карда мешаванд, пешгӯишаванда аст ва аз андозаи тӯда вобаста нест, яъне. барои тӯдаҳои 200 МБ ва 200 ГБ таъхирҳо якхела хоҳанд буд (набарояд зиёда аз 50 мс ва одатан дар давоми 10 мс);

  • Дастгирӣ устувор ва ба забон ҷорӣ карда шуд блокҳои матнӣ - шакли нави адабии сатр, ки ба шумо имкон медиҳад, ки маълумоти матнии чандсатро ба коди ибтидоӣ бидуни истифодаи фирор аз аломатҳо ва нигоҳ доштани формати аслии матн дар блок дохил кунед. Блок бо се нохунаки дугона ҳошия шудааст.

    Масалан, ба ҷои код

    Сатри html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 ин ҷост!\" » +
    "\n\t" + " » +
    "\n" + " ";

    шумо метавонед муайян кунед:

    Сатри html = """


    »Java 1\
    ин ҷост!

    """;

  • Аз нав тарҳрезӣ шудааст API-и кӯҳнаи DatagramSocket. Таҷҳизоти кӯҳнаи java.net.DatagramSocket ва java.net.MulticastSocket бо татбиқи муосир иваз карда шуданд, ки ислоҳ кардан ва нигоҳдорӣ осонтар аст ва инчунин бо ҷараёнҳои виртуалии дар доираи лоиҳа таҳияшуда мувофиқ аст. Домод. Дар ҳолати номувофиқатии эҳтимолӣ бо рамзи мавҷуда, татбиқи кӯҳна нест карда нашудааст ва онро бо истифода аз опсияи jdk.net.usePlainDatagramSocketImpl фаъол кардан мумкин аст.
  • Татбиқи дуюми таҷрибавӣ пешниҳод карда мешавад мутобиқати намуна дар оператори "instanceof", ки ба шумо имкон медиҳад, ки фавран тағирёбандаи маҳаллиро барои дастрасӣ ба арзиши тафтишшуда муайян кунед. Масалан, шумо метавонед фавран "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" -ро бидуни муайян кардани "String s = (String) obj" нависед.

    буд:

    if (obj instanceof Group) {
    Гурӯҳи гурӯҳ = (Group)obj;
    var entries = group.getEntries();
    }

    Акнун шумо метавонед бидуни таърифи "Гурӯҳи гурӯҳ = (Гурӯҳ) obj" кор кунед:

    if (obj instanceof group) {
    var entries = group.getEntries();
    }

  • Тавсия дода мешавад татбиқи дуюми таҷрибавии калимаи калидӣ "рекорд", ки шакли паймонеро барои муайян кардани синфҳо таъмин мекунад, ки ба шумо имкон медиҳад, ки аз муайян кардани усулҳои гуногуни сатҳи паст, ба монанди equals(), hashCode() ва toString() канорагирӣ кунед, дар ҳолатҳое, ки маълумот танҳо дар майдонҳое нигоҳ дошта мешавад, ки рафторашон тағир намеёбад. Вақте ки синф татбиқи стандартии усулҳои equals(), hashCode() ва toString()-ро истифода мебарад, он метавонад бидуни таърифи возеҳашон амал кунад:

    сабти ҷамъиятии муомилоти бонкӣ (Санаи маҳаллӣ,
    маблағи дукарата
    Тавсифи сатр) {}

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

  • Пешниҳод шудааст пешнамоиши дуюми Access-Memory Access API, ки ба барномаҳои Java имкон медиҳад, ки ба минтақаҳои хотираи берун аз теппаи Java ба таври бехатар ва самаранок дастрасӣ пайдо карда, тавассути коркарди абстраксияҳои нави MemorySegment, MemoryAddress ва MemoryLayout.
  • Маъюб ва техникаи оптимизатсияи қулфкунии ғаразнокро, ки дар HotSpot JVM истифода мешавад, барои кам кардани хароҷоти қулфкунӣ истифода бурд. Ин техника аҳамияти худро дар системаҳои дорои дастурҳои атомии аз ҷониби CPU-ҳои муосир пешниҳодшуда гум кардааст ва бинобар мураккабии он барои нигоҳдорӣ хеле меҳнатталаб аст.
  • Эълон шудааст механизми кӯҳна Фаъолсозии RMI, ки дар нашри оянда хориҷ карда мешавад. Қайд карда мешавад, ки RMI Activation кӯҳна шуда, ба категорияи вариант дар Java 8 дохил карда шудааст ва дар амалияи муосир қариб ҳеҷ гоҳ истифода намешавад.
  • Нобуд Муҳаррики JavaScript рино, ки дар Java SE 11 бекор карда шудааст.
  • Хориҷ карда шуд бандарҳо барои коркардкунандагони Solaris OS ва SPARC (Solaris/SPARC, Solaris/x64 ва Linux/SPARC). Хориҷ кардани ин бандарҳо ба ҷомеа имкон медиҳад, ки рушди хусусиятҳои нави OpenJDK-ро бидуни талафи вақт барои нигоҳ доштани хусусиятҳои мушаххаси Solaris ва SPARC суръат бахшад.

Манбаъ: opennet.ru

Илова Эзоҳ