Привет, Java 17: что нового

04.10.2021      37667

Oracle официально представила новую общедоступную версию Java 17. Три ключевых изменения: использование только строгой семантики чисел с плавающей точкой, единый API (прикладной программный интерфейс) для генераторов псевдослучайных чисел и отдельный API сторонних функций и памяти.

В Java 17 включили четырнадцать 14 JEP (предложений по улучшению). Разработчики закрыли свыше 2,7 тыс. задач и серьезно обновили API.

Всегда строгая семантика

В JEP 306 восстановили всегда строгую семантику чисел с плавающей точкой. Напомним, до Java 1.2 по умолчанию использовалась нестрогая семантика. Теперь же на всех платформах выражения с плавающей точкой вычисляются строго, а значит, можно не использовать ключевое слово strictfp – если оно будет обнаружено в коде, система выдаст предупреждение.

Это нововведение должно упростить разработку библиотек, которые чувствительны к числовым значениям. От введения всегда строгой семантики точно выиграют Java.lang.Math и java.lang.StrictMath и другие подобные решения.

API сторонних функций и памяти

В рамках JEP 412 создали Foreign Function & Memory API. Это продвинутая версия нативного интерфейса JNI, в которой по умолчанию запрещены потенциально небезопасные операции. Это повысит стабильность кода и производительность его выполнения.

С новым API можно также по-разному взаимодействовать с памятью вне кучи. А в будущем – задействовать внешние функции не только на С, но и на других языках.

Но JNI по-прежнему доступен. Если ваше приложение использует его, переход на Java 17 не будет критичным.

Изменения в фильтрах

В Java 9 появились фильтры для контроля десериализации данных. В 17 версии их сделали более гибкими – в JEP 415 внедрили фабрику фильтров.

Вы можете не указывать конкретный фильтр для каждого объекта ObjectInputStream и не запускать глобальный статический фильтр для всей виртуальной машины. Достаточно указать статическую фабрику, например, через метод ObjectInputFilter.Config::setSerialFilterFactory или аргументы командной строки. Она автоматически будет возвращать нужный фильтр в зависимости от контекста.

Фильтры нужны для проверки входящих потоков данных, которые поступали со стороны библиотеки и кода приложения. Так как можно удалить потенциально вредоносный код прямо в процессе десериализации, безопасность разработки повысится.

API для генераторов псевдослучайных чисел

В JEP 356 добавили пакет java.util.random с новыми интерфейсами и свежей реализацией генераторов псевдослучайных чисел. В этой иерархии RandomGenerator является родителем для свежих генераторов SplittableRandomGenerator, JumpableRandomGenerator, LeapableRandomGenerator, ArbitrarilyJumpableRandomGenerator, а также ранее использованных инструментов – Random, ThreadLocalRandom и SplittableRandom.

Механизм ServiceLoader позволяет использовать собственные или сторонние реализации генераторов. Это актуально для финансовых и беттинг-приложений, а также других разработок со сложной криптографией.

Новый рендер-конвейер

С JEP 382 разработчики перешли от OpenGL на Apple Metal API.

Обновленный рендер-конвейер соответствует модели существующего двумерного аналога. Он пока включен по умолчанию, но можно активировать и новую версию ключом -Dsun.java2d.metal=true. Если же OpenGL не работает, то используется Apple Metal.

Здесь же отметим, что разработчики сделали специальный порт под архитектуру macOS/AArch64. Для процессоров Apple M1 уже выложены дистрибутивы открытого OpenJDK и проприетарного Oracle JDK.

Строгая инкапсуляция внутренних API

В Java 9 показали инкапсуляцию внутренних прикладных интерфейсов, но до 16 версии включительно она была выключена по умолчанию. Теперь, с внедрением JEP 403, ее нельзя включить единственной командой --illegal-access=permit Main.

Чтобы иметь доступ к внутренним компонентам JDK, необходимо явно перечислить все нужные пакеты в опциях --add-opens или --add-exports. Но критического API в модуле jdk.unsupported эти изменения не касаются: все классы в пакетах sun.misc и sun.reflect по-прежнему доступны по умолчанию.

Java 17 – LTS-версия с расширенной поддержкой

Java 17 – стабильная версия с LTS (Long-Term Support) поддержкой: ожидается, что она продлится до сентября 2026 года. Предыдущая LTS-версия JDK 11 была выпущена три года назад.

Релиз Java 17 в традиционном формате OpenJDK выпускается со свободной лицензией GNU General Public License v2. Для тех, кто использует Java как часть продукта либо сервиса Oracle или же хочет получить платную поддержку, есть коммерческая лицензия.

Автор:
Обозреватель


См. также

Новость Искусственный интеллект ИТ-Новость

ИИ научат разработке цифровых интегральных микросхем – несколько российских научных институтов заявили об участии в проекте. Проект рассчитан на 3 года – с 2024 по 2026.

23.07.2024    197    user1915669    0       

1

Новость Дата-центры Искусственный интеллект ИТ-Новость

Развитие искусственного интеллекта и цифровых сервисов в России стало причиной роста потребности в мощных центрах обработки данных. Эксперты прогнозируют, что дефицит ЦОД, который уже наблюдается сегодня, в ближайшие годы будет только усиливаться.

18.07.2024    356    AnastasiaKl    0       

1

Новость ИТ-Новость

В сентябре 2024 года видеоигры в России начнут маркировать – пока на добровольной основе. Геймерам будут сообщать о семи видах чувствительного (неприятного) контента в игре.

17.07.2024    409    user1915669    0       

1

Новость Законодательство ИТ-Новость

Депутаты Госдумы работают над законопроектом по ужесточению контроля за электросамокатами. Среди мер: обязательная регистрация СИМ (средств индивидуальной мобильности) и разработка системы отслеживания их перемещений.

10.07.2024    521    AnastasiaKl    2       

1

Новость Искусственный интеллект ИТ-Новость

В 2024 году «Сколково» выделит пилотным проектам в сфере искусственного интеллекта гранты на общую сумму 554 млн рублей. В результате отбора финансирование получат проекты с применением ИИ в областях производства, операционной деятельности и в работе предоставляемых сервисов.

12.04.2024    1057    AnastasiaKl    3       

3

Новость ИТ-Новость

Пятничное: в России вступил в силу стандарт подготовки по дисциплине «спортивное программирование». В стандарт вошли требования к физическим показателям спортсменов и скорости набора текста.

16.02.2024    858    VKuser24342747    2       

1

Новость ИТ-Новость

Федеральное агентство по техническому регулированию и метрологии (Росстандарт) утвердило национальный стандарт протокола LoRaWAN RU, таким образом он получил официальный статус. Технология используется для беспроводной передачи данных между устройствами интернета вещей.

19.01.2024    651    VKuser24342747    0       

2

Новость Законодательство ИТ-Новость

12 декабря вступил в силу Федеральный закон, меняющий срок, к которому все владельцы сайтов должны внести изменения в порядок авторизации пользователей на сайте. Закон вводит переходный период до 1 января 2025 года.

20.12.2023    795    VKuser24342747    2       

1
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение