产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

2020 年 Java 语言发展现状

  • 2020-10-10
  • 本文字数:5022 字

    阅读完需:约 16 分钟

2020年Java语言发展现状

今年,Java 到达了一个不可思议的里程碑,达到了 25 岁的高龄。我们通过举办一个特别的在线Java日活动来庆祝它的诞生,在该活动中,许多专家演讲者分享了他们的经验,并就如何从这门语言中获得更多收益提供了技巧和窍门。


这引起了我们的思考,我们决定对数据进行深入研究,以彻底发现 Java 的普遍状态是什么,并帮助你回答一些亟待解决的问题。我们发现的某些内容可能是不足为奇的,但也有些见解是令人非常意想不到的。


随着 Java 15 在本周的发布,我们决定把它放在一起,向你展示 Java 的状态。这篇文章是根据不同来源的数据而创建的,其中包括我们的开发人员倡导者 Trisha Gee 的专家评论。

Java 开发者有多少,他们分布在哪里?

第一个问题是:“大多数的 Java 开发人员都在哪里,我们中有多少人是 Java 开发人员呢?”我们通过综合所能获取到的最准确的信息来回答这个问题,然后进行推断,得出一个我们认为非常合理的猜测。


市场研究和分析团队根据开发人员估算模型得出的最佳估计显示,当今世界上有大约 520 万专业 Java 开发人员,他们将 Java 作为主要语言。但是,如果我们将主要使用其他编程语言但同时也做一些 Java 工作的专业开发人员也包含在内的话,这个数字可能接近 680 万。


至于这些 Java 开发人员都集中在什么地方,在亚洲居住的 Java 开发人员数量最多,那里大约有 250 万开发人员使用 Java 作为主要语言。北美和欧洲的数字远不及亚洲。你可能会问:“为什么呢?”好吧,起初我们有也有同样的想法,因此我们对这些区域进行了更深入的研究,以确切地了解这些数字的来源。


哪个国家的 Java 开发者最多?

我们进一步研究了拥有最多 Java 开发人员的各个国家,然后调查了为什么这些国家在专业开发中特别喜欢 Java 而不是其他语言。


下图显示了每个国家使用 Java 作为主要语言的开发人员的百分比(用于收集此数据的调查对象最多可以选择 3 种主要语言)。中国韩国的数值最高,分别约为 51%和 50%。数据来自2020年开发者生态系统状况调查


专家分析


Java 在前 6 个国家如此流行的原因可能包括 Java 是免费使用的、政府支持和开源。对于中国、西班牙巴西尤其是这样。它是在中国和印度进行 Android 移动开发的基础,并且雇佣海外人员用 Java 开发手机应用程序非常普遍,这可能是印度使用量达到峰值的原因。德国的使用率也很高,这可以归因于 Java 在德国软件工程师中是最流行的语言,因为多种行业都使用 Java 来构建高度可扩展的应用程序。大多数企业服务都依靠 Java 来驱动应用程序支持日常业务的运行,例如工资单、库存管理、报表等。德国还有一个庞大的金融部门,在本国技术上大量使用 Java,例如交易机器人、零售银行系统以及金融业为了保持竞争所需要的其他应用程序。


我们本以为美国会有很高比例的 Java 用户,但是并没有,这也是很合理的。有大量的技术栈可供选择,而且很多技术公司通常处于这些技术栈的最前沿,因此那里的开发人员可能不需要 Java 的强大功能或稳定性,而是使用能让他们进行快速构建和测试等的语言。


Java 在开发行业中的位置

根据2020年开发者生态系统状况调查,有超过三分之一的专业开发人员将 Java 用作主要语言,而 Java 在专业开发人员当中仍然是仅次于 JavaScript 的第二大主要语言。


专家分析


