作者 | Valeriia Karpenko
译者 | 弯月
出品 | 程序人生(ID:coder_life)
今年,Java 迎来了25周年,而这门编程语言的发展也达到了一个新高度。Java举办了一次特殊的在线活动来庆祝周年,活动期间许多专家演讲分享了他们的经验,并介绍了有关如何掌握该编程语言的技巧和窍门。
文本深入地研究了多方面的数据,总结了 Java 目前的发展状况以及来自专家 Trisha Gee 的分析。
地域
第一个问题是:“Java 开发人员主要聚集在哪些区域,以及全世界有多少 Java 开发人员?”我们分析了最准确的信息,并进行总结和推断后得出了以下结论。
根据市场研究及开发团队的分析模型估计,目前全世界大约有 520 万以 Java 为主要编程语言的专业开发人员。如果再加上主要使用其他编程语言,但同时也使用 Java 的专业开发人员的话,那么这个数字接近 680 万。
从地域来看,居住在亚洲的 Java 开发人员数量最多,大约有 250 万开发人员以 Java 为主要编程语言。北美和欧洲的人数远不及亚洲。你可能会好奇:“但这是为什么?”其实,我们开始也这么想,所以我们对这些区域进行了更深入的研究,以确切地了解数字的来源。
我们更深入地研究了 Java 开发人员数量居榜首的各个国家,然后调查了为什么这些国家开发人员对 Java 的喜爱超过了其它编程语言。
下图显示了各个国家/地区以 Java 作为主要编程语言的开发人员所占的百分比(收集此数据时,受访者最多可以选择三种主要编程语言)。其中,中国和韩国开发人员所占的百分比最高,分别约为 51% 和 50%。
Java 在前 6 个国家中如此流行的原因可能包括 Java 的免费使用、政府支持和开源等。在中国、西班牙和巴西尤其如此。在中国和印度,Java 是 Android 移动开发的基础,而且外包开发人员使用 Java 构建移动应用的情况非常普遍,这可能是印度使用 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++,所以近期内它都不会消失。
另一方面,C# 似乎呈现出逐渐衰落的趋势,我认为如果 Java 的使用率偏高,那么 C# 就会走低,因为二者在功能方面都非常相似。至于我为什么认为 Java 的使用在专业发展领域如此之高的原因与上述分析德国的原因类似。大多数企业业务服务都需要依赖 Java。
不仅是 IT 部门,几乎每个公司,无论是在分销、制造还是银行业,都将IT服务作为其基础设施的一部分,而这些服务(例如薪资或库存管理)的后端通常都是使用 Java 构建的。因此,为这些公司工作的专业开发人员经常使用 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 语言。软件开发工具,当然也会使用 Java。目前 JetBrains IDE 就是使用 Java 构建的。尽管其他行业的数字都有费解,但实际上,了解 Java 在这些行业中的使用状况非常有意义。
Java 8 仍然是目前最受欢迎的版本。75% 的 Java 专业开发人员正在使用 Java 8。Java 11 的热度也在上升,与去年相比,其使用率增加了 10%。下图显示了Java 各个版本的分布情况(根据 2020 年开发人员生态系统状况调查),开发人员可以选择多个版本。
Java 8 如此受欢迎的原因如下有几个。首先,Java 8 拥有 Java 开发人员希望从该语言中获得的一切,它拥有 lambda 和 Stream,而且是一个非常易于使用的版本。另外,人们不是特别愿意使用 Java 9。因为 Java 9 中引入了一些重大的体系结构变更,人们担心这些改动会破坏他们在 Java 8 中构建的应用程序。
除此之外,Oracle 还引入了每年两次的发布,而且并非所有版本都有长期的支持,比如Java 9、Java 10、Java 12 和 Java13 都只有 6 个月的支持,这可能就是为什么它们都只有非常少量用户的原因。Java 13 的用户之所以略高,是因为在此次调查结束之际,它是最新版本,因此我们认为 Java13 会在几个月后下降。
Java11 于 2018 年问世,它是拥有长期支持的最新版本。但许多企业仍然未使用它,是因为他们担心 Java9 以后的版本(由于体系结构的变化)可能会破坏一切,而且 Java 11 引入了新的许可和新的订阅,因此人们更加担心以错误的方式使用错误的版本会被 Oracle 罚款。
许多开发人员不愿升级到 Java 11 的最后一个主要因素是,它没有多少令人兴奋的新功能,因此与升级风险相比,该版本带来的新功能有点得不偿失。Java 17 将是下一个拥有长期支持的版本,而且带有许多新功能,但是直接从 Java 8 升级到 Java 17 也有很多自身的问题。
我认为,下一个长期版本 Java 17 将比前一代长期版本 Java 11 更受欢迎。但是,为了减小升级的压力,我建议你先将代码库升级到 Java 11,然后再更新到Java 17,以避免出现重大问题。
在过去的三年中,Apache Tomcat 仍然是最受欢迎的应用服务器,而 JBoss EAP 和 WildFly 的使用却减少了一半。(数据来自2018年和2020年开发人员生态系统状况的调查中,所有以 Java 为主要语言的开发人员。)
虽然 Jetty 位居第二,但所占百分比低得令人惊讶。可能是有些正在使用 Spring Boot 和其他微服务框架的开发人员没有意识到,其实背后正在使用的是 Tomcat 或 Jetty。
2018 年,SpringBoot 与 Spring MVC 的使用状况相同,但如今 2020 年变得越来越流行了。(数据来自2018年和2020年开发人员生态系统状况的调查中,所有以 Java 为主要语言的开发人员)。
我们基本上可以确认 Spring 占领了整个市场。仍然有人在使用 Struts 1,但几乎可以肯定只是在遗留应用程序中使用。
2020 年开发者生态系统状况调查显示,24% 的用户使用了 VisualVM,有一半的用户没有使用任何 JVM。(数据来自 2018 年和2020年开发人员生态系统状况的调查中,所有以 Java 为主要语言的开发人员)。
根据 2020 年开发者生态系统状况调查,IntelliJ IDEA 的份额从 2018 年的55% 增加到了 2020 年的 72%,而其他四种 IDE 的使用量则减少了。
即便我们对调查结果进行加权,也无法否认该信息有些偏差,因为该数据来自JetBrains 开发者生态系统状态的调查,而且 JetBrains 的主要产品之一是 IntelliJ IDEA。但是,这并不是说这个结果完全不合理,就好像我们在其他调查中看到的一样,IntelliJ IDEA 是最常用的 IDE 之一,拥有大约 55-60% 的用户份额。
VS Code 正在增长,它是一款优秀的代码编辑器,能够为你提供IDE的功能以及一些附加的功能扩展,因此如果人们开始转向 VS Code,则可能意味着开发人员并不清楚一个功能齐全的 IDE 到底能为他们提供什么。在 Web 开发中,使用编辑器是可以理解的,因为 Web 开发人员通常使用动态语言,并且经常使用其他工具(例如浏览器插件)来满足他们的需求。
但是在 Java 中,尤其是专业 Java 中,一款继承了应用程序服务的工具确实有很大帮助,你可以使用它们来执行分析、重构以及其它处理。
IT 社区经常讨论 Java,其中之一就是 Stack Overflow。我们从问答中获取了数据,然后找出了最常出现在“java”问题中的标签。下图纵轴表示提到 Java 的问题,横轴表示标签出现的总次数。
对于希望使用正确的技术或寻找工具的用户来说,这张图表可能非常有用。各种语言的出现比较有趣,这可能是人们拿这些语言与 Java 做了比较的缘故。而 正则表达式是一直是困扰很多人的一个话题,因此它们出现在图中并不奇怪。
我们分析了有关“java”的帖子,并找出了 Java 用户在 Reddit 上讨论最多的主题。
这些正是我期望看到的主题。例如用 Java 编写代码的人总是会对这种语言是否仍然有需求感兴趣,毕竟,这种语言还在发展。我们刚刚庆祝了 Java 诞生 25 周年,因此人们希望确认一下这种语言是否过时,还是说仍然非常流行。特别是对于刚从大学毕业的学生,他们还不知道所学的语言是否能为自己提供工作的机会。
如何在容器中部署 Java 是一个非常热门的话题,包括我在内,这是每个人都想知道的东西,但我们很难找到相关的信息。我对性能优化这个主题并不感到惊讶尽管我认为这个主题有点多余,因为大多数应用程序实际上并不需要开发人员进行优化,尽管许多开发人员认为这是一项重要的职业技能。后端与前端的协同工作可能非常复杂,因此我可以想象此处有很多问题。
原文链接:
https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/
https://www.jetbrains.com/lp/devecosystem-2020/java/
#欢迎来留言#
程序人生携手【电子工业出版社-博文视点】送出
《从零开始构建企业级推荐系统》一本
截至10月13日14:00点
点分享