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

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

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

Артём Первушин
Артём Первушин

IT-директор Extyl

В нашей работе часто нет возможности применять новые версии языка на следующий день после выпуска. Думаю, нас поймут разработчики, которые, как и мы, работают с крупными заказчиками в сфере финансов или производства. Их продукты огромны и неповоротливы, они разрабатываются и дорабатываются годами. Когда в них добавляется новый функционал, приходится работать с устаревшими версиями Java. Новые версии мы применяем только через 1-2 года после выхода, когда выпустят обновления для устранения уязвимостей и исправят баги.

Как правило, мы используем актуальные LTS (Long Time Support — поддержка в течение длительного времени) версии Java, если нет требований к понижению. Это позволяет дольше не переходить на более свежие версии, потому что поддержка и пакеты обновлений доступны в течение длительного срока. LTS поддерживается производителем дольше и часто более стабильна по сравнению с обычными версиями, так как при их выпуске разработчики стараются не экспериментировать со всевозможными новинками. Это принципиально важно, когда речь идет об ответственных проектах, от которых зависит работа вашей компании.

Чтобы мы перешли на новую версию языка и применили ее в проекте, нужны особые обстоятельства: очень привлекательные новые фишки, подходящий проект и необычайное любопытство.

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

Card

Многие пишут на Java 8, но есть и те, кто до сих пор использует Java 7, Java 6 и Java 5.  В некоторых компаниях недавно завершили миграцию с Java 8 на Java 11, есть и те, кто только начинает этот процесс.

Подписчики нашего новостного канала в Telegram тоже обсудили, с какими версиями Java им приходится работать.

Версии Java

Какие возможности Java 16 выделяют разработчики

Полный список нововведений можно посмотреть на странице релиза. Здесь же собраны только те возможности, которые вызвали у разработчиков наибольший интерес.

  • Pattern Matching — оператор instanceof с паттерн-матчингом теперь стал стабильной синтаксической конструкцией и больше не требует флага --enable-preview.
  • Stream.toList() — метод собирает содержимое Stream в неизменяемый список и возвращает его.
  • Stream.mapMulti() — императивный аналог Stream.flatMap(), принимающий процедуру с двумя параметрами, где первый параметр – текущий элемент, а второй – Consumer, в который кладутся значения.
  • Records — записи обеспечивают компактный синтаксис для объявления классов, позволяющий в некоторых случаях обойтись без явного определения низкоуровневых методов вроде equals(), hashCode() и toString().
Роман Иванов
Роман Иванов

Java-разработчик

Это релиз Java лично для меня очень интересен, потому что в нем появился стабильный Pattern Matching. Это полезная конструкция, о ней давно говорили и вот, наконец, дождались. Так как я очень люблю стримы, то появление методов Stream.toList() и Stream.mapMulti() меня очень обрадовало. Они позволят писать ещё лаконичнее. Ну и также стоит упомянуть о появлении Records. Их я ещё не распробовал, но на неделе исправлюсь.

Юрий Авраменко
Юрий Авраменко

Senior Software Developer

Еще не полностью ознакомился с нововведениями. Но могу отметить, что в этой версии добавлен новый метод в интерфейс Stream пакета java.util.stream, метод toList(). Он сделает удобнее работу со стримами, так как необходимость использования метода toList() при работе со стримами очень востребована. Осталось только дождаться методов toSet() и toMap().

Пользователи соцсетей тоже оценили добавление метода Stream.toList() и уже планируют применять его в своих проектах.
Card

Lombok по умолчанию не работает на Java 16. Есть патч, но к нему много вопросов

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


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

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

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации