ProIT: медіа для профі в IT
4 хв.

JDK 22: нові функції у Java 22

author avatar ProIT NEWS

Java Development Kit 22, який має надійти в березні 2024 року як наступна версія Java Standard Edition, наразі має 10 функцій, повідомляє InfoWorld.

Ці новітні функції поєднуються з попереднім переглядом інструкцій перед super(…), попереднім переглядом файлу класу API, закріпленням регіону для збирача сміття G1, другим попереднім переглядом шаблонів рядків, безіменних змінних і шаблонів, зовнішньою функцією та API пам’яті й сьомим інкубатором векторного API.

Також було запропоновано другий попередній перегляд неявно оголошених класів та основних методів екземпляра.
Збірки раннього доступу JDK 22 доступні на jdk.java.net для Linux, Windows і Mac.

Завдяки структурованому паралелізму паралельне програмування спрощується через API, який обробляє групи пов’язаних завдань, що виконуються в різних потоках, як єдину робочу одиницю. Це дає змогу оптимізувати обробку та скасування помилок, підвищуючи надійність і покращуючи спостережуваність. Цей API був у попередньому перегляді в JDK 21 й інкубаційний у JDK 19 та JDK 20.

Удосконалення засобу запуску програм Java дозволить запускати програму у вигляді кількох файлів вихідного коду Java. Мета, яка лежить в основі можливості запуску програм із багатофайловим вихідним кодом, полягає в тому, щоб зробити перехід від невеликих програм до більших програм більш поступовим, даючи змогу розробникам вибирати, чи варто налаштовувати інструмент збирання і коли.

API файли класів (функція попереднього перегляду) забезпечить стандартний API для аналізу, генерації та перетворення файлів класів Java. Він призначений для того, щоб компоненти JDK могли перейти на стандартний API й зрештою видалити внутрішню копію JDK сторонньої бібліотеки ASM.

Розбір, генерація та перетворення файлів класів є повсюдними та використовуються незалежними інструментами й бібліотеками для перевірки та розширення програм без шкоди для обслуговування вихідного коду.

Однак формат файлу класу Java зараз розвивається швидше, ніж раніше, через 6 місяців після випуску стандартної Java. Така швидкість еволюції призвела до того, що фреймворки частіше стикаються з файлами класів, які є новішими, ніж бібліотека файлів класів. Це призвело до помилок і того, що розробники фреймворку намагаються написати код для аналізу файлів класів із майбутнього і сподіваються, що нічого серйозного не станеться.

Планується, що платформа Java визначить і запровадить стандартний API файлу класу, який розвиватиметься разом із форматом файлу класу.

Закріплення регіону для G1 призначено для зменшення затримки, тому не потрібно вимикати збір сміття (GC) під час критичних регіонів Java Native Interface (JNI).

Цілі включають відсутність зупинки потоків через критичні регіони JNI, відсутність додаткової затримки для початку збирання сміття через ці регіони, відсутність регресії в часі паузи GC, коли жодна з цих областей не активна, і мінімальну регресію в часі паузи GC, коли ці регіони активні.

Наразі GC за замовчуванням (G1) вимикає збирання сміття в кожній критичній області, що може мати значний вплив на затримку. Завдяки цій зміні потоки Java ніколи не чекатимуть завершення операції G1 GC.

Неявно оголошені класи та методи екземплярів наразі попередньо переглядаються в JDK 21 як безіменні класи та методи екземплярів. Ця функція отримає переглянуту назву і значні зміни в JDK 22 у другому попередньому перегляді. Ця можливість призначена для розвитку мови Java, щоб початківці могли писати свої перші програми без необхідності розуміти мовні особливості, розроблені для великих програм.

Учні можуть писати спрощені декларації для однокласових програм, а потім плавно розширювати програми, щоб використовувати більш розширені функції, коли їхні навички зростуть. Другий попередній перегляд вносить зміни в оголошення класу та виклик методу, що спрощує вихідну пропозицію.

Збирачі потоків, попередній перегляд у JDK 22, покращать Java Stream API для підтримки спеціальних проміжних операцій. Це дозволить потоковим конвеєрам перетворювати дані такими способами, які важко здійснити за допомогою наявних вбудованих проміжних операцій. Завдяки цьому конвеєри потоків стануть більш гнучкими та виразними.

Попередній перегляд операторів перед super(…) стосується конструкторів у мові, даючи змогу операторам, які не посилаються на створюваний екземпляр, відображатися перед явним конструктором.

Мета полягає, зокрема, у збереженні наявної гарантії, що конструктори запускаються зверху вниз під час створення екземпляра класу, гарантуючи, що код у конструкторі підкласу не може заважати створенню екземпляра суперкласу.

Наразі це єдина функція JDK 22, яка ще не була попередньо переглянута або інкубована у стандартній Java.

Шаблони рядків у другій попередній версії JDK 22 доповнюватимуть рядкові літерали й текстові блоки Java, поєднуючи текст літералів із вбудованими виразами та процесорами шаблонів для отримання спеціальних результатів.

Шаблони рядків відображаються в першому попередньому перегляді у JDK 21. Другий попередній перегляд призначений для отримання додаткового досвіду та відгуків. За винятком технічних змін у типах шаблонних виразів, немає жодних змін щодо першого попереднього перегляду.

Векторний API (сьомий інкубатор) виражатиме векторні обчислення, які надійно компілюються під час виконання до оптимальних векторних інструкцій на підтримуваних архітектурах ЦП, досягаючи продуктивності, що перевищує еквівалентні скалярні обчислення.

API дає змогу писати складні векторні алгоритми в Java, використовуючи наявний алгоритм автоматичної векторизації HotSpot, але з моделлю користувача, яка робить векторизацію більш передбачуваною та надійною.

Ця пропозиція була попередньо переглянута в JDK 21 і буде завершена без змін у JDK 22.

Іноземні функції й API пам’яті дозволяють програмам Java взаємодіяти з кодом і даними за межами середовища виконання Java. Викликаючи сторонні функції та безпечно звертаючись до чужої пам’яті, програми Java можуть викликати власні бібліотеки й обробляти рідні дані без крихкості JNI (Java Native Interface), йдеться у пропозиції.

Іноземні функції та API пам’яті раніше були представлені в JDK 19, JDK 20 і JDK 21. Їх буде завершено у JDK 22.

Новий випуск функцій Java 22 має вийти 19 березня 2024 року, він отримає від компанії Oracle 6 місяців підтримки. На відміну від щойно випущеного JDK 21, який є випуском довгострокової підтримки (LTS) та отримуватиме підтримку щонайменше 8 років.

Компанії, крім Oracle, можуть запропонувати більш тривалу підтримку JDK 22, якщо вони цього захочуть. Стандартні оновлення Java відбуваються кожні 6 місяців, випуски ж LTS надходять кожні 2 роки.

Інші можливості, які можуть з’явитися у JDK 22, включають структурований паралелізм, який спрощує паралельне програмування, розглядаючи групи пов’язаних завдань, що виконуються в різних потоках, як єдину одиницю роботи. А також обчислені константи, які є незмінними носіями значення, ініціалізованими не більше одного разу.

Перед загальним доступом JDK 22 планується пройти фази скорочення у грудні та січні, після чого з’являться два кандидати на випуск у лютому 2024 року.

Раніше ProIT повідомляв, що Java 18 Simple Web Server дає змогу використовувати інструмент командного рядка або API для розміщення файлів.

Підписуйтеся на ProIT у Telegram, щоб не пропустити жодну публікацію!

Приєднатися до company logo
Продовжуючи, ти погоджуєшся з умовами Публічної оферти та Політикою конфіденційності.