Gymterview
junior

Какие ключевые нововведения появились в Java 11?

Java 11 — первый LTS-релиз после Java 8 в новой модели релизов (каждые 6 месяцев). Многие проекты мигрировали напрямую с Java 8 на Java 11.

Основные нововведения

Категория Нововведение
API HttpClient API (стандартный HTTP/2 клиент)
Язык var в лямбда-параметрах
API Новые методы String: isBlank(), lines(), strip(), repeat()
API Optional.isEmpty()
API Files.readString(), Files.writeString()
Запуск Запуск .java файлов без явной компиляции
Удалено Java EE модули (JAXB, JAX-WS, CORBA)
Удалено JavaFX (вынесен в отдельный проект)
GC Epsilon GC (no-op сборщик), ZGC (экспериментальный)
Удалено Nashorn JavaScript Engine (deprecated)

Новые методы коллекций и файлов

Пример
// Collection.toArray() с IntFunction
List<String> list = List.of("a", "b", "c");
String[] array = list.toArray(String[]::new); // вместо list.toArray(new String[0])

// Files — чтение/запись строк
String content = Files.readString(Path.of("file.txt"));
Files.writeString(Path.of("output.txt"), "Hello Java 11");

// Optional.isEmpty() — инверсия isPresent()
Optional<String> opt = Optional.empty();
if (opt.isEmpty()) { ... } // вместо !opt.isPresent()

// Predicate.not() — инверсия предиката
List<String> nonBlank = lines.stream()
    .filter(Predicate.not(String::isBlank))
    .toList();

Частые ошибки

  • Миграция с Java 8 без проверки удалённых модулей — JAXB, JAX-WS больше не в JDK; нужно добавить зависимости
  • Путать strip() и trim()strip() корректно обрабатывает Unicode-пробелы, trim() — только ASCII
  • Не обновлять библиотеки при миграции — многие библиотеки (Lombok, Mockito, ASM) требуют обновления для Java 11+

Как используется в 2026

  • Java 11 end-of-life для бесплатной поддержки у большинства вендоров
  • Рекомендуется миграция на Java 21 или 25; новые проекты на Java 11 не стартуют
  • Многие legacy-проекты всё ещё на Java 11, постепенно мигрируют

На собеседовании: интервьюер ожидает, что вы не просто перечислите новые API, а знаете, какие модули были удалены и почему миграция с Java 8 на 11 нетривиальна. Частая ошибка — забыть упомянуть удаление Java EE модулей (JAXB, JAX-WS).