Ответ
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-использованию.
Ответ 18+ 🔞
Ну и понеслась, блядь, эта ваша Java, как бешеная мартышлюшка с гранатой! Сидишь ты такой, только освоил восьмёрку, а они уже семнадцатую впаривают. Давайте разберём, что там за пиздопроебибна случилась за эти годы, а то голова кругом.
Java 15 (не-LTS, то есть — временщик, одноразовый):
-
Sealed Classes (Preview): Наконец-то, блядь, додумались! Теперь можно указать, какие конкретно ублюдки имеют право наследовать от твоего класса. Не то чтобы любой левый пидарас с улицы мог прийти и сказать «я твой сын». Прямо в коде пишешь разрешения, как в спецпропуск.
public sealed class Shape permits Circle, Square, Rectangle { }Видишь?
Shapeговорит: «В мою наследственную лигу входят толькоCircle,SquareиRectangle. Остальные — на хуй». -
Text Blocks (Final): О, ебать мои старые костыли, вот это действительно полезная штука! Раньше чтобы SQL-запрос в коде написать, приходилось его склеивать из кусков с плюсами и переносами
n, получалась такая каша, что волнение ебать. А теперь? Красота!String query = """ SELECT id, name FROM users WHERE active = true """;Три кавычки, и внутри как в блокноте пишешь. Удобно, блядь, как тёплый тапок.
Java 17 (LTS — вот это серьёзно, на этом можно сидеть годами):
-
Sealed Classes (Final): Всё, из Preview-режима вывели, теперь это полноценная, стабильная, не глючная фича. Можно в продакшене использовать без оглядки.
-
Pattern Matching for
switch(Preview): Это, сука, просто песня! Раньшеswitchбыл тупой как пробка, только с примитивами да enum'ами работал. А теперь? Теперь ему можно скормить любой объект, и он его разберёт на запчасти прямо в кейсах!String formatted = switch(obj) { case Integer i -> String.format("int %d", i); case String s -> String.format("String %s", s); case null, default -> "Unknown"; };Смотри: взял
obj, если этоInteger— сразу в переменнуюiраспаковал и используй. Красота, в рот меня чих-пых! Пока ещё Preview, но уже охуенно. -
Records (Final): Вот это, блядь, главный хит сезона! Раньше чтобы создать класс, который просто хранит данные (типа
Pointс x и y), нужно было писать тонну boilerplate-кода: поля, конструктор, геттеры,equals,hashCode,toString... Удивление пиздец, сколько писанины! А теперь?record Point(int x, int y) { } Point p = new Point(5, 10); System.out.println(p.x()); // Геттер генерируется автоматически, да!Одна строчка, блядь! И всё нужное уже там есть. Гениально и просто. В семнадцатой уже финальная, стабильная версия.
-
Удаление устаревшего: Выкинули на мороз, наконец-то, этих двух дедов — Applet API и Security Manager. Все ими уже лет двадцать не пользовались, а они тут место занимали. Правильно, блядь, пора на свалку истории.
-
Контекстно-зависимые классы-идентификаторы (Preview): Ну это такая хитрая жопа, позволяет объявлять локальные классы и интерфейсы прямо где угодно, не только на уровне класса. Пока preview, посмотрим, приживётся ли.
А теперь главное, почему вся эта хуйня важна: Java 17 — это, сука, тот самый мощный LTS-релиз, где собрали и довели до ума все preview-плюшки последних лет. Records, Text Blocks, Sealed Classes — теперь это всё стабильно, как швейцарские часы. Если начинать новый серьёзный проект — стартуй с семнадцатой, не ошибёшься. Всё остальное — просто промежуточные станции на пути к этому оазису.