今年,Java迎来了25周年的里程碑。我们通过在线Java日活动庆祝它的诞生,许多专家演讲者分享了他们的经验,并提供了如何充分利用该语言的提示和技巧。这让我们开始思考,我们决定深入研究数据,看看Java的一般状态是什么样的,并回答一些紧迫的问题。我们的一些发现可能并不令人惊讶,但有些见解却出乎意料。1.Java开发人员有多少,分布在哪里?第一个问题是:“大多数Java开发人员在哪里,我们当中有多少人是Java开发人员?”提出一个我们认为相当合理的猜测。市场研究和分析团队根据开发人员评估模型做出的最佳估计显示,当今世界上大约有520万以Java作为主要语言的专业Java开发人员。然而,如果我们包括主要使用其他编程语言但也做一些Java工作的专业开发人员,这个数字很可能会接近680万。大多数Java开发人员居住在亚洲,大约有250万开发人员使用Java作为他们的主要语言。北美和欧洲的数字远不及亚洲。你可能会问,“为什么?”好吧,我们一开始也是这么想的,所以我们对这些区域进行了更深入的挖掘,以了解这些数字的确切来源。2.哪个国家的Java开发者最多?我们仔细研究了Java开发人员数量最多的国家,然后调查了为什么这些国家特别青睐Java而不是其他语言进行专业开发。下图显示了每个国家/地区使用Java作为主要语言的开发人员的百分比(用于收集此数据的受访者最多可以选择3种主要语言)。中国和韩国的数值最高,分别约为51%和50%。来自2020年开发者生态系统状况调查的数据。https://www.jetbrains.com/lp/devecosystem-2020/java/?_ga=2.150745394.563113833.1601341550-619513127.1595322402专家分析Java在前6个国家如此受欢迎的原因可能包括Java免费使用,政府支持和开源。中国、西班牙和巴西尤其如此。它是中国和印度Android开发的基础,聘请海外人员用Java开发移动应用程序非常普遍,这可能是印度使用高峰的原因。德语的使用率也很高,这可以归因于Java是德国软件工程师中最流行的语言,因为它被各个行业用来构建高度可扩展的应用程序。大多数企业服务都依赖Java来驱动支持日常业务运营的应用程序,例如工资单、库存管理、报告等。德国还有一个庞大的金融部门,大量使用Java来实现国内技术,例如交易机器人、零售银行系统以及金融业保持竞争力所需的其他应用程序。我们本来以为美国的Java用户比例会很高,其实没有,这也是很合理的。美国有大量的技术栈可供选择,许多技术公司往往处于这些技术栈的最前沿,因此那里的开发人员可能不需要Java的强大或稳定,而是使用可以让他们快速构建和构建的Java。测试等语言。3.Java在开发行业中的地位根据《2020年开发者生态系统状况调查》,超过三分之一的专业开发者使用Java作为他们的主要语言,而Java在专业开发者中仍然是仅次于JavaScript的第二大语言。专家分析认为JavaScript和Java处于领先地位,这并不奇怪,因为它们是配对的:使用Java的开发人员通常将JavaScript用于前端和任意快速脚本。由于机器学习的流行,Python可能排在第三位。一般来说,我们希望网络成为开发者生态系统的重要组成部分,因此JavaScript、HTML和CSS以及PHP将始终占有一席之地。SQL也将永远存在,因为没有多少东西不需要一定容量的数据库。C++也是一种可靠的语言,因为它用于许多嵌入式应用程序,因此它不会很快从图表中消失。虽然C#似乎正在衰落,但我想如果Java高,C#就会低,因为它们在功能上非常相似。至于为什么我觉得Java在专业开发领域这么高,原因和前面说的德国差不多。大多数企业都依赖Java来运行他们的业务服务。不仅仅是IT部门,几乎所有公司,无论是分销、制造还是银行业,都将IT服务作为其基础设施的一部分,而这些服务,如工资单或库存管理,通常在后端使用Java构建。因此,Java被这些公司的专业开发人员大量使用。4.用Ja??va开发的软件类型快速浏览一下用Java开发的软件类型应该可以了解其使用统计数据。根据2020年开发者生态系统状况调查,Java使用最流行的领域是Web服务,占52%。专家分析看到Java在BI/数据科学/机器学习中的流行程度令人惊讶,因为您可能认为那将是Python的领域。其他的并不奇怪,因为Web服务的后端通常是Java,用Java编写业务应用程序是有意义的,因为它们也需要使用后端和数据库。5.使用Java的主要行业既然我们知道为什么有这么多专业开发人员使用Java,那么让我们具体看看Java在哪些行业中使用。根据2020年开发人员生态系统状况调查,Java程序主要用于IT服务(42%)以及金融和金融科技(44%),但这并不是说Java没有用于其他行业。金融和金融科技领域的专家分析主要涉及金融交易、零售银行系统、计算引擎的创建以及本地定制工具和服务的开发,以使公司在市场上具有竞争力。金融和金融科技几乎都是用Java构建的,所以这不足为奇。IT服务也是如此,因为非IT公司的许多薪资系统和库存管理服务都是基于Java构建的。其他行业也很有趣。移动开发的百分比可能很高,因为Android,所以Java正在以这种方式使用。大数据和数据分析也很有意思,因为这个行业以Python为主,但后端可能会用到Java和JVM语言。当然构建软件开发工具也是可以的。JetBrainsIDE目前是用Java构建的。虽然其他行业有点神秘,但了解Java在这些行业中的使用情况实际上非常有趣。6.Java相关工具Java版本Java8仍然是最流行的版本。在使用Java作为主要语言的专业开发人员中,有75%的人使用Java8。下图显示了Java版本的分布情况,基于开发人员在2020年开发人员生态系统状况调查中选择的几个版本。专家分析了促成Java8流行的几个因素。首先,它拥有典型Java开发人员需要的所有语言,它有lambda和流,而且它是一个很好用的易用版本。此外,人们一直不愿意迁移到Java9。Java9引入了一些重大的架构变化,人们担心这些变化会破坏他们使用Java8构建的应用程序。除此之外,Oracle还每两年发布一次版本,因此并非所有版本都得到长期支持,因此Java9、Java10、Java12和Java13仅支持6个月,这可能是它们的用户都这么少的原因。Java13之所以如此之高,是因为它是本次调查发布时的最新版本,因此您可以预计该数字将在几个月后下降。Java11于2018年发布,是长期支持的最新版本。许多企业仍然没有迁移到它,因为他们担心在Java9之后(由于它的架构变化)它会破坏一切,而Java11引入了新的许可证和新的订阅,所以它带来了新的恐惧:更担心如果你使用错误的版本,错误的使用方式,Oracle会罚款你。许多开发人员没有升级到Java11的最后一个主要因素是它没有很多令人兴奋的新功能,因此该语言的功能并不能降低升级的风险。Java17将是下一个长期支持的版本,并带有许多新特性,但直接从Java8升级到Java17也会带来一些问题。我的预测是,我认为下一个长期版本Java17将比上一个LTS(长期支持版本)Java11更受欢迎。但是,作为Java17的准备,我怎么强调都不为过,建议您先将代码库更新到Java11,然后再更新到Java17,以避免出现重大问题。7.流行的应用服务器ApacheTomcat在过去3年中仍然是最流行的应用服务器,而JBossEAP和WildFly的使用量减少了一半。提供的数据来自所有参与2018年和2020年开发者生态系统调查的基于Java的开发者。ExpertAnalysisJetty位居第二,但出奇的低。可能有些开发者在使用SpringBoot等微服务框架的时候并没有意识到自己在使用Tomcat或者Jetty而不自知。8.Top5Web框架2018年,SpringBoot与SpringMVC一样流行,2020年,它更加流行。提供的数据来自所有使用Java作为主要语言的开发人员。专家分析基本上只是证实了Spring是有市场的。几乎可以肯定还有人仍在使用Struts1,但仅限于遗留应用程序。9.Top5Analyzer的2020年开发者生态系统状况调查显示,24%的用户使用VisualVM,而一半的用户没有。提供的数据来自所有使用Java作为主要语言的开发人员。10.Top5IDE/Editors2018和2020DeveloperEcosystemSurvey显示,IntelliJIDEA的份额从2018年的55%增加到2020年的72%,而其他四个的使用率下降。专家分析然而,尽管我们对调查结果进行了加权,但我们并不否认这些信息可能有些偏差,因为这是来自JetBrains开发者生态系统状态调查,而JetBrains的主要产品之一是IntelliJIDEA。然而,这并不是说它并非完全不合理,正如我们在其他调查中看到的那样,IntelliJIDEA通常是最常用的IDE之一,通常拥有大约55-60%的用户份额。VSCode正在成长,不是从竞争的角度来看,而是因为对IDE缺乏了解。VSCode是一个代码编辑器,具有您可以在IDE中找到的一些功能,以及提供额外功能的扩展。因此,如果人们正在使用VSCode进行开发,这可能意味着开发人员不知道功能齐全的IDE可以为他们提供什么。在网络世界中,使用编辑器是可以理解的,因为网络开发人员通常使用动态语言并经常使用其他工具(例如浏览器插件)来满足他们的需求。但是在Java中,尤其是在专业Java中,你确实从一个与应用服务器集成的好工具中得到了很多,你可以真正使用profiling、refactoring等。11.MostDiscussedJavaToolsandOtherLanguagesJava是在IT社区中经常讨论,StackOverflow就是其中之一。我们从问答部分获取数据,以找出哪些标签与“java”最相关。纵轴代表Java被提及的次数,横轴代表该标签出现的总次数。专家分析此图表可能对想要确保他们使用正确技术或正在寻找适合他们的工具的用户有用。这些语言很有趣,但这可能是因为人们正在寻找Java与其他语言之间的比较。正则表达式是人们苦苦挣扎的一个小众领域,但它上榜也就不足为奇了。12.Java社区热门话题Java讨论我们分析了Reddit上“java”子版块的帖子,发现了Java用户在Reddit上讨论最多的话题。这些主题的专家分析正是我所期望看到的。例如,用Java编写代码的人总是对这门语言是否还有需求感兴趣,毕竟这门语言还在不断发展。我们刚刚庆祝了Java的25周年,所以人们想检查它是否过时,以及它是否仍然有效。尤其是刚从大学毕业,还不知道所学的语言是否能为他们提供工作机会。在容器中部署Java是一个非常热门的话题,包括我在内的每个人都想了解它,但几乎找不到任何相关信息。我对性能优化这个话题并不感到惊讶,尽管我认为它有点多余,因为大多数应用程序实际上并不需要开发人员进行优化,尽管许多开发人员认为这是一项重要的职业技能。让后端和前端一起工作也很复杂,我能想到很多关于这个的问题。
