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 маалымдама ишке ашыруу коммерциялык продуктылар менен динамикалык байланышты камсыз кылуу үчүн GNU ClassPath өзгөчө учурлары менен GPLv2 лицензиясы боюнча толугу менен ачык булак болуп саналат.

Java SE 19 үзгүлтүксүз колдоо релиз катары категорияга кирет, жаңыртуулар кийинки релизге чейин чыгарылат. Узак мөөнөттүү колдоо (LTS) бутагы Java SE 17 болушу керек, ал 2029-жылга чейин жаңыртууларды алат. Эске салсак, Java 10 чыгарылгандан баштап, долбоор жаңы иштеп чыгуу процессине өткөн, бул жаңы релиздерди түзүү үчүн кыскараак циклди билдирет. Жаңы функциялар азыр бир үзгүлтүксүз жаңыртылган башкы бутакта иштелип чыгууда, ал буга чейин аяктаган өзгөртүүлөрдү камтыган жана жаңы релиздерди турукташтыруу үчүн ар бир жарым жыл сайын бутактарга бөлүнөт.

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 для cтруктурированного параллелизма, упрощающий разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.

Source: opennet.ru

Комментарий кошуу