Выпуск Java SE 19

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

Java SE 19 аднесены да катэгорыі выпускаў са звычайным тэрмінам падтрымкі, абнаўленні для якога будуць выпускацца да наступнага рэлізу. У якасці галінкі з працяглым тэрмінам падтрымкі (LTS) варта выкарыстоўваць Java SE 17, абнаўленні для якога будуць выпускацца да 2029 гады. Нагадаем, што пачынальна з выпуску Java 10 праект перайшоў на новы працэс распрацоўкі, які разумее карацейшы цыкл фармавання новых рэлізаў. Новая функцыянальнасць зараз развіваецца ў адной стала якая абнаўляецца master-галінцы, у якую ўключаюцца ўжо гатовыя змены і ад якой раз у шэсць месяцаў адгаліноўваюцца галінкі для стабілізацыі новых выпускаў.

З навін Java 19 можна адзначыць:

  • Прапанавана папярэдняя падтрымка шаблонаў запісаў (record pattern), якая пашырае якая з'явілася ў Java 16 магчымасць супастаўлення з узорам сродкамі для разбору значэнняў класаў тыпу record. Напрыклад: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • У зборках для Linux забяспечана падтрымка архітэктуры RISC-V.
  • Дададзена папярэдняя падтрымка API FFM (Foreign Function & Memory), які дазваляе арганізаваць узаемадзеянне Java-праграм з вонкавымі кодам і дадзенымі праз выклік функцый з вонкавых бібліятэк і доступ да памяці па-за JVM.
  • Дададзена падтрымка віртуальных патокаў, якія ўяўляюць сабой легкаважныя патокі, якія значна спрашчаюць напісанне і суправаджэнне высокапрадукцыйных шматструменных прыкладанняў.
  • Прапанавана чацвёртая папярэдняя рэалізацыя API Vector, які прадстаўляе функцыі для вектарных вылічэнняў, якія выконваюцца з выкарыстаннем вектарных інструкцый працэсараў x86_64 і AArch64 і дазваляюць адначасова прымяніць аперацыі адразу да некалькіх значэнняў (SIMD). У адрозненне ад якія прадстаўляюцца ў JIT-кампілятары HotSpot магчымасцяў па аўтавектарызацыі скалярных аперацый, новы API дае магчымасць відавочна кіраваць вектарызацыі для паралельнай апрацоўкі дадзеных.
  • Дададзена трэцяя эксперыментальная рэалізацыя супастаўлення па шаблоне ў выразах "switch", якая дазваляе ў пазнаках "case" выкарыстоўваць не дакладныя значэнні, а гнуткія шаблоны, якія ахопліваюць адразу серыю значэнняў, для якіх раней даводзілася выкарыстоўваць грувасткія ланцужкі выразаў "if ... else". Object o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Дададзены эксперыментальны API для структураванага паралелізму, які спрашчае распрацоўку шматструменных прыкладанняў за кошт апрацоўкі некалькіх задач, выкананых у розных струменях, як адзінага блока.

Крыніца: opennet.ru

Дадаць каментар