Ответ
Java 15 (не-LTS):
- Sealed Classes (Preview): Ограничивают, какие классы могут наследовать или реализовывать класс/интерфейс.
public sealed class Shape permits Circle, Square, Rectangle { } - Text Blocks (Final): Многострочные строковые литералы, упрощающие работу с JSON, HTML, SQL.
String query = """ SELECT id, name FROM users WHERE active = true """;
Java 17 (LTS - долгосрочная поддержка):
- Sealed Classes (Final): Стабильная версия фичи.
- Pattern Matching for
switch(Preview): Позволяет использовать паттерны и деструктуризацию в оператореswitch.String formatted = switch(obj) { case Integer i -> String.format("int %d", i); case String s -> String.format("String %s", s); case null, default -> "Unknown"; }; - Records (Final): Краткий синтаксис для создания неизменяемых классов-контейнеров данных.
record Point(int x, int y) { } Point p = new Point(5, 10); System.out.println(p.x()); // Геттер генерируется автоматически - Удаление устаревшего: Окончательно удалены Applet API и Security Manager (помечены на удаление).
- Контекстно-зависимые классы-идентификаторы (Preview): Позволяют определять локальные классы, интерфейсы и перечисления в любом месте.
Почему это важно: Java 17 — ключевой LTS-релиз, консолидирующий множество preview-фич (Records, Text Blocks, Sealed Classes) в стабильные, готовые к production-использованию.