IntelliJ IDEA Java Research

Экосистема Java в 2020 году

Read this post in other languages:
English, 日本語, 한국어, Deutsch, 简体中文

В этом году Java исполнилось 25 лет. В честь юбилея мы провели специальное онлайн-мероприятие, на котором Java-эксперты поделились опытом и советами о том, как использовать возможности языка по максимуму.

После мероприятия мы решили подробно изучить данные исследований и выяснить, что представляет собой Java сегодня, а также ответить на популярные вопросы о языке. Некоторые факты, возможно, вас не удивят, но нам удалось узнать кое-что неожиданное.

С выходом Java 15 мы собрали воедино данные из разных источников и попросили Тришу Ги, девелопер-адвоката JetBrains, их прокомментировать.

Где программируют на Java

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

По оценкам, произведенным с помощью модели, разработанной нашей командой маркетинговых исследований, сегодня в мире насчитывается около 5,2 миллиона профессиональных Java-разработчиков, которые используют Java в качестве основного языка. При этом, если учитывать профессиональных разработчиков, которые в основном используют другие языки, но периодически программируют на Java, общее число джавистов приблизится к 6,8 миллиона.

Мы также выяснили, что больше всего Java-разработчиков живет в Азии — там почти 2,5 миллиона человек используют Java в качестве основного языка. В Европе и Северной Америке цифры далеки от азиатских. В чем причина? По началу нам тоже было неясно и пришлось подробнее рассмотреть ситуацию в разных регионах, чтобы понять, откуда берутся такие цифры.

Где именно

Мы отдельно рассмотрели страны, в которых проживает больше всего Java-разработчиков, и проанализировали, почему именно там профессионалы предпочитают Java.

На диаграмме ниже показан процент разработчиков в каждой стране, для которых Java является основным языком (респонденты могли указать до 3 основных языков). Здесь лидируют Китай и Южная Корея — 51% и 50% соответственно. Это данные исследования экосистемы разработки 2020 года.

Комментарий эксперта
Вероятные причины, по которым Java так популярна в первых шести странах, — это бесплатное использование языка, государственная поддержка и открытый исходный код. Особенно это касается Китая, Испании и Бразилии. Java лежит в основе Android-разработки в Китае и Индии, и широко распространенная практика набора зарубежных сотрудников для программирования мобильных Java-приложений объясняет, почему в Индии так много Java-разработчиков. Java является самым популярным языком в Германии, поскольку используется для создания высокомасштабируемых приложений, предназначенных для самых разных отраслей. В бизнес-среде Java широко используется для создания приложений, обеспечивающих повседневное функционирование компаний. Это сервисы для расчета заработной платы, управления материальными ресурсами, ведения отчетности и т. д. В Германии большой финансовый сектор, в котором многие технологии построены на Java: трейдинговые боты, системы банковского обслуживания и другие приложения, необходимые для сохранения конкурентоспособности в отрасли.

Можно было ожидать, что в США тоже будут высокие показатели, но вполне логично, что это не так. Существует большой стек технологий, из которых можно выбирать, и многие технологические компании находятся на вершине этого стека. Зачастую разработчикам не требуется стабильность и функциональность Java — они предпочитают языки, которые позволяют им быстро собирать и тестировать приложения.

Что происходит в индустрии

По данным исследования экосистемы разработки 2020, более трети профессиональных разработчиков используют Java в качестве основного языка. Она остается на втором месте по популярности после JavaScript.

Комментарий эксперта
Неудивительно, что Java и JavaScript вместе занимают лидирующие позиции — они все-таки связаны друг с другом: Java-разработчики часто пишут фронтэнд и быстрые скрипты на JavaScript. Python, вероятнее всего, попал на третье место из-за распространения машинного обучения. В целом веб-технологии являются важной частью экосистемы разработки, поэтому можно предположить, что JavaScript, HTML, CSS и PHP всегда будут занимать высокие позиции. SQL тоже никуда не денется: в той или иной степени базы данных нужны почти везде. C++ широко используется для разработки встраиваемых систем, поэтому в ближайшее время ему также ничего не грозит. А вот C#, похоже, теряет позиции, и я думаю, если Java будет оставаться в топе, то C#, наоборот, будет опускаться все ниже, поскольку они очень похожи с точки зрения функциональности. Возвращаясь к Java, я думаю, что ее популярность в среде профессиональной разработки связана с тем, что я уже говорила про Германию. Большинство бизнес-сервисов выбирают Java. И речь не только об IT-секторе: почти в любой компании — в сфере торговли, производства или в банковском деле — IT-сервисы являются частью инфраструктуры, и такие приложения, например для расчета заработной платы или управления материальными ресурсами, как правило строятся на Java-бэкенде. Так что Java активно используется профессиональными программистами, работающими в этих компаниях.

