З виходом JDK 24 у загальний доступ Oracle розкрила деякі з нових можливостей, які з’являться в Java найближчим часом. Серед них — покращене примітивне упаковування (primitive boxing), новий тип класів без null (null-restricted value classes) і стабільні значення (stable values), які вже заплановані для випуску у JDK 25 у вересні цього року.
Як повідомляє Info World, Oracle назвала п’ять нововведень, які наразі перебувають у стадії попереднього перегляду та мають відповідні JDK Enhancement Proposals (JEP).
Покращене примітивне упаковування (Enhanced Primitive Boxing)
Воно дає можливість розглядати примітиви більш схожими на референсні типи. Завдяки цьому можна:
- Використовувати упаковані примітиви як отримувачі (receivers) при доступі до полів, виклику методів або посиланні на методи.
- Використовувати невпаковані типи як типи повернення при перевизначенні методів із референсним типом повернення.
- Додавати примітивні типи як аргументи узагальнень (generic types).
Класи значень без null (Null-Restricted Value Class Types)
Дають можливість створювати змінні, які не можуть містити значення null. Це дає можливість ефективніше використовувати пам’ять та оптимізувати виконання коду. Такі типи є нововведенням як на рівні мови, так і на рівні JVM.
Класи значень та об’єкти (Value Classes and Objects)
Додають підтримку об’єктів значень (value objects) — екземплярів класів, які:
- Складаються лише з final-fields.
- Не мають ідентичності об’єкта.
- Дозволяють JVM оптимізувати збереження таких об’єктів, покращуючи використання пам’яті, кешування і збірку сміття.
Створення похідних записів (Derived Record Creation)
Спрощує роботу з record-класами, додаючи можливість створювати нові записи на основі наявних. Головні переваги:
- Лаконічний синтаксис для створення змінених копій записів.
- Виключає потребу у wither-методах (аналогах setter-методів для immutable-об’єктів).
Стабільні значення (Stable Values)
Це об’єкти, що містять незмінні дані. Вони сприймаються JVM як константи, що дає змогу оптимізувати продуктивність на рівні, аналогічному до final-полів.
- Головна перевага — гнучкість ініціалізації: на відміну від традиційних констант, стабільні значення можуть бути ініціалізовані не відразу, а коли це потрібно.
- Це дає можливість прискорити запуск Java-застосунків, уникнувши монолітної ініціалізації стану програми.
Читайте на ProIT: Майбутнє Java: зміна вподобань у корпоративному секторі.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!