Випуск 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

Додати коментар або відгук