[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-kakie-klyuchevye-novovvedeniya-poyavilis-v-java-17":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},401,"kakie-klyuchevye-novovvedeniya-poyavilis-v-java-17",11,"java-11-25","Java 11–25","🆕","Какие ключевые нововведения появились в Java 17?","Java 17 — второй LTS после Java 11, ставший минимальной версией для Spring Boot 3.x и Spring Framework 6.x. В этом релизе финализированы Records, Sealed Classes, Pattern Matching и Text Blocks.\n\n### Нововведения по версиям (Java 12-17)\n\n| Версия | Нововведение |\n|--------|-------------|\n| Java 12 | Switch Expressions (preview) |\n| Java 13 | Text Blocks (preview) |\n| Java 14 | Records (preview), Pattern Matching для instanceof (preview), NullPointerException с подробностями |\n| Java 15 | Text Blocks (final), Sealed Classes (preview), ZGC (production) |\n| Java 16 | Records (final), Pattern Matching для instanceof (final), Stream.toList() |\n| Java 17 | Sealed Classes (final), удалён Security Manager, новый macOS rendering pipeline |\n\n\u003Cdetails>\u003Csummary>Пример: Helpful NullPointerException и Stream.toList()\u003C\u002Fsummary>\n\n```java\n\u002F\u002F Helpful NullPointerException (Java 14)\nvar user = getUser();\nvar street = user.getAddress().getStreet().toUpperCase();\n\u002F\u002F До Java 14: NullPointerException\n\u002F\u002F Java 14+: Cannot invoke \"Address.getStreet()\" because the return value of\n\u002F\u002F           \"User.getAddress()\" is null\n\n\u002F\u002F Stream.toList() (Java 16) — unmodifiable list\nList\u003CString> names = users.stream()\n    .map(User::getName)\n    .toList(); \u002F\u002F вместо .collect(Collectors.toList())\n```\n\n\u003C\u002Fdetails>\n\n### Частые ошибки\n\n- `stream().toList()` vs `stream().collect(Collectors.toList())` — `toList()` возвращает неизменяемый список; если нужен мутабельный — `collect(Collectors.toList())`\n- Не обновить зависимости при миграции на 17 — Lombok, Mockito, Byte Buddy, ASM требуют обновления\n\n### Как используется в 2026\n\n- Java 17 — актуальная LTS, широко используется в продакшене\n- Большинство enterprise-проектов на Java 17 или мигрируют на Java 21\n- Новые проекты стартуют на Java 21 или 25\n\n> **На собеседовании:** главное — знать, что Java 17 обязательна для Spring Boot 3.x, и уметь перечислить ключевые финализированные фичи: Records, Sealed Classes, Pattern Matching для instanceof, Text Blocks. Частая ошибка — не знать разницу между `toList()` и `collect(Collectors.toList())`.","","junior",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Какие ключевые нововведения появились в Java 11? — Gymterview","Java 11 — первый LTS-релиз после Java 8 в новой модели релизов (каждые 6 месяцев). Многие проекты мигрировали напрямую с Java 8 на Java 11.","Java 11 — первый LTS-релиз после Java 8 в новой модели релизов (каждые 6 месяцев). Многие проекты мигрировали напрямую с",[15,13],true]