За последнее десятилетие язык Java прошел длинную череду инкрементальных усовершенствований, а сейчас стоит на пороге более масштабных доработок — в рамках проектов Valhalla и Loom реализуется ряд новых фундаментальных возможностей и архитектура упрощенного распараллеливания приложений. Свежие отчеты о применении Java на предприятиях указывают на высокую популярность языка программирования и даже рост интереса к нему, как к инструменту создания приложений разного масштаба и назначения.
Компания Vaadin, создатель платформы разработки веб-приложений с открытым кодом, опубликовала отчет State of Java in the Enterprise с подробными данными об использовании Java на предприятиях. Судя по отчету, разработчики готовы переходить на новые версии языка: 26% респондентов пользуются версией 17 или выше, 21% — в процессе перехода, 37% — планируют перейти на новую версию. Аналогичный отчет New Relic показал, что сейчас в качестве стабильного релиза с долгосрочной поддержкой используется Java 11, и в этом качестве 11-я версия вытесняет 8-ю. Самый новый стабильный релиз языка, напомним, — Java 17, а следующий, Java 21, должен выйти в сентябре.
Согласно отчету Vaadin, 78% разработчиков на Java называют обеспечение безопасности приложений одной из своих главных задач, 24% — важной задачей, 54% — задачей, имеющей определенную значимость. Платформа Java сама по себе надежно защищенная, однако в сторонних библиотеках возможны уязвимости. К примеру, в 2021 году в библиотеке журналирования Log4j, разрабатываемой в рамках проектов Apache, была обнаружена брешь, позволяющая выполнять произвольный код.
По данным Vaadin, 76% респондентов сетуют на трудности с наймом и удержанием разработчиков. Как и другие программисты, разработчики на Java предпочитают работодателей, которые поддерживают их в инициативах, предоставляя возможности использования не только профессиональных, но и творческих навыков. Улучшить условия труда разработчиков можно путем создания полноценной инфраструктуры DevOps, которая упрощает и стандартизует наиболее стрессогенные этапы разработки, в частности, развертывание.
Что касается сред развертывания, по данным Vaadin, в 55% организаций приложения Java развертывают в общедоступных облаках, в 70% — на локальных серверах и в частных облаках. В 56% для развертывания используется Kubernetes или бессерверные облачные архитектуры. При этом локальные развертывания в Kubernetes — на третьем месте после физических серверов и виртуальных машин — системой оркестровки контейнеров пользуются в 29% организаций. Судя по этим показателям, экосистема Java продолжает переходить на облачные технологии, хотя остаются разработчики, предпочитающие локальные платформы и фреймворки, чтобы избежать привязки к оператору облака.
Если говорить о видах разрабатываемых приложений, львиную их долю составляют веб-приложения, а настольные — лишь небольшую часть. Заметна тенденция создания Java-приложений полного стека: 70% респодентов сообщили о планах создать такие приложения в дальнейшем. Совсем немного отстают бэкенд-системы: в разработку соответствующих API собираются инвестировать 69% опрошенных. В 57% организаций модернизируют имеющиеся приложения, в 48% создают гетерогенные приложения полного стека (например, на Java и JavaScript или TypeScript), в 36% — переносят имеющиеся приложения в облако, в 29% — реализуют новую пользовательскую часть для уже имеющихся бэкендов на Java.
Среди фреймворков для пользовательских интерфейсов разработчики на Java предпочитают Angular (37%), React (32%) и Vue (16%). Некоторые фреймворки, например Svelte, имеют так мало поклонников, что в опрос не попали. Среди фреймворков для бэкендов наиболее популярны Spring Boot (79%) и Spring (76%). При этом, по словам опрошенных, разработчики планируют пользоваться ими и далее.
Из числа респондентов Vaadin 57% в качестве приоритетного направления планируемых инвестиций назвали модернизцию приложений. Главная причина модернизации — стремление сохранить возможность сопровождения ПО, на втором месте — необходимость усилить безопасность.
В числе трудностей, которые обозначили разработчики, на первом месте находится создание интуитивно-понятного и простого пользовательского инетрфейса: для 30% эта задача составляет значительную трудность, для 51% — некоторую. Обычно пользовательские интерфейсы разрабатывают на JavaScript-фреймворках наподобие React; с помощью систем, позволяющих писать на Java и генерировать код JavaScript, например, JavaServer Faces; или на базе фреймворков вроде Hilla или jHipster, которые дают возможность работать и с Java, и с JavaScript.
Как и все участники отрасли, разработчики на Java перешли на современные методы DevOps, в частности, внедрив непрерывную интеграцию и поставку (CI/CD). При этом в конвейеры интегрируются различные сторонние системы. По данным Vaadin, в наибольшей степени это касается решений для ведения журналов, комплексного контроля (observability) и единовременного входа. Нередко объектом интеграции также становятся Kubernetes, системы ERP и CRM, решения для многофакторной аутентификации.
В целом, судя по отчету Vaadin, Java находится в состоянии стабильной и динамичной эволюции, оставаясь ключевой технологией, которая готова к будущему.