看到 JavaScript 和 Java 处于领先地位,这并不奇怪,因为它们是成对的:使用 Java 的开发人员经常使用 JavaScript 编写前端和任意快速脚本。由于机器学习的普及,Python 可能排名第三。一般来说,我们希望 Web 成为开发人员生态系统的重要组成部分,因此 JavaScript、HTML 和 CSS 以及 PHP 将始终能拥有稳固的地位。 SQL 也会一直存在,因为没有多少东西是不需要某种容量的数据库的。 C++也是一种坚实的语言,因为它被用于许多嵌入式应用程序中,因此它不会很快在图表中消失。虽然 C#似乎正在逐渐衰落,但我想如果 Java 比例高,C#就会低,因为它们在功能上非常相似。至于为什么我认为 Java 在专业发展领域如此之高,原因与之前提到的德国类似。大多数企业的业务服务都依靠 Java 来运行。它不仅仅用于 IT 部门,几乎每个公司,无论是分销、制造还是银行业,都将 IT 服务作为其基础设施的一部分,而这些服务,如工资单或库存管理,通常都是在后端使用 Java 构建的。因此,Java 被这些公司的专业开发人员所大量使用。


用 Java 开发的软件类型

快速浏览一下用 Java 开发的软件类型,应该可以了解它的使用统计信息。根据2020年开发者生态系统状况调查的结果,Java 使用最流行的领域是 Web 服务,占 52%。


专家分析


看到 Java 在商业智能/数据科学/机器学习中如此流行,真令人惊讶,因为你可能认为这将是 Python 的领域。其他的就不足为奇了,因为 Web 服务的后端通常是 Java,而且使用 Java 编写业务应用程序也很有意义,因为它们也需要使用后端和数据库。


使用 Java 的热门行业

既然我们知道了为什么这么多专业开发人员使用 Java,那么让我们具体看看 Java 应用于哪些行业。


根据2020年开发者生态系统状况调查,Java 程序主要用于 IT 服务(42%)与金融和金融科技领域(44%),但这并不是说 Java 没有用于其他行业。


专家分析


金融和金融科技领域主要涉及金融交易所、零售银行系统、创建计算引擎以及开发本地定制工具和服务,以使公司在市场上具有竞争力。 金融和金融科技几乎都是用 Java 建立的,所以在这里没有什么好惊讶的。 IT 服务也是如此,因为许多针对非 IT 公司的薪资系统和库存管理服务都是基于 Java 构建的。其他行业也很有趣。由于 Android 的存在,移动开发的比例可能很高,因此 Java 正以这种方式被使用。大数据和数据分析也非常有趣,因为该行业是由 Python 主导的,但是后端可能会使用 Java 和 JVM 语言。当然构建软件开发工具也可以。 JetBrains IDE 目前是用 Java 构建的。尽管其他行业有点神秘,但实际上,了解 Java 在这些行业中的使用方式将非常有趣。


Java 相关工具

Java 版本

Java 8 仍然是最受欢迎的版本。在使用 Java 作为主要语言的专业开发人员当中,有 75%的人使用 Java 8。基于开发人员在2020年开发者生态系统状况调查中选择的几个版本,下图显示了 Java 版本的分布情况。


专家分析


有几个因素导致了 Java 8 的如此流行。首先,它拥有典型的 Java 开发人员所需要的所有语言,它具有 lambda 和流,并且它是一个很好的易于使用的版本。另外,人们一直不愿意迁移到 Java9。Java9 引入了一些重大的架构更改,人们担心这些更改会破坏他们用 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 将比上一个 LTS(长期支持版本)Java 11 更受欢迎。不过,作为 Java 17 的准备,这一点我再强调也不为过,建议你先将代码库更新到 Java 11,然后再更新为 Java 17,以避免出现大问题。


流行的应用服务器

在过去的 3 年中,Apache Tomcat 仍然是最受欢迎的应用服务器,而 JBoss EAP 和 WildFly 的使用量却减少了一半。给出的数据来自参加2018年2020年开发者生态系统调查的所有以 Java 为主要语言的开发人员。


专家分析


Jetty 位居第二,但它确实低得令人惊讶。可能是某些正在使用 Spring Boot 和其他微服务框架的开发人员没有意识到他们到底在使用使用,他们可能在不知不觉中使用了 Tomcat 或 Jetty。


