Выпуск Java SE 27 і OpenJDK 27

Пасля шасці месяцаў распрацоўкі кампанія Oracle апублікавала платформу Java SE 27 (Java Platform, Standard Edition 27), у якасці эталоннай рэалізацыі якой выкарыстоўваецца адчынены праект OpenJDK. За выключэннем выдалення некаторых састарэлых магчымасцяў у Java SE 27 захавана зваротная сумяшчальнасць з мінулымі выпускамі платформы Java – большасць раней напісаных Java-праектаў без змен будуць працаздольныя пры запуску пад кіраваннем новай версіі. Гатовыя для ўстаноўкі зборкі Java SE 27 (JDK, JRE і Server JRE) падрыхтаваны для Linux (x86_64, AArch64), Windows (x86_64) і macOS (x86_64, AArch64). Распрацаваная ў рамках праекту OpenJDK эталонная рэалізацыя Java SE 27 цалкам адчыненая пад ліцэнзіяй GPLv2 з выключэннямі GNU ClassPath, якія дазваляюць дынамічнае звязванне з камерцыйнымі прадуктамі.

Java SE 27 аднесены да катэгорыі выпускаў са звычайным тэрмінам падтрымкі, абнаўленні для якога будуць выпускацца да наступнага рэлізу. У якасці галінкі з працяглым тэрмінам падтрымкі (LTS) варта выкарыстоўваць Java SE 25, Java SE 21 або Java SE 17, абнаўленні для якіх будуць выпускацца да 2033, 2031 і 2029 гадоў адпаведна (агульнадаступныя - да верасня 2030, 2028 і 2026 гадоў). Пашыраная падтрымка LTS-галінкі Java SE 8 працягнецца да 2030 года, а Java SE 11 – да 2032 года.

Сярод змен у Java SE 27 (1, 2, 3, 4):

  • Па змаўчанні для ўсіх акружэнняў задзейнічаны зборшчык смецця G1 (Garbage-First), які раней ужываўся для серверных сістэм. G1 аптымізаваны для выкарыстання на шматпрацэсарных сістэмах з вялікім аб'ёмам памяці і балансаванні паміж прадказальнасцю затрымак і высокай прапускной здольнасцю. Падчас прац G1 падзяляе памяць на мноства дробных рэгіёнаў і ў першую чаргу чысціць тыя рэгіёны, дзе больш невыкарыстоўваных аб'ектаў і менш актыўна выкарыстоўваных дадзеных.
  • У HotSpot JVM па змаўчанні задзейнічаны кампактныя загалоўкі аб'ектаў. Памер загалоўкаў на 64-разрадных сістэмах паменшаны з 96 да 64 біт, што скараціла спажыванне памяці і павялічыла верагоднасць траплення дадзеных у працэсарны кэш. У тэстах SPECjbb2015 спажыванне памяці знізілася на 22%, нагрузка на CPU паменшылася на 8%, а колькасць аперацый зборкі смецця знізілася на 15%. Пры тэставанні парсера JSON час праходжання тэстаў скарацілася на 10%.
  • У рэалізацыю TLS 1.3 дададзена падтрымка гібрыдных схем узгаднення ключоў, які камбінуе алгарытм ML-KEM (CRYSTALS-Kyber), устойлівы для падбору на квантавых кампутарах, з класічнымі алгарытмамі на базе эліптычных крывых ECDHE: X25519MLKEM768 (ECDHE-9) SecP256r1MLKEM76 (ECDHE з крывой secp256r1 + ML-KEM-768) і SecP384r1MLKEM1024 (ECDHE з крывой secp384r1 + ML-KEM-1024). У API javax.net.SSL дадзеныя схемы ўключаны па змаўчанні і для ўжывання не патрабуюць змены прыкладанняў.
  • У інструментар JDK Flight Recorder (JFR), які ўжываецца для маніторынгу, прафілявання і дыягностыкі прадукцыйнасці, дададзеная падтрымка ачысткі ў якая захоўваецца дыягнастычнай інфармацыі аргументаў каманднага радка, пачатковых значэнняў зменных асяроддзі і сістэмных уласцівасцяў. Змена дазваляе прадухіліць уцечку канфідэнцыйных дадзеных, якія апрацоўвае прафіляваны працэс, такіх як перадаюцца праз зменныя асяроддзі токены аўтарызацыі і ключы доступу да API.
  • Рэалізавана трэцяя папярэдняя рэдакцыя API Lazy Constants для працы з аб'ектамі, якія змяшчаюць нязменныя дадзеныя і апрацоўванымі ў JVM як канстанты. Да падобных аб'ектаў ужываюцца аптымізацыі прадукцыйнасці, аналагічныя палям з ключавым словам "final". У адрозненне ад "final" новы API падзяляе стварэнне пастаянных значэнняў і іх ініцыялізацыю, гарантуе, што значэнне можа быць ініцыялізавана толькі адзін раз, скарачае час запуску праграм і дазваляе ўжываць у карыстацкім кодзе аптымізацыі згортвання канстант (constant-folding), раней выкарыстоўваныя толькі ва ўнутраным. class Application { // Было: // static final UserService USERS = new UserService(); // Цяпер можна: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • У механізме супастаўлення з узорам прапанаваны пяты папярэдні варыянт магчымасці выкарыстання прымітыўных тыпаў (int, byte, char і іншыя базавыя тыпы, якія не з'яўляюцца аб'ектамі) ва ўсіх відах шаблонаў, у аператары "instanceof" і ў блоках "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 … }
  • Прапанаваны для тэставання сёмы папярэдні варыянт API для структураванага паралелізму (Structured Concurrency), які спрашчае распрацоўку шматструменных прыкладанняў за кошт апрацоўкі некалькіх задач, якія выконваюцца ў розных патоках, як адзінага блока.
  • Рэалізавана дванаццатая тэставая рэалізацыя API Vector, які прадстаўляе функцыі для вектарных вылічэнняў, якія выконваюцца з выкарыстаннем вектарных інструкцый працэсараў x86_64 і AArch64 і дазваляюць адначасова прымяніць аперацыі адразу да некалькіх значэнняў (SIMD). У адрозненне ад якія прадстаўляюцца ў JIT-кампілятары HotSpot магчымасцяў па аўтавектарызацыі скалярных аперацый, новы API дае магчымасць відавочна кіраваць вектарызацыі для паралельнай апрацоўкі дадзеных.
  • Даступны трэці папярэдні варыянт API для кадавання і дэкадаванні аб'ектаў з крыптаграфічнымі ключамі, сертыфікатамі і спісамі адкліканых сертыфікатаў, выкарыстоўваючы фармат PEM (Pivacy-Enhanced Mail).

Дадаткова можна адзначыць публікацыю абнаўлення платформы для стварэння прыкладанняў з графічным інтэрфейсам JavaFX 27. У бліжэйшыя гадзіны таксама чакаецца выпуск універсальнай віртуальнай машыны GraalVM 27, якая падтрымлівае запуск прыкладанняў на JavaScript (Node.js), Python, Ruby, R, любых мовах для JVM (Java можа фармавацца біткод LLVM (C, C++, Rust).

Крыніца: opennet.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster