图解 Java 的 2020

Read this post in other languages:

今年,Java 迎来一个惊人的里程碑,达到了 25 岁高龄。我们特别举办了在线Java 日活动,以纪念这一周年,并邀请许多专家演讲者来分享经验以及充分利用这门语言的各种技巧和窍门。

这引起了我们的思考,也让我们决定对数据进行深入研究,彻底发现 Java 的普遍状态,并帮助解答您所面临的一些迫切问题。 我们的调查发现或许有些在意料之中,不足为奇。但同时也有些意料之外的洞察,值得关注。

随着本周 Java 15 的发布,我们决定把信息归纳整理,为您呈现 Java 的状态。 本文根据几个不同来源的数据创建,包括我们的开发技术推广工程师 Trisha Gee 的专家评论。

在哪里?

第一个问题是,“大多数 Java 开发者位于哪里,我们在那里有多少人?” 我们结合能掌握的最准确的信息,然后进行推断,得出我们认为非常恰当的猜测。

根据市场研究和分析团队开发者估计模型的最佳估计,目前世界上大约有 520 万名专业 Java 开发者 使用 Java 作为主要语言。 但如果把主要使用其他编程语言并兼用一点 Java 的专业开发者计算在内,这个数字可能接近 680 万。

至于这些 Java 开发者的集中地,生活在亚洲的 Java 开发者数量最多,大约有 250 万开发者使用 Java 作为主要语言。 北美和欧洲的人数远不及亚洲。 您可能会问:“为什么?” 我们一开始也有这样的想法,所以我们对这些地区进行了更深入的调查,想要确切了解这些人数的来源。

具体在哪?

我们深入研究了拥有最多 Java 开发者的各个国家/地区,然后调查了为什么这些国家/地区的开发者在专业开发方面特别喜欢 Java 而不是其他语言。

下图显示了每个国家/地区使用 Java 作为主要语言的开发者所占的百分比(用于收集此数据的调查受访者最多可以选择 3 种主要语言)。中国strong>和韩国strong>的数值最高,分别为 51% 和 50% 左右。 数据取自 2020 年开发者生态系统状况调查

专家分析
Java 在前 6 个国家/地区如此受欢迎的原因很可能包括 Java 的免费使用、政府支持和开源。 中国西班牙巴西的情况尤其适用。 它是中国和印度 Android 手机开发的基础,并且雇佣离岸人员使用 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 年开发者生态系统状况的结果,web 服务占 52%,是 Java 最受欢迎的使用领域。.

专家分析
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%。 下图显示了 2020 年开发者生态系统调查中 Java 版本的分布情况,其中开发者可选择多个版本。

专家分析
Java 8 之所以如此受欢迎,有这样几个因素。 首先,它可以满足典型 Java 开发者对语言的一切需求,它具有 lambda 和流,并且总体上是一个易于使用的优良版本。 另外,人们也一直不愿意换到 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 会比上一个 LTS(长期支持版本)Java 11 更受欢迎。 不过,关于对 Java 17 的准备工作我还要再强调一下,我建议先把代码库更新到 Java 11,然后再更新到 Java 17,避免出现大问题。

热门应用程序服务器

过去三年间,Apache Tomcat 始终是最受欢迎的应用程序服务器,而 JBoss EAPWildFly 的使用量则减少了一半。 给出的数据来自 2018 年和 2020年参与开发者生态系统调查的所有以 Java 为主要语言的开发者。

专家分析
Jetty 位居第二,但看起来低得出奇。 或许是一些使用 Spring Boot 和其他微服务框架的开发者没有意识到这些框架的实际机制,他们可能是在不知情的情况下使用着 Tomcat 或 Jetty。

前五大 web 框架

Spring Boot 2018 年Spring MVC 一样流行,但到了 2020 年变得更受欢迎了。给出的数据来自所有以 Java 为主要语言的开发者。

专家分析
这基本上就是确认了 Spring 已经占据市场。 现在还有人在使用 Struts 1,这几乎可以肯定只是为了旧版应用程序。