排名前 5 的 Web 框架

在2018年,Spring Boot 与 Spring MVC 是一样流行的,到了2020年,它变得更加流行。给出的数据来自所有使用 Java 作为主要语言的开发人员。


专家分析


这基本上只是在证实 Spring 拥有市场。几乎可以肯定的是,仍然有人在使用 Struts 1,但它只是用于遗留应用程序。


排名前 5 的分析器

2020年开发者生态系统状况调查显示,有 24%的用户使用 VisualVM,而一半的用户则没有使用。给出的数据来自所有使用 Java 作为主要语言的开发人员。


排名前 5 的 IDE/编辑器

2018年2020年的开发者生态系统调查显示,IntelliJ IDEA 的份额从 2018 年的 55%增加到 2020 年的 72%,而其他四个的使用率则有所下降。


专家分析


不过,即使我们对调查结果进行了加权,但我们并不否认这些信息可能会有些偏差,因为这是来自JetBrains开发者生态系统状态调查,而 JetBrains 的一个主要产品就是 IntelliJ IDEA。然而,这并不是说这并非完全不合理,就好像我们在其他调查中看到的一样,IntelliJ IDEA 通常是使用最多的 IDE 之一,并且通常拥有约 55-60%的用户份额。 VS Code 正在增长,这不是从竞争的角度来看的,而是从缺乏对 IDE 的理解的角度来看的。 VS Code 是一个代码编辑器,带有一些你可以在 IDE 中找到的特性,并且可以提供附加功能的扩展。因此,如果人们使用 VS Code 进行开发,则可能意味着开发人员不知道一个功能齐全的 IDE 能给他们什么。在 Web 领域,使用编辑器是可以理解的,因为 Web 开发人员通常使用动态语言,并且经常使用其他工具(例如浏览器插件)来满足他们的需求。但是在 Java 中,特别是在专业的 Java 中,你确实可以从一个与应用程序服务器集成的优秀工具中得到很多东西,你可以真正使用分析、重构等功能。


我们专家的最新消息


我发现有很多对本博客文章数据分析进行删减和编辑的版本,这是我无意间造成的混乱。我想澄清一下我对开发人员和 IDE 评论背后的意图。对我来说,如果开发人员不理解 IntelliJ IDEA 作为一个功能齐全的 IDE 给他们带来了什么,那对我来说就是一个失败,因为这六年来我的工作就是让开发人员了解 IDE(特别是 IntelliJ IDEA)能为你做什么。我强烈地认为,人们不应该因为不了解产品而责备用户或潜在用户。


我个人对 IDE 的观点来自拥有 20 多年 Java 开发经验的 Java 开发人员,他们开发过各种大大小小的 Java 项目。如果没有像 IntelliJ IDEA 这样的 IDE 提供大量的帮助,我无法想象如何创建一个复杂的企业应用程序。我也见过很多开发人员使用 VS Code,并且我完全了解代码编辑器所涵盖的用例。在你的工具箱中总有能容纳多于一种的工具,了解某个工具的优点将有助于我们为正确的工作选择合适的工具。


讨论最多的 Java 工具和其他语言

在 IT 社区中会经常讨论 Java,其中的一个社区就是 Stack Overflow。我们从“问答”部分中获取了数据,以找出哪些标签与“ java”最相关。纵轴表示提到 Java 的次数,横轴表示标签出现的总次数。


专家分析


对于那些希望确保自己使用了正确的技术或正寻找适合自己的工具的用户来说,这个图表可能很有用。这些语言很有意思,但这可能是因为人们正在寻找 Java 与其他语言之间的比较。正则表达式是人们苦苦挣扎的一个利基领域,但它能上榜也就不足为奇了。


Java 社区的热门话题

Java 的讨论

我们分析了 Reddit 上“ java”子版块的帖子,并发现了 Java 用户在 Reddit 上讨论最多的主题。


专家分析


