[Перевод] Отчёт о тенденциях Java от InfoQ за 2024
Ключевые выводы
Хотя Java 17 остаётся наиболее часто используемой версией JDK, другие версии всё ещё также активно используются. Данные отчёта «Состояние экосистемы Java 2024» от New Relic говорят о следующем распределении: 35% используют Java 17, 33% — Java 11, а 29% — Java 8.
Согласно данным New Relic, «быстрое внедрение» демонстрирует всего 1,4% использования Java 21. Это быстрее, чем внедрение любой LTS-версии начиная с Java 8, но всё же составляет лишь небольшую долю.
Java перестала ассоциироваться исключительно с медленной и устаревшей платформой.
Тема искусственного интеллекта, хоть и несколько утихла после бурного старта в начале 2024 года, остаётся актуальной. Подход к искусственному интеллекту стал более взвешенным: он больше не воспринимается как универсальный инструмент, решающий все проблемы.
Появление Commonhaus Foundation, новой некоммерческой организации, посвящённой устойчивому развитию open-source библиотек и фреймворков, стало значительным событием. Она занимается планированием преемственности и финансовой поддержкой автономных open-source проектов.
В экосистеме Java наконец набирает популярность WebAssembly, догоняя такие языки, как Go и Rust.
В этой статье представляем отчёт, в котором команда редакторов InfoQ описывает текущее состояние внедрения технологий и выявляет новые тенденции в Java. Основное внимание уделяется языку Java, смежным языкам, таким как Kotlin и Scala, а также Java Virtual Machine (JVM) и Java-фреймворкам и утилитам. Мы обсудим как ключевые тенденции в самой Java (например, принятие новых версий), так и эволюцию фреймворков — Spring Framework, Jakarta EE, Quarkus, Micronaut, Helidon, MicroProfile и EclipseStore (бывшая open-source версия MicroStream).
Также обсуждение этих тенденций можно послушать в подкасте. В нём участвуют Ишель Руис (Ixchel Ruiz), старший разработчик в Karakun, и Гуннар Морлинг (Gunnar Morling), инженер-программист в Decodable. Подкаст дополняет отчёт, раскрывая основные тренды Java в 2024 году.
У отчёта две основные цели:
Помочь техническим лидерам принимать обоснованные решения о долгосрочных инвестициях в технологии.
Помочь разработчикам выбрать, куда направить своё время и ресурсы для обучения и развития навыков.
Это уже шестой по счёту отчёт о тенденциях Java. Однако за этими темами мы следим ещё с 2006 года, фиксируя изменения в экосистеме Java и JVM.
Для анализа текущих и будущих тенденций InfoQ и QCon используют ментальную модель «Преодоление пропасти», разработанную Джеффри Муром (Geoffrey Moore) в его книге с аналогичным названием. Мы стараемся выявить идеи, которые соответствуют рынку энтузиастов: «База клиентов состоит из технических энтузиастов и визионеров, которые стремятся воспользоваться новой возможностью или избежать надвигающейся проблемы».
Как и в отчётах за 2023, 2022, 2021, 2020, и 2019 годы, мы представляем внутренний график тем для 2024 года:
Для сравнения, это наш внутренний тематический график на 2023 год:
Jakarta EE 11, запланированный к GA-релизу в ноябре 2024 года, перемещается в категорию «Инноваторы» благодаря активной разработке в рамках 16 спецификаций, которые уже прошли обновление и проверки в начале года. Версия Jakarta EE 11-M4, доступная с июня 2024 года, позволила разработчикам протестировать новые функции таких спецификаций, как Jakarta Security 4.0, Jakarta Validation 3.1, а также Jakarta Data 1.0. В результате Jakarta EE 10 (релиз в сентябре 2022 года), Jakarta EE 9 (релиз в декабре 2020 года) и Jakarta EE 8 (релиз в сентябре 2019 года) переместились в категории «Ранние последователи» (Early Adopters), «Раннее большинство» (Early Majority) и «Позднее большинство» (Late Majority) соответственно.
GraalPy и GraalWasm также попадают в категорию «Инноваторы», поскольку оба этих проекта под эгидой GraalVM теперь считаются стабильными и готовыми для рабочих нагрузок с релизом GraalVM для JDK 23.
Java 21 переместился в категорию «Ранние последователи», так как всё больше фреймворков, таких как Spring, Jakarta EE и Helidon, либо требуют Java 21 в качестве базовой версии, либо поддерживают Java 21 при минимальной базовой версии Java 17. В результате Java 17 перемещается в категорию «Раннее большинство».
Фреймворки виртуальных потоков (Helidon Níma и Vert.x) также переместились в категорию «Ранние последователи», поскольку Helidon и Vert.x в своих последних версиях реализовали серверы с поддержкой виртуальных потоков.
Мы переместили Helidon в категорию «Раннее большинство» благодаря поддержке виртуальных потоков, реализованной в версии Helidon 4.0, выпущенной в октябре 2023 года, с новым реконструированным веб-сервером на виртуальных потоках. Версии Helidon 3.0 и 2.0 по-прежнему поддерживают реактивный сервер.
Scala 3, выпущенный в мае 2021 года, был перемещён в категорию «Позднее большинство» из-за медленных темпов разработки в рамках серии релизов Scala 3.
Быстрый запуск JVM (CRaC) был перемещён в категорию «Ранние последователи», так как Azul и BellSoft реализовали технологию Coordinated Restore at Checkpoint (CRaC) в своих производных дистрибутивах OpenJDK. Таким образом, Быстрый запуск JVM (GraalVM) переместился в категорию «Раннее большинство».
Ниже представляем обзор обсуждений различных тем среди редакторов InfoQ Java Queue и Java Champions.
Среди высказавшихся
Майкл Редлих (Michael Redlich): Java Champion, директор Garden State Java User Group, дев-адвокат и технический писатель в Payara, главный редактор Java Queue на InfoQ
Бен Эванс (Ben Evans): Java Champion, Observability Lead и ведущий инженер Red Hat Runtimes, редактор Java Queue на InfoQ
А Н М Базлур Рахман (A N M Bazlur Rahman): Java Champion, старший разработчик в DNAstack, редактор Java Queue на InfoQ
Холли Камминс (Holly Cummins): Java Champion, ведущий инженер в Red Hat
Грейс Дженсен (Grace Jansen): Java Champion, Дев-адвокат разработчиков в IBM
Эмили Джианг (Emily Jiang): Java Champion, дев-адвокат, архитектор облачных решений и архитектор Liberty для MicroProfile и CDI в IBM
Ивар Гримстад (Ivar Grimstad): Java Champion, дев-адвокат разработчиков Jakarta EE в Eclipse Foundation
Андреа Перуффо (Andrea Peruffo): ведущий инженер в Red Hat.
Java и искусственный интеллект
Грейс Дженсен / Эмили Джианг:
Начнём с того, что искусственный интеллект значительно изменился за последний год и всё ещё остаётся активно обсуждаемой темой. У Java-разработчиков появляется всё больше инструментов и интеграций, которые помогают в разработке приложений.
Ивар Гримстад:
Искусственный интеллект безусловно быстро завоевал внимание, став популярной темой обсуждения. Хотя шумиха всё ещё присутствует, но сейчас мы наблюдаем более взвешенный подход, где искусственный интеллект не воспринимается как универсальное решение. Теперь в экосистеме Java инструменты, библиотеки и фреймворки становятся более зрелыми. Разработчики уже не заявляют: «Нужно перейти на Python», а чаще говорят: «Я всё ещё могу использовать Java для искусственного интеллекта». Такие библиотеки, как LangChain4j, значительно улучшают опыт разработчиков.
Commonhaus Foundation
На конференции Devnexus 2024 Java-сообществу была представлена Commonhaus Foundation — новая некоммерческая организация, посвящённая устойчивому развитию open-source библиотек и фреймворков. Она занимается планированием преемственности и финансовой поддержкой автономных open-source проектов.
Миссия:
Содействовать разнообразному сообществу разработчиков, участников и пользователей в создании, поддержке и развитии open-source библиотек и фреймворков, обеспечивая их долгосрочный рост и стабильность через совместное управление и сотрудничество.
Холли Камминс:
В области open-source происходят интересные изменения. Некоторые известные проекты в экосистеме Java переходят от лицензий с открытым исходным кодом к лицензиям Business Source. Но мы также наблюдаем обратную тенденцию — большую открытость в разных областях. Commonhaus Foundation — это новая многоцелевая open-source организация, аналогов которой не существовало в прошлом году.
Базлур Рахман:
Как активный пользователь Hibernate, Jackson, OpenRewrite и JBang, я рад видеть, что эти проекты обрели новый дом в рамках Commonhaus Foundation. Я уверен, что фонд обеспечит их долгосрочную поддержку и устойчивость, давая уверенность в том, что эти важные инструменты продолжат развиваться и поддерживать наши усилия в разработке. Я надеюсь, что приверженность фонда прозрачности и совместной работе с сообществом создаст среду, в которой разработчики и участники, такие как я, смогут успешно развиваться.
Бен Эванс:
Commonhaus Foundation предлагает новую модель для организации open-source фондов, а также способ для компаний напрямую финансировать и поддерживать проекты, которые являются для них критически важными, через независимую платформу, которая владеет интеллектуальной собственностью и не может изменить лицензию используемого open-source кода. Commonhaus Foundation — это open-source для эпохи облаков, признающая важность нескольких ключевых проектов и проблемы с их финансированием.
Spring Framework 6 и Spring Boot 3
Базлур Рахман:
Я заметил возросшую попудярность внедрения Spring 6 и Spring Boot 3+. В нашей компании мы практически полностью мигрировали все приложения на Spring Boot 3+. Кажется, что Spring Boot и Quarkus становятся основными фреймворками для разработки облачных приложений.
Бен Эванс:
Неумолимый рост популярности Quarkus продолжает забирать долю рынка у Spring Boot, укрепляя его второе место среди фреймворков для микросервисов.
Java 17 и далее
Грейс Дженсен / Эмили Джианг:
За последний год возросло внимание к вопросу улучшения Java с целью соответствия современным требованиям приложений. Что включает в себя повышение производительности для облачных решений и усиление безопасности. Всё больше внимания уделяется технологиям контрольных точек и восстановления (например, Liberty InstantOn, CRIU [Checkpoint Restore in Userspace] и CRaC), которые помогают ускорить запуск Java-приложений и делают их более подходящими для облачных и бессерверных вычислений.
Кроме того, введение виртуальных потоков стало большим шагом вперёд в области конкурентного программирования на Java. Однако работа над этим направлением всё ещё продолжается, и в некоторых случаях остаются проблемы с производительностью.
Что касается безопасности, особенно радует увеличившаяся доступность модулей криптографии для Java, сертифицированных по последнему стандарту FIPS 140–3, что расширяет применение Java в регулируемых отраслях.
Кроме того, с окончанием бесплатного коммерческого использования Oracle JDK 17 в сентябре ушедшего года, что требует перехода клиентов на подписку Java SE Universal от Oracle, мы наблюдаем рост интереса к альтернативам Java, основанным на проекте OpenJDK с открытым исходным кодом. Среди примеров — IBM Semeru Runtimes for Java, который недавно получил поддержку стандарта FIPS 140–3. На самом деле, компания Azul уже заявляет, что «более 70% респондентов [опроса State of Java] рассматривают альтернативы Java, не связанные с Oracle».
Будет интересно увидеть, как эти изменения в лицензировании повлияют на дальнейшее развитие и инновации в области OSS Java.
Андреа Перуффо:
Репутация Java как медленной и устаревшей платформы осталась в прошлом. Хотя она сохраняет сильную обратную совместимость и быстрое исправление ошибок, сейчас наблюдается явный курс на развитие инноваций. Прежний страх перед разрушительными изменениями сменился сбалансированным подходом, который позволяет двигаться вперёд, не жертвуя стабильностью. Кроме того, Java улучшает свою совместимость с другими экосистемами, что упрощает взаимодействие с различными языками и технологиями, повышая её гибкость и привлекательность для разработчиков.
Базлур Рахман:
Быстрое внедрение Java 21 было впечатляющим, хотя большинство компаний всё ещё используют Java 17. Тем не менее, заметно, что всё больше компаний переходят с более старых версий JDK на более новые по сравнению с предыдущими годами.
Бен Эванс:
Java 17 постепенно занимает место самой популярной версии JDK, всё чаще становясь новой отправной точкой. Ранее проекты часто ориентировались на Java 8 как минимальную версию, которая должна поддерживаться. Сейчас эту роль всё больше выполняет Java 17. Виртуальные потоки, новые паттерны и сопутствующие функции появляются, хотя пока они доступны только в предварительных версиях.
Jakarta EE
Базлур Рахман:
В экосистеме Jakarta EE предпринимается множество усилий для внедрения JDK 21, и ожидается большой интерес к выходу Jakarta EE 11.
Майкл Редлих:
Для обновления 16 спецификаций Jakarta EE к предстоящему выпуску Jakarta EE 11 была проделана большая работа. Среди множества улучшений — удаление ссылок на устаревший класс SecurityManager и добавление поддержки Java records.
Я с нетерпением жду возможности представлять Garden State Java User Group в группе интересов Jakarta EE Future Directions, созданной в июле 2024 года. Цель группы — проводить мозговые штурмы и исследования для формирования «конкретных, приоритетных рекомендаций, которые будут своевременно передаваться рабочим группам Jakarta EE и MicroProfile для использования рыночных тенденций».
Что говорит сообщество Java?
Холли Камминс:
Как и везде, искусственный интеллект занимает центральное место в обсуждениях. Вопросы включают: что мы должны делать в мире Java, чтобы использовать его возможности? Какую часть нашего Java-кода может написать искусственный интеллект? Также я слышу много обсуждений проекта Leyden, поскольку он представляет собой интересную архитектуру и имеет потенциал значительно улучшить производительность.
Ивар Гримстад:
Очевидно, тема искусственного интеллекта остаётся актуальной, как в техническом аспекте, так и в том, как она конкретно повлияет на разработчиков. Приятно отметить, что сейчас дискуссии больше сосредоточены на том, как использовать эти новые инструменты и технологии, а не на страхах потерять работу, как это было в начале года.
Андреа Перуффо:
Как и остальная технологическая индустрия, сообщество Java много обсуждает тему искусственного интеллекта. Java продолжает адаптироваться и находить новые возможности в этой области. Появляются захватывающие инструменты, которые сокращают разрыв и делают искусственный интеллект более доступным для приложений на Java. Благодаря десятилетиям опыта Java хорошо подготовлена к решению будущих задач и остаётся ценной в различных контекстах.
Базлур Рахман:
Сообщество продолжает активно обсуждать виртуальные потоки, поскольку многие компании начали внедрять JDK 21. Появилось множество кейсов. Хотя отзывы в основном положительные, выявлены и некоторые сложности. Например, Netflix при использовании виртуальных потоков столкнулся с ситуацией, похожей на взаимную блокировку.
Бен Эванс:
Я часто слышу о том, как OpenTelemetry укрепляет свои позиции в качестве ведущей технологии наблюдаемости для Java.
Майкл Редлих:
В сообществе Java за последний год появилось несколько заметных трендов, но мне особенно понравился One Billion Row Challenge, инициированный Гуннаром Морлингом (Gunnar Morling), разработчиком в Decodable. Задача заключалась в написании программы на Java, которая извлекала бы значения температур с метеостанций по всему миру и рассчитывала минимальную, максимальную и среднюю температуру для каждой станции. Данные хранились в текстовом файле с 1 000 000 000 строк. Из 164 заявок самое быстрое время составило чуть более 1,5 секунд, чего добилась команда под руководством Томаса Вёртингера (Thomas Wuerthinger), вице-президента по разработке в Oracle и основателя GraalVM.
Что нового и неожиданного?
Холли Камминс:
LangChain4j определённо впечатляет. Теперь, чтобы использовать возможности искусственного интеллекта, необязательно хорошо знать Python. Это также снижает объём работы с проприетарными API для каждого поставщика искусственного интеллекта.
Грейс Дженсен / Эмили Джианг:
Неожиданным прорывом стал рост популярности Platform Engineering и потенциал использования Java-разработчиками внутренних платформ для разработчиков (IDP), таких как Backstage и Red Hat Developer Hub. Эти платформы помогают упростить поставку приложений и снизить когнитивную нагрузку разработчиков. Появляются проекты, делающие следующий шаг в этом направлении — они предлагают SaaS-решения для конкретных рантаймов и фреймворков, что делает работу ещё проще. Это, возможно, снимет часть давления с команд разработки, которые сталкиваются с увеличением обязанностей и задач в жизненном цикле разработки.
Ивар Гримстад:
Я думаю, никто не ожидал, как стремительно вся индустрия бросится на приманку в виде искусственного интеллекта. В какой-то момент казалось, что ничего другого не имеет значения. Однако во второй половине года этот ажиотаж немного утих.
Андреа Перуффо:
Шестимесячный цикл релиза Java оказался более успешным, чем ожидалось, разрушив старый страх перед изменениями и вызвав волну инноваций. Освободившись от необходимости поддерживать устаревшие версии, разработчики библиотек и фреймворков приняли эту новую модель и начали активно использовать новые функции и улучшения. Это создало благоприятный цикл, ускоряющий инновации, обратную связь и прогресс в экосистеме, при этом сохраняя стабильность там, где это необходимо.
Базлур Рахман:
Хотя неожиданных событий было немного, я считаю, что внедрение JDK 21 и виртуальных потоков подталкивает сообщество Jakarta EE быстрее адаптироваться к JDK 21.
Бен Эванс:
Выход JSpecify 1.0.0 в сочетании с признанием того, что маркеры nullability появятся на уровне языка, — это то, чего Java-разработчики ждали буквально вечность. Мы, наконец, сможем завершить работу, начатую JSR 305 (аннотации для обнаружения дефектов в ПО), и создать путь к написанию значительно более безопасных для null Java-программ.
OpenTelemetry Profiling достигает статуса экспериментальной функциональности, хотя детали ещё требуют доработки.
Майкл Редлих:
Это не столько захватывающе, сколько неожиданно. Многие разработчики были удивлены внезапным отзывом JEP 465 — Шаблонов строк (третье превью). После двух превью в JDK 21 и JDK 22 ходило много разговоров о продвижении этой функции в JDK 23. Однако возникли непредвиденные последствия. Подробнее о причинах отзыва этой функции можно узнать в выпуске Inside Java Newscast #71, который вёл Николай Парлог (Nicolai Parlog), дев-адвокат Java в Oracle.
Что лично вас вдохновляет в экосистеме Java?
Холли Камминс:
Есть сильная взаимосвязь между усилиями по улучшению облачной совместимости Java и необходимостью повысить устойчивость IT-инфраструктуры. Выполнение большего количества задач заранее, а не во время выполнения, может ускорить работу и сократить расходы — двойная выгода! Инструменты, такие как Quarkus, делают это уже давно, но сейчас аналогичные подходы начинают распространяться по всей экосистеме. Проект Leyden — отличный пример такого архитектурного сдвига.
Мне также нравятся регулярные небольшие улучшения юзабилити, которые стали возможны благодаря ускоренному темпу релизов. Это означает, что мне приходится учиться постоянно, но для меня это только плюс.
Грейс Дженсен / Эмили Джианг:
Значительный рост использования искусственного интеллекта в качестве инструмента разработки (как для создания новых приложений, так и для модернизации существующих) и интеграции ИИ в Java-приложения стал настоящим событием.
Этому способствовало открытие исходного кода больших языковых моделей, а также формализация Java API, которые помогают разработчикам внедрять ИИ в приложения, включая такие фреймворки, как LangChain4j. Уже есть отличные примеры, показывающие, как легко используется LangChain4j в корпоративных Java-приложениях.
Мы также наблюдаем появление всё большего числа инструментов помощи в кодировании для разработчиков Java, которые интегрируются с искусственным интеллектом и LLM.
Кроме того, очень радует внедрение этих технологий в облачные Java-фреймворки и рантаймы, такие как Quarkus, и их появление в спецификациях сообщества, например в MicroProfile через предложенную спецификацию MicroProfile AI. Здорово, что сообщество объединяется, чтобы развивать эту модель программирования, помогая облачным приложениям эффективно работать с LLM.
Приятно видеть, что искусственный интеллект становится эффективным инструментом для помощи разработчикам (а не их замены), увеличивая производительность. Исследования уже показывают, что разработчики могут выполнять задачи по написанию кода вдвое быстрее с помощью генеративного ИИ! Мне не терпится увидеть, что ждёт эту область в дальнейшем.
Ивар Гримстад:
Меня вдохновляют темпы эволюции Java. Нельзя переоценить, насколько полезен оказался шестимесячный цикл релизов. Я также очень рад, что Jakarta EE обрела импульс и выпускает релизы с достаточно предсказуемой частотой. Обновление Jakarta EE 10 кажется очень удачным, а большая часть индустрии успешно справилась с изменением пространства имён с javax.* на jakarta.* в Jakarta EE 9.
Андреа Перуффо:
В Java-пространстве наконец-то набирает популярность WebAssembly, догоняя такие экосистемы, как Go и Rust. GraalWasm готов к использованию в продакшене, а Chicory готовится к своему первому стабильному релизу. WebAssembly обеспечивает быструю, безопасную и многозадачную интеграцию, значительно сокращая необходимость в полном переписывании существующих библиотек и инструментов. Я считаю, что вскоре это станет «скучной технологией», которую все используют, даже не замечая, как WebAssembly используется в браузерах сегодня. Быстро растущая экосистема WebAssembly меняет правила игры, делая Java сильным выбором даже в областях, где традиционно доминируют другие языки. Я призываю всех изучить WebAssembly и новые захватывающие возможности, которые он предлагает!
Базлур Рахман:
Из новых функций меня особенно вдохновляют виртуальные потоки и паттерн-матчинг, поэтому мы активно используем JDK 21. Все наши приложения в продакшене работают на JDK 21. JEP on Structured Concurrency находится на стадии третьего провью, и я с нетерпением жду его выхода.
Майкл Редлих:
Меня радует появление искусственного интеллекта в экосистеме Java, и я с нетерпением жду возможности узнать больше о LLM и создать собственные приложения на Java/Jakarta EE с использованием ИИ. Также новые спецификации, связанные с искусственным интеллектом, обсуждаются в рабочих группах MicroProfile и/или Jakarta EE.
Сообщество Java
Грейс Дженсен / Эмили Джианг:
Очень приятно слышать всё больше примеров сотрудничества в сообществе Java. Всё чаще появляются возможности учиться друг у друга на мероприятиях и конференциях. Я много слышу от участников сообщества Java о проектах, где удаётся объединять экспертизу и знания для создания лучших и более эффективных общих стандартов и open-source спецификаций.
Например, интеграция стандартов наблюдаемости OpenTelemetry в MicroProfile Telemetry 2.0 началась с трассировки и теперь расширяется на метрики в рамках MicroProfile 7.0, что даёт разработчикам Java гораздо более простой способ получения логов, трейсов и метрик.
Другой отличный пример — проект MicroProfile JWT Bridge, который является результатом сотрудничества рабочих групп MicroProfile и Jakarta EE. Я с нетерпением жду новых подобных инициатив в будущем, которые помогут Java оставаться процветающим сообществом и языком, выбранным для множества приложений.
Заключение
Обратите внимание, что точки зрения наших авторов отражают лишь часть общей картины. Различные группы, сегменты и регионы экосистемы Java могут иметь разный опыт. Наш отчёт за 2024 год следует рассматривать как отправную точку для дискуссий, а не как окончательное утверждение. Это приглашение к открытому обсуждению о том, куда движется индустрия.
В заключение приглашаем всех желающих на открытые уроки:
16 января: «Реализация простого HTTP-сервера на Java Core». Подробнее
16 января: «Исследовательское тестирование для начинающих». Подробнее
27 января: «Executors в Java». Подробнее
А все актуальные навыки тестирования ПО, включая автоматизацию на Java, можно получить на онлайн-курсах от практикующих экспертов области.