Top-5 JVM 分析器

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

Top-5 IDE/编辑器

IntelliJ IDEA 的份额从 2018 年的 55% 增加到 2020 年的 72%,而其他 4 种的使用量则有所下降,报告来自 20182020 年的开发者生态系统调查。

专家分析
即便考虑到我们对调查结果附加的权重,我们也并不否认这些信息可能具有一定倾向性。因为这些信息来自 JetBrains 开发者生态系统状况调查,而 JetBrains 的主要产品之一就是 IntelliJ IDEA。 不过,这也不是完全没有道理,因为从其他的调查来看,IntelliJ IDEA 通常也是使用量最高的 IDE 之一,用户占比一般在 55-60% 左右。 VS Code 的发展值得引起担忧,但不是从竞争的角度,而是实际上人们显然对 IDE 的功能缺乏了解。 VS Code 是一个代码编辑器,具有一些您能在 IDE 中发现的功能以及可以提供额外功能的扩展 – 所以如果人们转向 VS Code 进行开发,这可能意味着开发者并不知道一个功能齐全的 IDE 能给他们什么。 In the web space it is understandable to use an editor as web developers are typically working with dynamic languages, and often use other tools like browser plugins to give them what they need. 但是在 Java 中,尤其是专业 Java,您其实可以从一个优秀工具中得到很多东西,这个工具与应用程序服务器集成,您可以充分利用分析和重构以及所有其他功能。

专家的更多信息
由于使用了经过删减和编辑的数据分析版本,这篇博文中我会对大家造成一些困惑。 我想就我对开发者和 IDE 的评论澄清一下我的实际目的。 对我来说,如果开发者不理解 IntelliJ IDEA 作为一个功能齐全的 IDE 能给他们带来什么,那就是我的失败,因为六年来我的工作就是教授开发者了解 IDE(特别是 IntelliJ IDEA)的功能。 我坚决认为,永远不应该责怪用户或潜在用户不了解产品。

我对 Java 开发者提出的 IDE 的个人观点来自我 20 多年的 Java 开发者从业经验,包括大大小小的生产 Java 项目。 如果没有 IntelliJ IDEA 这样的 IDE 所提供的巨大帮助,我无法想象该怎样构建一个复杂的企业应用程序。 我也看到很多开发者在使用 VS Code,我完全可以理解代码编辑器良好覆盖的用例。 您的工具箱中总能容纳不止一件工具,了解一种工具的优点,有助于我们为正确的工作选择正确的工具。

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

IT 社区经常讨论 Java,其中之一是 Stack Overflow. 我们从。Q&A 问答区的数据中找出最常与“java”一同出现的标签。 纵轴表示提及 Java 的内容,横轴表示标签出现的总数。

专家分析
这张图可能对那些想要确保自己使用了正确技术或正在寻找工具的用户很有用。 这些语言颇为有趣,但这可能是因为人们在搜索 Java 和其他语言的对比。 正则表达式是人们苦恼的小众事物,但上榜也不足为奇。

Java 社区中的热门话题

Java 讨论

我们分析了 “java” subreddit 上的帖子,并找到 Reddit 上 Java 用户最常讨论的话题。

专家分析
这些正是我期望看到的话题。 例如,用 Java 写代码的用户总会对这种语言是否还有需求感兴趣,毕竟这种语言已经有些年头了。 我们刚刚庆祝了 Java 的第 25 个年头,所以人们想知道它是否过时、是否仍然有效。 尤其是如果他们刚从大学毕业,还不知道自己所学的语言是否能够提供就业机会。 容器中的 Java 部署是一个非常热门的话题,这是每个人都想知道的事情,包括我在内,但能找到的信息很少。 对于性能优化这个话题,我并不惊讶,不过我认为这个话题还是有些多余。因为现实中大多数应用程序并不需要开发者进行优化,尽管有非常多的开发者认为这是一项重要的职业技能。 让后端和前端一起工作也是非常复杂的,我可以想象会有很多关于这方面的问题。

image description

Discover more