Ответ
Основной опыт — с JDK 11 (LTS), как со стабильной и наиболее распространённой версией в enterprise-проектах. Также знаком с JDK 17 (LTS) и новыми возможностями.
Почему JDK 11? Долгосрочная поддержка, зрелость экосистемы и библиотек, требования многих legacy-систем.
Ключевые фичи разных версий:
- JDK 8: Lambda, Stream API,
java.time. - JDK 9: Модульная система (JPMS).
- JDK 10: Локальный вывод типа (
var). - JDK 11: Новые методы в
String,Files, HTTP-клиент (стандартный). - JDK 17: Sealed classes, pattern matching для
switch(preview).
Пример sealed class из JDK 17:
public sealed class Shape permits Circle, Rectangle {
// Базовый класс
}
public final class Circle extends Shape {
private final double radius;
// ...
}
Для новых проектов рассматриваю JDK 17+ или последний LTS, но выбор зависит от требований проекта и инфраструктуры.