Oracle випустила Java 27: нові можливості та покращення

Oracle випустила Java 27: нові можливості та покращення

Oracle оголосила про загальну доступність Java 27, останньої версії платформи Java, що з’явилася через шість місяців після Java 26 в рамках регулярного циклу випуску проекту.

Що нового в Java 27?

Випуск включає дев’ять JDK Enhancement Proposals (JEP), що охоплюють зміни у JVM, мовних функціях, криптографії, бібліотеках та інструментах розробки. Чотири з них є попередніми функціями, а Vector API залишається функцією інкубатора.

Однією з основних змін у Java 27 є те, що G1 тепер є за замовчуванням збирачем сміття в усіх середовищах. Раніше, HotSpot JVM міг обирати збирач сміття Serial у деяких конфігураціях. З JDK 27, G1 завжди обирається, коли користувачі не вказують збирач сміття.

Покращення ефективності з Compact Object Headers

Compact Object Headers тепер активовані за замовчуванням. На 64-бітних архітектурах ця функція зменшує заголовки об’єктів з 96 біт до 64 біт. За словами Oracle, це скорочує використання купи, покращує локалізацію даних і дозволяє вміщати більшу кількість об’єктів у ту саму пам’ять.

Крім того, Java 27 впроваджує гібридний обмін ключами пост-квантової криптографії для TLS 1.3. Реалізація поєднує традиційні криптографічні алгоритми з квантово-стійкими. Ця функція доступна автоматично для програм, що використовують Java’s javax.net.ssl API без змін у коді.

Нововведення в синтаксисі

З мовної сторони, первинні типи в шаблонах, instanceof і switch переходять у своє п’яте попереднє видання. Робота триває для поліпшення відповідності первинних значень у функціях узгодження шаблонів Java, водночас посилюючи перевірки компілятора в зв’язку з виразами switch.

Structured Concurrency повертається на сьоме попереднє видання. API дозволяє легше управляти групами пов’язаних конкурентних завдань як єдиним цілим, особливо при обробці скасування, збоїв і завершення завдань.

Повернення Lazy Constants

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

Timely також, Vector API переходить у своє 12-те ітеративне видання інкубатора. Ця функція дозволяє розробникам висловлювати векторні обчислення, які JVM може компілювати в інструкції векторного процесора на підтримуваному апаратному забезпеченні, зокрема в системах, де обробка в стилі SIMD може забезпечити значні переваги в продуктивності.

Нові можливості в JDK 27

Ще однією новинкою є JFR In-Process Data Redaction. Java Flight Recorder тепер може редагувати аргументи командного рядка, значення змінних середовища і системних властивостей перед виходом діагностичних даних з запущеного процесу Java. Це допомагає запобігти виникненню потенційно чутливої інформації в записях.

Окрім дев’яти JEP, JDK 27 включає багато інших дрібних поліпшень запуску та інструментів. Це зміни в налаштуванні купи G1, оптимізації компілятора, прискорені операції вводу-виводу, оптимізації Vector API та поліпшення в роботі декількох криптографічних алгоритмів.

Діагностичні інструменти Java також отримали деякі покращення. JSON-доступи до потоків тепер представляють вибрані ідентифікатори і кількості як JSON-числа, тоді як VM-діагностика може звітувати про кількість відкритих дескрипторів. Додана також підтримка автозаповнення Bash для утиліти jcmd.

Oracle планує надавати оновлення для JDK 27 до березня 2027 року, коли Java 28, ймовірно, замінить його як наступну функціональну версію. Для більш детальної інформації, відвідайте офіційне оголошення.