Какие виды ПО разрабатываются на Java

Беглого взгляда на виды ПО, разрабатываемого на Java, должно быть достаточно, чтобы пролить свет на статистику использования языка. Чаще всего с помощью Java разрабатывают веб-сервисы.

Комментарий эксперта
Неожиданно высокий процент применения Java в бизнес-аналитике, машинном обучении и Data Science, ведь мы привыкли думать, что это царство Python. Остальные результаты менее удивительны: бэкенд веб-сервисов часто написан на Java, и для бизнес-приложений имеет смысл использовать Java, так как они должны взаимодействовать с серверной частью и базами данных.

Основные области применения Java

Теперь, когда мы знаем, почему Java пользуется такой популярностью у профессиональных разработчиков, давайте рассмотрим отрасли, в которых применяется этот язык.

Согласно исследованию экосистемы разработки 2020, Java-программисты в основном работают в секторе IT-услуг (42%), а также в сфере финансов и финансовых технологий (44%), но это не значит, что Java не используется в других отраслях.

Комментарий эксперта
Разработка в сфере финансов в основном связана с биржевыми операциями, системами банковского обслуживания, созданием вычислительных механизмов, а также внутренних инструментов и сервисов для обеспечения конкурентоспособности компании. Финансы и финтех в уже давно полагаются на Java — здесь нет ничего удивительного. То же самое касается и IT-услуг: многие системы расчета заработной платы и сервисы для управления материальными ресурсами, используемые в компаниях, не связанных с IT, построены на Java. А вот другие сферы вызывают интерес. Мобильная разработка оказалась так высоко в списке, скорее всего, из-за Android-приложений. В сфере анализа данных лидирует Python, но в серверной части есть место для Java и JVM-языков. Инструменты для разработки — ну конечно! На сегодняшний день Java лежит в основе всех IDE JetBrains. Остальные отрасли выглядят немного загадочно, было бы интересно узнать, как там используют Java.

Инструменты

Версии Java

Самой популярной версией языка остается Java 8. Ее используют 75% профессиональных Java-разработчиков. На диаграмме показано распределение версий Java с учетом того, что респонденты могли выбрать несколько из них.

Комментарий эксперта
Популярность Java 8 объясняется несколькими факторами. Во-первых, в ней есть все, что требуется Java-разработчику от языка, есть лямбда-выражения и потоки, и в целом это понятная и удобная версия. Во-вторых, люди очень неохотно переходят на Java 9. В Java 9 были внесены серьезные архитектурные изменения, и многие боятся, что эти изменения сломают приложения, написанные на Java 8. Кроме того, Oracle перешла на систему релизов раз в полгода, и не все версии получают долгосрочную поддержку: Java 9, Java 10, Java 12 и Java 13 поддерживались только 6 месяцев. Возможно, поэтому у них так мало пользователей. Java 13 оказалась так высоко в списке, только потому что на момент проведения опроса, это была самая новая версия. Через несколько месяцев ее показатели ожидаемо снизятся.
Java 11 вышла в 2018 году, и это самая свежая версия с долгосрочной поддержкой. Многие компании так и не перешли на нее, беспокоясь, что, если они проскочат через Java 9 с ее архитектурными изменениями, все сломается. Кроме того, с выходом Java 11 была представлена новая модель лицензирования и подписки, и это добавило опасений: если вы используете не ту версию и не так, Oracle вас оштрафует. Еще одна важная причина, почему многие разработчики не переходят на Java 11, заключается в том, что в ней не так много новых интересных возможностей, которые могли бы компенсировать риски, связанные с миграцией. Следующей версией с долгосрочной поддержкой станет Java 17. В ней ожидается много нового, но при прямом обновлении с Java 8 до Java 17 возникнут свои проблемы.
Предполагаю, что Java 17 будет более популярной, чем предыдущая версия с долгосрочной поддержкой Java 11. В преддверии выхода Java 17 я просто обязана лишний раз подчеркнуть: сначала лучше обновить кодовую базу до Java 11, и только потом до Java 17 — это поможет избежать больших проблем.

Популярные серверы приложений

На протяжении трех лет самым популярным сервером приложений остается Apache Tomcat, а использование JBoss EAP и WildFly сократилось вдвое. На диаграмме приведены данные исследования экосистемы разработки 2018 и 2020 годов, полученные от разработчиков, использующих Java в качестве основного языка.

Комментарий эксперта
Jetty занимает второе место, но его доля неожиданно мала. Возможно, некоторые разработчики, использующие Spring Boot и другие фреймворки для микросервисов, не подозревают, что у них под капотом, — там может быть Tomcat или Jetty.

Топ-5 веб-фреймворков

В 2020 году Spring Boot обошел Spring MVC, хотя в 2018 они шли вровень. На диаграмме приведены результаты опроса разработчиков, использующих Java в качестве основного языка.

