Состоялся релиз Java 17 с расширеной поддержкой (LTS). Предыдущая версия с расширеной поддержкой, Java 11, вышла в 2018 году.
Наиболее примечательным изменением в данной версии является то, что поддержка «запечатаных» (sealed) классов и интерфейсов вышла из стадии предварительного просмотра и признана готовой к использованию.
Запечатанные (sealed) типы — это классы или интерфейсы, накладывающие ограничения на другие классы или интерфейсы, которые могут расширять или реализовывать их. Для объявления запечатанного класса или интерфейса используется модификатор sealed. Список подтипов может быть перечислен при объявлении запечатанного класса или интерфейса после ключевого слова permits. В случае если подтипы находятся в том же пакете или модуле, компилятор сам может вывести список подтипов и permits в объявлении запечатанного класса или интерфейса можно опустить.
sealed interface Color permits BiColor, TriColor { }
	
record BiColor(int r, int g, int b) implements Color {}
record TriColor(int r, int g, int b) implements Color {}
Реализованы спецификации:
- 
JEP 306: Restore Always-Strict Floating-Point Semantics 
 Операции с плавающей запятой теперь будут постоянно строгими, вместо того чтобы иметь как строгую семантику с плавающей запятой (strictfp), так и слегка отличающуюся семантику с плавающей запятой по умолчанию.
- 
JEP 356: Enhanced Pseudo-Random Number Generators 
 Создан новый интерфейсRandomGeneratorи реализации для генераторов псевдослучайных чисел (PRNG):SplittableRandomGenerator,JumpableRandomGenerator,LeapableRandomGenerator,ArbitrarilyJumpableRandomGenerator.
- 
JEP 382: New macOS Rendering Pipeline 
 Добавлен новый конвейер рендеринга для macOS, использующий API Metal, в качестве альтернативы существующему конвейеру, использующему устаревший API OpenGL.
- 
JEP 391: macOS/AArch64 Port 
 Реализовано выполнение Java-кода на базе инструкций AArch64 без использования Rosetta 2.
- 
JEP 398: Deprecate the Applet API for Removal 
 Applet API помечен на удаление и будет удалён в последующих релизах.
- 
JEP 403: Strongly Encapsulate JDK Internals 
 Полностью убрана возможность ослабить строгую инкапсуляцию внутренних частей JVM; параметр--illegal-access, позволявший это сделать в предыдущих версиях, удалён.
- 
JEP 406: Pattern Matching for switch (Preview) 
 Реализован редварительный просмотр Pattern Matching для конструкцииswitch.
- 
JEP 407: Remove RMI Activation 
 Механизм активации RMI удалён.
- 
JEP 409: Sealed Classes 
 Запечатанные классы или интерфейсы ограничивают доступ к их расширению или реализации посредством явного указания классов/интерфейсов которым это разрешено.
- 
JEP 410: Remove the Experimental AOT and JIT Compiler 
 Удалена экспериментальная поддержка АОТ-компилятора.
- 
JEP 411: Deprecate the Security Manager for Removal 
 Security Manager помечен как устаревший и будет удалён в последующих версиях вместе с Applet API.
- 
JEP 412: Foreign Function & Memory API (Incubator) 
 Улучшены два ранее созданных API: Foreign-Memory Access API и Foreign Linker API.
- 
JEP 414: Vector API (Second Incubator) 
 Вторая версия для предварительного просмотра, где была улучшена производительность и реализация Vector API, включая улучшения преобразования байтовых векторов в логические массивы из них.
- 
JEP 415: Context-Specific Deserialization Filters 
 Добавлена настраиваемая фабрика фильтров для всей JVM. Эти фильтры являются динамическими и зависят от контекста, в отличие от единственного статического фильтра десериализации для всей JVM. Для обратной совместимости, если фабрика фильтров не задана, встроенная фабрика возвращает статический фильтр для всей JVM, если он был настроен.
>>> Подробности








