这一年,Java达到了一个令人难以置信的里程碑,达到了25岁的高龄。我们通过举办一个特别的在线Java日活动来庆祝它的周年纪念日,在那里,许多专家演讲者分享了他们的经验,并就如何从语言中获得更多东西提供了提示和诀窍。
这引发了我们的思考,我们决定深入研究这些数据,一劳永逸地发现Java的常见状态是什么,并帮助回答您提出的一些紧迫问题。我们的一些发现可能并不令人惊讶,但也有一些非常意想不到的见解。
本周发布了Java15,我们决定将其放在一起,向您展示Java的状态。这篇文章是基于几个不同来源的数据创建的,其中包括我们的开发人员倡导者Trisha Gee的专家评论。
第一个问题是,“大多数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的功能或稳定性,而是使用允许他们快速构建和测试的语言。
根据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年开发者生态系统状况的结果,Web服务是使用Java的最受欢迎的领域,占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是如何在这些行业中使用的将会非常有趣。
Java8仍然是最受欢迎的版本。75%的专业开发人员使用Java作为他们的主要语言。下图显示了Java版本的分布情况,假设开发人员在2020年开发人员生态系统调查中选择了其中几个版本。
专家分析Java8如此受欢迎的原因有几个。首先,它拥有典型的Java开发人员从语言中需要的一切,它有lambdas和Streams,而且通常是一个易于使用的很好的版本。此外,人们真的不愿意迁移到Java 9。Java 9引入了一些重大的体系结构变化,人们担心这些变化会破坏他们在Java 8中构建的应用程序。除此之外,Oracle引入了每两年发布一次的版本,因此并不是所有的版本都在很长一段时间内都受到支持,所以Java 9、Java 10、Java 12和Java 13只支持6个月,这可能就是为什么它们的用户数量都非常少的原因。Java13之所以如此高,是因为当这项调查发布时,它是最新的版本,所以您可以预期数字在几个月后会下降。Java11于2018年问世,它是拥有长期支持的最新版本。很多企业还没有转向它,因为他们担心过去的Java9(带着它的架构变化)会破坏一切,而且Java11引入了新的许可和新的订阅,所以它带来了额外的恐惧,如果您使用了错误的版本,以错误的方式使用,Oracle会对您进行罚款。许多开发人员没有更新到Java11的最后一个重要因素是,它没有太多令人兴奋的新特性,因此升级的风险并没有因为该语言的能力而降低。Java17将是下一个长期支持的版本,它带来了大量的新特性,但是从Java8直接更新到Java17也会有其自身的问题。我的预测是,我认为下一个长期版本Java 17将比上一个LTS(长期支持版本)Java 11更受欢迎。不过,作为Java 17的准备工作,我建议您先将代码库更新到Java 11,然后再更新到Java 17,以避免出现大问题,这一点我真的怎么强调都不为过,我建议您先将代码库更新到Java 11,然后再更新到Java 17,以避免出现大问题。
在过去的3年中,Apache Tomcat一直是最受欢迎的应用服务器,而JBoss EAP和WildFly的使用量减少了一半。给出的数据来自所有使用Java作为主要语言的开发人员,他们在2018年和2020年参与了开发人员生态系统调查。
专家分析,Jetty位居第二,但看起来确实出人意料地低。一些使用Spring Boot和其他微服务框架的开发人员可能没有意识到他们正在幕后使用Jetty。
Spring Boot在2018年曾与Spring MVC一样受欢迎,现在已经在2020年变得更受欢迎。给出的数据来自所有使用Java作为主要语言的开发人员。
专家分析,这基本上只是确认了Spring拥有市场。现在仍有人在使用Struts1,这几乎可以肯定只适用于遗留应用程序。
2020年开发者生态系统状况调查显示,24%的用户使用VisualVM,而一半的用户不使用VisualVM。给出的数据来自所有使用Java作为主要语言的开发人员。
IntelliJ Idea的份额从2018年的55%增加到2020年的72%,而其他4个的使用有所减少,这是2018年和2020年开发者生态系统调查报告的结果。
尽管如此,我们不否认这些信息可能有点歪曲--即使考虑到我们对调查结果的重视--因为这是来自JetBrains的开发者生态系统状况调查,而JetBrains的主要产品之一是IntelliJ Idea。然而,这并不是说这不是完全不合理的,因为如果我们看看其他调查,IntelliJ IDEA通常是使用最多的IDE之一,通常拥有大约55-60%的用户份额。VSCode正在增长,这是令人担忧的,不是从竞争的角度来看,而是从明显缺乏对IDE所提供的东西的理解的角度来看。VSCode是一个代码编辑器,具有IDE中的一些功能,以及可以提供附加功能的扩展-因此,如果人们求助于VSCode进行开发,可能意味着开发人员不知道功能齐全的IDE能为他们提供什么。在Web空间中,使用编辑器是可以理解的,因为Web开发人员通常使用动态语言,并且通常使用浏览器插件等其他工具来满足他们的需求。但是在Java中,特别是在专业Java中,您可以从一个与应用程序服务器集成的好工具中获益良多,并且您可以真正使用分析和重构等一切功能。
Java经常在IT社区讨论,其中之一就是堆栈溢出。我们从问答部分获取数据,找出哪些标签在“java”中出现最多。垂直轴显示Java中的提及,而水平轴表示标签出现的总次数。
专家分析此图表对于希望确保使用正确的技术或查看适用于这些技术的工具的用户可能很有用。这些语言有点有趣,但可能就是这样,因为人们正在搜索Java和其他语言之间的比较。正则表达式是人们苦苦挣扎的小众产品,但它们入选榜单也就不足为奇了。
我们分析了“java”subreddit上的帖子,找到了Reddit上Java用户讨论最多的话题。
专家分析这些正是我期待看到的话题。例如,用Java编写代码的人总是会对这种语言是否仍然有需求感兴趣,毕竟它有点流行了。我们刚刚庆祝了Java诞生25周年,所以人们想要检查它是否过时和遗留下来,以及它是否仍然有效。尤其是如果他们刚从大学毕业,还不知道所学的语言是否能为他们提供就业机会。在容器中部署Java是一个非常热门的话题,这是每个人都想知道的事情,包括我在内,但是关于它的信息却很少。我对性能优化这个话题并不感到惊讶,虽然我认为这个主题有点多余,因为大多数应用程序实际上并不需要开发人员进行优化,尽管很多开发人员认为这是一项重要的职业技能。让后端和前端一起工作也可能是非常复杂的,我可以想象有很多关于这方面的问题。