Комментарий эксперта
По сути, это просто подтверждение, что Spring доминирует на рынке. Те, кто все еще используют Struts 1, почти наверняка делают это только для поддержки устаревших приложений.

Топ-5 JVM-профилировщиков

По результатам исследования экосистемы разработки 2020 года, VisualVM предпочитают 24% разработчиков, указавших Java в качестве основного языка. При этом половина опрошенных вообще не пользуются профилировщиками.

Топ-5 редакторов/IDE

По данным наших исследований 2018 и 2020 годов, доля пользователей IntelliJ IDEA среди Java-разработчиков за два года увеличилась с 55% до 72%.

Комментарий эксперта
Не отрицаем, что эта информация может быть не совсем точной. Даже с учетом процедур взвешивания, который мы проводим при обработке результатов наших опросов, возможны некоторые искажения: все-таки это исследования JetBrains, а IntelliJ IDEA – один из наших главных продуктов. Однако, по результатам других опросов, IntelliJ IDEA также является одной из наиболее популярных IDE, которую в среднем выбирают 55–60% пользователей. Доля VS Code растет, и это беспокоит меня не с точки зрения конкуренции, а с точки зрения того, что у разработчиков нет понимания, что им может дать IDE. VS Code — это редактор кода с поддержкой некоторых функций IDE и расширений, которые могут обеспечить дополнительные возможности. Если разработчики выбирают VS Code, есть вероятность, что они просто не знают, что можно получить от полнофункциональной IDE. В веб-разработке использование редактора оправдано, поскольку веб-разработчики обычно имеют дело с динамическими языками и часто используют другие инструменты, например браузерные плагины. Но в случае Java, особенно в профессиональной разработке, вы действительно многое получаете от хорошего инструмента, который поддерживает интеграцию с серверами приложений, анализ кода, рефакторинги и много других возможностей.

Дополнительный комментарий
Я вижу, что сокращенная версия моего комментария, ввела некоторых читателей в заблуждение. Хотелось бы прояснить, что я имела в виду. Если разработчики не понимают, какие преимущества им может дать IntelliJ IDEA, — это ошибка с моей стороны, поскольку вот уже шесть лет моя работа заключается в том, чтобы демонстрировать разработчикам возможности IDE (и в частности, IntelliJ IDEA). Я твердо убеждена: никогда нельзя обвинять пользователей или потенциальных пользователей в том, что они не понимают продукт.

Моя личная точка зрения на IDE для Java-разработчиков основывается на том, что я сама больше 20 лет программирую на этом языке, работая над самыми разными Java-проектами. Мне трудно представить, как можно создать сложное корпоративное приложение без помощи, которую предоставляет такая IDE, как IntelliJ IDEA. Я знаю разработчиков, использующих VS Code, и хорошо понимаю, для каких целей и сценариев достаточно функциональности редактора кода. В наборе инструментов разработчика всегда есть место для нескольких продуктов, и понимание того, чем хорош каждый из них, поможет вам выбрать подходящий инструмент для конкретной ситуации.

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

О Java много говорят в IT-сообществах, в том числе на Stack Overflow. Мы взяли данные из раздела вопросов и ответов и посчитали, какие теги чаще всего встречаются вместе с java. По вертикали показаны упоминания с Java, а по горизонтали — общее количество тегов.

Комментарий эксперта
Эта диаграмма может быть полезна пользователям, которые ищут подходящие инструменты или хотят убедиться, что используют правильные технологии. С языками тут получилось довольно интересно, но, скорее всего, такое распределение связано с тем, что люди ищут сравнения Java с другими языками. Регулярные выражения — это довольно нишевая вещь, которая вызывает трудности. Неудивительно, что они попали в список.

О чем говорят в Java-сообществе

Актуальные темы

Мы проанализировали посты в сабреддите java и составили список самых обсуждаемых тем.

Комментарий эксперта
Именно это я и ожидала увидеть. Тем, кто пишет на Java, всегда будет интересно, является ли язык по-прежнему востребованным. Мы только что отпраздновали 25-летие Java — люди хотят быть уверены, что язык не устарел и все еще актуален, особенно те, кто только что закончил университет и еще не знает, какие карьерные перспективы их ждут. Развертывание Java-приложений в контейнерах — действительно актуальная тема. Об этом хотят знать все, включая меня, но информации очень мало. Неудивительно, что в списке есть оптимизация производительности, хотя, на мой взгляд, эта тема здесь лишняя, поскольку большинство приложений на самом деле не нуждаются в оптимизации со стороны разработчиков, однако многие считают, что это важный профессиональный навык. Заставить бэкенд и фронтэнд работать слаженно может быть очень непросто — думаю, по этой теме возникает много вопросов.

Ваша команда IntelliJ IDEA
The Drive to Develop

Discover more