今年,Java到达了一个不可思议的里程碑,达到了25岁的高龄。我们通过举办一个特别的在线Java日活动来庆祝它的诞生,在该活动中,许多专家演讲者分享了他们的经验,并就如何从这门语言中获得更多收益提供了技巧和窍门。
这引起了我们的思考,我们决定对数据进行深入研究,以彻底发现Java的普遍状态是什么,并帮助你回答一些亟待解决的问题。我们发现的某些内容可能是不足为奇的,但也有些见解是令人非常意想不到的。
随着Java 15在本周的发布,我们决定把它放在一起,向你展示Java的状态。这篇文章是根据不同来源的数据而创建的,其中包括我们的开发人员倡导者Trisha Gee的专家评论。
第一个问题是:“大多数的Java开发人员都在哪里,我们中有多少人是Java开发人员呢?”我们通过综合所能获取到的最准确的信息来回答这个问题,然后进行推断,得出一个我们认为非常合理的猜测。
市场研究和分析团队根据开发人员估算模型得出的最佳估计显示,当今世界上有大约520万专业Java开发人员,他们将Java作为主要语言。但是,如果我们将主要使用其他编程语言但同时也做一些Java工作的专业开发人员也包含在内的话,这个数字可能接近680万。
至于这些Java开发人员都集中在什么地方,在亚洲居住的Java开发人员数量最多,那里大约有250万开发人员使用Java作为主要语言。北美和欧洲的数字远不及亚洲。你可能会问:“为什么呢?”好吧,起初我们有也有同样的想法,因此我们对这些区域进行了更深入的研究,以确切地了解这些数字的来源。
我们进一步研究了拥有最多Java开发人员的各个国家,然后调查了为什么这些国家在专业开发中特别喜欢Java而不是其他语言。
下图显示了每个国家使用Java作为主要语言的开发人员的百分比(用于收集此数据的调查对象最多可以选择3种主要语言)。中国和韩国的数值最高,分别约为51%和50%。数据来自2020年开发者生态系统状况调查。
专家分析
Java在前6个国家如此流行的原因可能包括Java是免费使用的、政府支持和开源。对于中国、西班牙和巴西尤其是这样。它是在中国和印度进行Android移动开发的基础,并且雇佣海外人员用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开发的软件类型,应该可以了解它的使用统计信息。根据2020年开发者生态系统状况调查的结果,Java使用最流行的领域是Web服务,占52%。
专家分析
看到Java在商业智能/数据科学/机器学习中如此流行,真令人惊讶,因为你可能认为这将是Python的领域。其他的就不足为奇了,因为Web服务的后端通常是Java,而且使用Java编写业务应用程序也很有意义,因为它们也需要使用后端和数据库。
既然我们知道了为什么这么多专业开发人员使用Java,那么让我们具体看看Java应用于哪些行业。
根据2020年开发者生态系统状况调查,Java程序主要用于IT服务(42%)与金融和金融科技领域(44%),但这并不是说Java没有用于其他行业。
专家分析
金融和金融科技领域主要涉及金融交易所、零售银行系统、创建计算引擎以及开发本地定制工具和服务,以使公司在市场上具有竞争力。 金融和金融科技几乎都是用Java建立的,所以在这里没有什么好惊讶的。 IT服务也是如此,因为许多针对非IT公司的薪资系统和库存管理服务都是基于Java构建的。其他行业也很有趣。由于Android的存在,移动开发的比例可能很高,因此Java正以这种方式被使用。大数据和数据分析也非常有趣,因为该行业是由Python主导的,但是后端可能会使用Java和JVM语言。当然构建软件开发工具也可以。 JetBrains IDE目前是用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。
在2018年,Spring Boot与Spring MVC是一样流行的,到了2020年,它变得更加流行。给出的数据来自所有使用Java作为主要语言的开发人员。
专家分析
这基本上只是在证实Spring拥有市场。几乎可以肯定的是,仍然有人在使用Struts 1,但它只是用于遗留应用程序。
2020年开发者生态系统状况调查显示,有24%的用户使用VisualVM,而一半的用户则没有使用。给出的数据来自所有使用Java作为主要语言的开发人员。
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,并且我完全了解代码编辑器所涵盖的用例。在你的工具箱中总有能容纳多于一种的工具,了解某个工具的优点将有助于我们为正确的工作选择合适的工具。
在IT社区中会经常讨论Java,其中的一个社区就是Stack Overflow。我们从“问答”部分中获取了数据,以找出哪些标签与“ java”最相关。纵轴表示提到Java的次数,横轴表示标签出现的总次数。
专家分析
对于那些希望确保自己使用了正确的技术或正寻找适合自己的工具的用户来说,这个图表可能很有用。这些语言很有意思,但这可能是因为人们正在寻找Java与其他语言之间的比较。正则表达式是人们苦苦挣扎的一个利基领域,但它能上榜也就不足为奇了。
我们分析了Reddit上“ java”子版块的帖子,并发现了Java用户在Reddit上讨论最多的主题。
专家分析
这些正是我期望看到的话题。例如,用Java编写代码的人总是会对这种语言是否仍然有需求感兴趣,毕竟,这种语言还在发展。我们刚刚庆祝了Java诞生25周年,因此人们希望检查它是否过时了,以及它是否仍然有效。特别是,如果他们刚从大学毕业,还不知道他们所学的语言是否能为他们提供工作机会。在容器中部署Java是一个非常热门的话题,包括我在内,这是每个人都想知道的东西,但几乎找不到任何相关信息。我对性能优化这个主题并不感到惊讶,尽管我认为这个主题有点多余,因为大多数应用程序实际上并不需要开发人员来进行优化,尽管许多开发人员认为这是一项重要的职业技能。使后端和前端协同工作也非常复杂,我可以想到有很多关于这方面的问题。
原文链接:
https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/
领取专属 10元无门槛券
私享最新 技术干货