我们关注 Java,以及 Kotlin 和 Scala 等相关语言、Java 虚拟机(JVM)和基于 Java 的框架和工具。
我们探讨 Java 最主要的趋势,如 Java 新版本的采用,以及 Jakarta EE、Quarkus、Micronaut、Helidon、MicroProfile 和 MicroStream 等框架的演变。
本报告主要有两个目标:
-
帮助技术负责人做出中长期的技术投资决策。
-
帮助个体开发者选择将其宝贵的时间和资源投入到何种技能的学习和发展中去。这是我们发布的第三份 Java 趋势报告。不过,我们从 2006 年开始就在内部跟踪 Java 和 JVM 的趋势,因此,我们实际上已经对这个话题做了充分的报道。
为了帮助 InfoQ 和 QCon 把握当前和未来的趋势,我们采用了 Geoffrey Moore 在其同名著作中首倡的 "跨越鸿沟 "技术成功心理模型。我们试图识别出那些符合 Moore 所说的早期市场的想法,即 "客户群是由技术爱好者和有远见的人组成的,他们希望在机会或迫在眉睫的问题上占得先机"。
和 2020、2019 年的 Java 发展趋势报告一样,下面是 2021 年我们内部使用的主题图谱:
作为背景信息,下面是 2020 年我们内部使用的主题图谱。
除了 Innovators 领域的一些新技术之外,其他值得注意的变化包括:将 Spring(及其相关项目)、Jakarta EE 和 Scala 的版本定义为不同类别。我们决定采用这种方法是为了避免将成熟度和采用情况不同的技术归入一个类别。
计划于 2022 年底发布的 Spring Framework 6 和 Spring Boot 3 将经历一次大幅修改以采用模块化,并将需要 JDK 17+ 和 Jakarta EE 9。最近,Spring Framework 6 的第一个里程碑版本已经提供了预览。
Spring Native 是 2021 年初推出的一个新工具,可以将当前用 Java 或 Kotlin 编写的 Spring Boot 应用程序转换为 GraalVM 原生镜像,该项目目前处于早期开发阶段。
2021 年初发布的 Scala 3 进行了大幅修改,增加了许多新特性、新语法和备受期待的新 Dotty 编译器,该编译器已经开发了好几年了。
2021 年 4 月,微软推出了 Microsoft Build of OpenJDK,即他们自己的 OpenJDK 下游发行版,进一步增加了对 Java 编程语言的投入。
AdoptOpenJDK 加入了 Eclipse 基金会,并立即改名为 Adoptium。向 Adoptium 的过渡工作包括建立一个 Eclipse 工作组,并将 AdoptOpenJDK 拆分为 Adoptium 顶级项目下的多个子项目:Eclipse AQAvit、Eclipse Temurin 和 Eclipse Temurin Compliance。
下面是几位 InfoQ Java Queue 编辑和 Java Champion 针对各种主题的讨论的简单汇总:
-
Michael Redlich,埃克森美孚工程研究部门高级研究员和 InfoQ Java Queue 编辑。
-
Ben Evans,红帽公司高级首席软件工程师、Java Champion 和 InfoQ Java Queue 编辑。
-
Erik Costlow,Contrast Security 开发者关系总监和 InfoQ Java Queue 编辑。
-
Johan Janssen,Sanoma Learning 软件架构师和 InfoQ Java Queue 编辑。
-
Karsten Silz,资深 Java 全栈开发人员和 InfoQ Java Queue 编辑。
-
Monica Beckwith,微软高级首席工程师和 Java Champion。
-
Ana Maria Mihalceanu,红帽开发大使和 Java Champion。
-
Reza Rahman,微软 Azure 首席 Java 项目主管。
-
Simon Ritter,Azul 公司副首席技术官和 Java Champion。
我们认为,这可以为我们在内部主题图谱上对某些技术的建议定位提供更多的背景信息。
JDK 17
Beckwith:通过“JEP 403:JDK 内件强封装”,Java 现在成了更有力的 OOP 原则执行者。通过一个平台无关的 Vector API 进行向量计算。语言增强,如 Records,JVM 改进,如 Valhalla 项目,消除了许多冗长的内容,并进一步拥抱了不变性的概念,为性能优化提供了可能。
Mihalceanu:2021 年,无论是 Java 的 LTS 版本,还是非 LTS 版本,都给 Java 开发者带来了惊喜。Java 17 的发布证实,预览功能中的许多功能现在已正式可用,并将长期可用。它也增加了将一些仍在 Java 8 上运行的