Внутрішні системи та синтаксис Java постійно змінюються, і ці зміни відбуваються переважно через Java Community Process (JCP) і Java Enhancement Proposals (JEPs). Вони разом визначають шлях, яким можна описати, спроектувати та впровадити нові функції в JVM, підтримуючи динамічність мови Java та інтерес спільноти. Info World вважає, що з наближенням випуску JDK 24 саме час подивитися на майбутні JEP, які знаходяться на різних етапах реалізації.
Етапи процесу JEP
У каталозі JEP Index на OpenJDK можна знайти всі пропозиції JEP, подані для Java. Масштаб і обсяг можуть здатися громіздкими: немає відокремлення великих проектів, як-от віртуальні потоки, від менших пропозицій.
JEPи класифікуються за етапами розробки:
- JEP на етапі впровадження: це пропозиції, які працюються зараз для майбутніх версій Java. Сюди входять функції, що вже мають статус попереднього перегляду та доступні для експериментів, а також ті, що вже прийняті до розробки.
- Подані JEP: вони вже пройшли процес створення та офіційно подані, але ще не прийняті. Після прийняття переходять на етап впровадження.
- Чернетки JEP: це пропозиції, що розробляються для подання в офіційному статусі.
- Доставлені, інфраструктурні та інформаційні JEP: успішні JEP минулого, що стали частиною JVM.
- Відкликані JEP: пропозиції, що були відкликані.
Іноді більші JEPи розбивають на частини чи етапи. Наприклад, JEP 462: Structured Concurrency (Second Preview) має окремий запис у категорії реалізованих функцій.
Найбільш цікаві JEPи на етапі впровадження
В JEP Index наразі є кілька цікавих пропозицій, які націлені на оптимізацію JVM та розширення можливостей мови Java.
JEP 485: Stream Gatherers – цей API дозволяє більш гнучко кастомізувати функціональні операції. Це рішення, що спрощує роботу зі специфічними колекціями, яке було раніше недоступним.
JEP 484: Class-File API – стандартний механізм для обробки, аналізу та виведення структури .class. Він дозволяє розробникам фреймворків та бібліотек більш стабільно маніпулювати вихідними файлами Java.
JEP 478: Key Derivation Function API (Preview) – API для роботи з криптографічними матеріалами, що робить операції більш надійними та захищеними від майбутніх квантових атак. Цей API підтримує алгоритми як-от Argon2 для хешування паролів.
JEP 472: Підготовка до обмеження використання JNI – частина проекту Panama. JEP 472 попереджає, що використання JNI в Java невдовзі буде обмежене.
JEP 468: Створення похідних записів (Preview) – дозволяє створювати змінені копії об’єктів-записів. Наприклад:javaКопіювати кодPoint finalLoc = nextLoc with { x *= 2; y *= 2; z *= 2; };
JEP 198: Полегшений API для роботи з JSON – запропонований ще у 2014 році, цей API обіцяє зручнішу роботу з JSON, що стало важливою частиною програмування.
JEP 479: Видалення підтримки 32-бітного Windows – після видалення підтримки 32-бітної версії в JDK 21 цей JEP завершить процес.
JEP 218: Генерики для примітивних типів – частина проекту Valhalla, що дозволяє використовувати примітивні типи в генериках. Це значне оновлення синтаксису Java, що спрощує уніфікацію примітивів і об’єктів.
JEP 483: Попереднє завантаження класів – покращення, що дозволить JVM швидше запускатися і перезавантажуватися. Це стане доступним без необхідності додаткових дій з боку розробників.
JEP 475: Пізня експансія бар’єрів для G1 – ще одна оптимізація HotSpot JVM для роботи зі збиранням сміття, важлива для роботи в хмарі.
JEP 450: Компактні заголовки об’єктів (Experimental) – внутрішня оптимізація, що зменшує розмір заголовків об'єктів в пам'яті з 96 до 64 бітів, що знижує тиск на збирання сміття та покращує використання пам'яті.
JEP 111: Додаткові конструкції Unicode для регулярних виразів – це JEP розширює підтримку символів Unicode, що можуть оброблятися в регулярних виразах.
Ці JEPи спрямовані на вдосконалення та оптимізацію JVM і розширення можливостей мови Java. Вони є частиною багаторічного процесу розвитку Java, який робить платформу сучасною та зручною для користувачів.
Раніше ми повідомляли, що щоб покращити продуктивність Java у хмарних середовищах, OpenJDK пропонує зменшити розмір JDK (Java Development Kit) приблизно на 25%. У плані передбачається увімкнути інструмент jlink для створення власних зображень середовища виконання без використання файлів JMOD JDK.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!