Ответ
Java 21 — это долгосрочная поддерживаемая (LTS) версия, которая представила несколько завершенных и предварительных функций. Ключевые нововведения:
-
Завершенные (Final) функции:
- Virtual Threads (Виртуальные потоки) — легковесные потоки, упрощающие создание высокопроизводительных concurrent-приложений. Позволяют эффективно обслуживать миллионы одновременных задач.
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10_000).forEach(i -> { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return i; }); }); } - Record Patterns (Шаблоны записей) — декомпозиция значений записей (Record) в шаблонах
instanceofиswitch.// Декомпозиция в instanceof if (obj instanceof Point(int x, int y)) { System.out.println(x + y); } // Декомпозиция в switch switch (shape) { case Rectangle(Point(var x1, var y1), Point var p2) -> processRect(x1, y1, p2); case Circle(Point center, int radius) -> processCircle(center, radius); } - Pattern Matching for switch (Сопоставление с образцом для switch) — завершена возможность использования шаблонов, охраняющих условий (
when) иnullв выраженияхswitch. - Sequenced Collections (Упорядоченные коллекции) — новый унифицированный интерфейс для коллекций с четким порядком элементов (списки, очереди, двусторонние очереди). Добавлены методы
getFirst(),getLast(),addFirst(),reversed().
- Virtual Threads (Виртуальные потоки) — легковесные потоки, упрощающие создание высокопроизводительных concurrent-приложений. Позволяют эффективно обслуживать миллионы одновременных задач.
-
Предварительные (Preview) и инкубационные (Incubator) функции:
- String Templates (Шаблоны строк, Preview) — безопасная и эффективная интерполяция строк.
- Scoped Values (Областные значения, Preview) — неизменяемые данные, безопасно и эффективно разделяемые между потоками (альтернатива
ThreadLocal). - Structured Concurrency API (Структурная конкурентность, Incubator) — упрощает управление группами связанных задач, обрабатывая их как единую единицу работы.
-
Прочие улучшения: Обновления в сборщике мусора Generational ZGC и Shenandoah, новые методы в ключевых API (например,
Math.clamp).