这些正是我期望看到的话题。例如,用 Java 编写代码的人总是会对这种语言是否仍然有需求感兴趣,毕竟,这种语言还在发展。我们刚刚庆祝了 Java 诞生 25 周年,因此人们希望检查它是否过时了,以及它是否仍然有效。特别是,如果他们刚从大学毕业,还不知道他们所学的语言是否能为他们提供工作机会。在容器中部署 Java 是一个非常热门的话题,包括我在内,这是每个人都想知道的东西,但几乎找不到任何相关信息。我对性能优化这个主题并不感到惊讶,尽管我认为这个主题有点多余,因为大多数应用程序实际上并不需要开发人员来进行优化,尽管许多开发人员认为这是一项重要的职业技能。使后端和前端协同工作也非常复杂,我可以想到有很多关于这方面的问题。



原文链接:


https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/


2020-10-10 14:1810778
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 277.5 次阅读, 收获喜欢 1301 次。

关注

评论 6 条评论

发布
用户头像
原文在这里:https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/。Jetbrain自己的统计,使用最多的IDE数据估计有水分
2020-11-20 02:59
回复
用户头像
首张背景图放那么大虫子是什么意思 ???
2020-10-19 10:20
回复
就他bug最多
2020-11-13 10:37
回复
用户头像
stack overflow 的深翻页好快啊
2020-10-18 19:25
回复
用户头像
java就是一坨屎
2020-10-17 23:41
回复
用户头像
Java8还是很稳定的
2020-10-16 09:46
回复
没有更多了
发现更多内容

18 张图,一文了解 8 种常见的数据结构

沉默王二

Java 数据结构

坚持新媒体写作第21天了,聊聊我为什么喜欢写作

老胡爱分享

学习 写作 习惯养成 坚持 随笔杂谈 讨论写作

ECMAScript 6新特性简介

程序那些事

nodejs ES6 ECMAScript 6

实战中学习浏览器工作原理 — 排版与渲染

三钻

CSS 大前端 浏览器

简述 CAP 原理

叶鹏

常用设计模式

叶鹏

一个草根的日常杂碎(9月21日)

刘新吾

生活 现实纪录 随笔

用户密码验证函数

叶鹏

架构师训练营第四周作业

叶鹏

微服务的框架(Dubbo)架构

叶鹏

架构师训练营第7周作业

叶鹏

被我玩坏的git:除了之前的工作、当网盘用,还能这么玩

小Q

Java git 程序员 架构 开发

Springboot 定时任务

hepingfly

定时任务 springboot 注解

前端如何优雅处理类数组对象?

Geek_z9ygea

Java 大前端

从零开始搭建完整的电影全栈系统(五)——WEB网站、Api以及爬虫的部署

刘强西

爬虫 网站搭建 部署与维护

【性能优化】面试官:Java中的对象都是在堆上分配的吗?

冰河

面试 性能优化 JVM 性能调优 逃逸分析

简述JVM垃圾回收

叶鹏

高难度对话读书笔记—情绪篇

wo是一棵草

架构师训练营第八周作业

叶鹏

食堂卡就餐卡系统

叶鹏

两天,我把分布式事务搞完了

yes

分布式事务 seata

anyRTC云端录制功能上线

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

一文学懂递归和动态规划!

小齐本齐

算法 数据结构和算法

小白理财先转变思维理念

boshi

理财 收入 财富自由

架构师训练营12周作业

叶鹏

oeasy 教您玩转linux 010304 图形界面 xfce

o

关于Java调用类的main方法

谷鱼

Java 包位置

架构师第1课作业及学习总结

小诗

Spring 5 中文解析数据存储篇-编程式事物管理

青年IT男

Spring5

Python 中 \x00 和空字符串的区别,以及在 Django 中的坑

AlwaysBeta

Python django 编程

Spring 5 中文解析数据存储篇-@Transactional使用

青年IT男

spring

2020年Java语言发展现状_语言 & 开发_Valeriia Karpenko_InfoQ精选文章