Осенью 2021 года вышла новая версия языка Java. Нововведения, вошедшие в Java 16 я уже описывал. Также рекомендую ознакомиться с учебником Java.
В Java 17 можно выделить следующие основные изменения, о которых нам точно необходимо знать:
- Восстановление всегда строгой семантики чисел с плавающей точкой
- Запечатанные классы
- SecurityManager помечен как подлежащий удалению
- Applet API помечен как подлежащий удалению
- Порт под macOS/AArch64
Полный список всех изменений размещён на https://openjdk.java.net/projects/jdk/17/.
Восстановление всегда строгой семантики для чисел с плавающей точкой
В самых первых версиях Java была строгая семантика выполнения операций над числами с плавающей точкой. Однако в Java 1.2 от подобной логики по умолчанию отказались, но было введено ключевое слово strictfp, с помощью которого можно было его использовать там где нужно.
Начиная с Java 17 ключевое слово strictfp устарело, а логика операций над числами с плавающей точкой по умолчанию работает так, как бы она работала до Java 17 со strictfp.
Запечатанные классы
Окончательно вошли в состав Java в том виде, в каком были в Java 16.
SecurityManager помечен как подлежащий удалению
SecurityManager использовался для Java-апплетов, которые давно устарели и не работают ни в одном из браузеров, а также в серверах приложений Apache Tomcat, WebSphere и подобных, в которые уже тоже никто не деплоит разные приложения на один сервер приложений. Времена изменились.
Applet API помечен как подлежащий удалению
Applet API было помечено устаревшим ещё в Java 9, в Java 17 оно отмечено как подлежащее окончательному удалению. В этом, на самом деле, нет ничего страшного, так как ни один современный браузер уже не поддерживает плагин для Java-апплетов.
Порт под macOS/AArch64
OpenJDK был портирован на AArch64 для поддержки Apple M1.