Сергей Почекутов

Что нового в Java 16 и как на это отреагировали разработчики

С помощью экспертов разобрались, что нового и интересного появилось в Java 16, а также собрали мнения разработчиков из соцсетей.

4860

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

Пользователи соцсетей тоже активно обсуждают нововведения в Java 16, но пока это чисто теоретический интерес. На Reddit под новостью о релизе Java 16 даже устроили небольшую перепись, кто какой версией пользуется.

Card

Многие пишут на 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 может сломаться.


Однако не все разработчики считают несовместимость с Lombok серьёзной проблемой. Есть мнение, что Records покроет большую часть потребностей в использовании библиотеки.

В любом случае, возможности Java 16 показывают разработчикам, чего следует ожидать от следующей версии с длительной поддержкой. Релиз Java 17 LTS  запланирован на сентябрь 2021 года.

4860