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

04.10.2021      38108

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 или же хочет получить платную поддержку, есть коммерческая лицензия.

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


См. также

Новость ИТ и 1С

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

11.12.2024    878    user1915669    3       

2

Новость ИТ и 1С ФНС ЭДО

Федеральная налоговая служба запустила интерактивный сервис, позволяющий формировать в машиночитаемом виде договоры, контракты, соглашения и спецификации. Чтобы создать документ и скачать получившийся файл, регистрация не требуется.

03.12.2024    725    user2114475    0       

2

Новость ИТ и 1С

Российский Альянс по искусственному интеллекту обновил требования к специалистам по ИИ: вышла новая модель с основными профессиями и навыками. Теперь базовых профессий в сфере ИИ осталось только четыре.

01.11.2024    890    user1915669    0       

3

Новость ИТ и 1С

Система платежей «Волна» по планам сделает возможной бесконтактную оплату для владельцев IPhone в России, а BRICS Pay позволит совершать безналичные расчеты иностранцам по картам Visa и Mastercard.

23.10.2024    1163    AnastasiaKl    0       

4

Новость ИТ-компания ИТ и 1С

Конструктор сайтов Wix уходит из России с 12 сентября 2024 года – перестанут работать все российский аккаунты. Сайты, привязанные к аккаунтам, также перестанут работать.

11.09.2024    1182    user1915669    2       

2

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

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

23.07.2024    807    user1915669    0       

2

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

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

18.07.2024    931    AnastasiaKl    0       

1

Новость ИТ и 1С

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

17.07.2024    1010    user1915669    0       

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