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).