Что нового в Java 16 и как на это отреагировали разработчики
С помощью экспертов разобрались, что нового и интересного появилось в Java 16, а также собрали мнения разработчиков из соцсетей.
Вчера в новости мы кратко рассказали, что в Java 16 нового. Для этой статьи мы попросили экспертов поделиться мнением об изменениях, а также собрали комментарии разработчиков по поводу выхода Java 16 и появившихся возможностей.

Пользователи соцсетей тоже активно обсуждают нововведения в Java 16, но пока это чисто теоретический интерес. На Reddit под новостью о релизе Java 16 даже устроили небольшую перепись, кто какой версией пользуется.
Многие пишут на Java 8, но есть и те, кто до сих пор использует Java 7, Java 6 и Java 5. В некоторых компаниях недавно завершили миграцию с Java 8 на Java 11, есть и те, кто только начинает этот процесс.
Подписчики нашего новостного канала в Telegram тоже обсудили, с какими версиями Java им приходится работать.
Какие возможности Java 16 выделяют разработчики
Полный список нововведений можно посмотреть на странице релиза. Здесь же собраны только те возможности, которые вызвали у разработчиков наибольший интерес.
- Pattern Matching — оператор instanceof с паттерн-матчингом теперь стал стабильной синтаксической конструкцией и больше не требует флага
--enable-preview
. - Stream.toList() — метод собирает содержимое Stream в неизменяемый список и возвращает его.
- Stream.mapMulti() — императивный аналог Stream.flatMap(), принимающий процедуру с двумя параметрами, где первый параметр – текущий элемент, а второй – Consumer, в который кладутся значения.
- Records — записи обеспечивают компактный синтаксис для объявления классов, позволяющий в некоторых случаях обойтись без явного определения низкоуровневых методов вроде equals(), hashCode() и toString().


Пользователи соцсетей тоже оценили добавление метода Stream.toList() и уже планируют применять его в своих проектах.
Card
Lombok по умолчанию не работает на Java 16. Есть патч, но к нему много вопросов
Библиотека Lombok несовместима с JDK 16. Чтобы обойти ограничение, разработчики использовали разные хаки — например, прописывали кучу флагов --add-opens
в конфигурации. Но после релиза Java 16 появился патч, который устраняет этот недостаток. Однако к его реализации есть вопросы. Вот большой разбор с указанием возможных негативных последствий. Если кратко — в любой момент Lombok может сломаться.
В любом случае, возможности Java 16 показывают разработчикам, чего следует ожидать от следующей версии с длительной поддержкой. Релиз Java 17 LTS запланирован на сентябрь 2021 года.