写点什么

InfoQ 2022 年趋势报告:Java 篇

作者:Michael Redlich, Ben Evans等

  • 2022-12-23
    北京
  • 本文字数:5441 字

    阅读完需:约 18 分钟

InfoQ 2022 年趋势报告:Java 篇

本报告概述了 InfoQ Java 编辑团队目前是如何看待 Java 领域内的技术采用和新兴趋势的。

 

我们重点关注 Java,以及相关的语言(如 Kotlin 和 Scala)、Java 虚拟机(JVM)和基于 Java 的框架和工具。

 

我们讨论了核心 Java 的发展趋势,比如新版本 Java 的采用,以及Spring FrameworkJakarta EEQuarkusMicronautHelidonMicroProfileMicroStream等框架的发展。

 

本报告有两个主要目标:

 

  • 协助技术负责人制定中长期技术决策。

  • 帮助个人开发者将宝贵的时间和资源投入到可以学习和发展技能的地方。

 

这是我们发布的第四份 Java 趋势报告。自 2006 年以来,我们一直在内部跟踪 Java 和 JVM 的发展趋势,这个话题已经有大量的新闻报道。

 

为了更好地了解 InfoQ 和 QCon 报道的关于当前和未来的发展趋势,我们使用了Geoffrey Moore在同名著作中提出的“跨越鸿沟”技术思维模型。

 

我们试图找出 Moore 所说的早期市场,早期市场的“客户群是由技术爱好者和有远见的人组成的,他们希望在机会或迫在眉睫的问题出现之前抓住它们。”

 

与我们对2021年2020年2019年Java 趋势报告所做一样,下面是 2022 年发展趋势图。

 


作为回顾,下面是 2021 年发展趋势图:

 


除了在创新者阶段发现了一些新技术之外,一些显著的变化如下所述。

 

我们决定将所有 OpenJDK 的下游发行版放到一个标签中,即 Java Community JDK,并将它们放到早期大众阶段。这个清单包括:Amazon CorrettoAzul ZuluOpenJDK的微软构建版本BellSoft Liberica JDKEclipse TemurinIBM Semeru阿里巴巴龙井

 

Java 17 已经进入了早期采用者阶段,因为一些框架,尤其是 Spring,已经将 Java 17 作为基线。

 

由于 MicroStream 与 Helidon、Micronaut 和 Spring Boot 的持续开发和集成,也加入到了 Helidon 和 Micronaut 的早期采用者阶段。

 

Spring Native 被移除,取而代之的是更通用的原生 Java。这是因为最初于 2020 年推出并休眠了两年的Leyden项目于 2022 年 5 月重新启动,VMware 决定用 GraalVM 取代Spring Native项目来支持生成原生镜像。

 

经过一年多的开发,Spring Framework 6.0 和 Spring Boot 3.0 都于 2022 年 11 月发布,采用了 Java 17+和 Jakarta EE 9 基线。这些版本还通过Micrometer内嵌了可观察性。

 

以下是 InfoQ 的几位 Java Queue 编辑与 Java Champion 对不同主题的讨论摘要。这些编辑和 Java Champion 包括:

 

  • Michael Redlich——埃克森美孚技术与工程公司高级研究技术员,InfoQ Java Queue 首席编辑;

  • Ben Evans——Red Hat 高级首席软件工程师,InfoQ Java Queue 编辑;

  • Johan Janssen——ASML 软件架构师,InfoQ Java Queue 编辑;

  • Dalia Abo Sheasha——微软产品经理;

  • Billy Korando——Oracle 开发者布道师;

  • Otávio Santana——Zup Innovation 杰出软件工程师。

 

我们也要感谢为更新 2022 年“跨越鸿沟”模型提供输入的其他 Java Queue 编辑:

 

  • Erik Costlow——产品高级总监,InfoQ Java Queue 编辑;

  • Karsten Silz——Java 全栈开发者,InfoQ Java Queue 编辑。

 

他们为我们在发展趋势图上推荐的一些技术定位提供了更多的背景信息。

OpenJDK

 

Korando:作为Amber项目的一部分,Record 类、模式匹配和对字符串的改进让我最为兴奋。我知道,在我的职业生涯中,这些特性在进行数据转换、处理格式化字符串和其他令人沮丧的任务时都非常有用。使用这些特性让我感到兴奋,未来的 Java 开发者也将受益于这些特性,不必像我一样经历这些挫折。

 

Santana:Java 8 已经过时了。在最近的一项市场调查(如 JRebel 的报告)中,我们可以看到 Java 8 的受欢迎程度正在下降。这种变化对于 Java 市场和开发者体验行业(如 IDE、框架、集成工具等)来说都是一件好事。我们还可以看到市场和 Java 社区为将 Java 11 作为最低版本要求付出了巨大的努力,比如 Quarkus 和 Jakarta EE 的最新版。我相信其他应用程序框架也会效仿,将 Java 11 作为最低版本要求。当我们谈及 Java 平台,我相信这些工具和框架占了企业代码的 80%左右,所以它们会不断更新,以免失去企业开发者的青睐。向 Java 11 的迁移也表明了一种更快节奏的文化,Java 和 JDK 版本将更频繁地更新,至少每两年更新一次。

 

Evans:随着 JDK 17 的发布,JDK 11 终于在市场上超越了 JDK 8。

 

Adoptium Marketplace的发布和可重复构建的到来比许多人意识到的要重要得多,对于那些必须关心供应链安全的企业和个人来说尤其如此。

 

Redlich:去年发布的Java 18Java 19提供了新的预览和孵化器特性,如虚拟线程、结构化并发、switch 模式匹配、Record 模式以及外部函数和内存 API。这些特性以 JEP 的形式为Amber项目Loom项目Panama项目提供了持续的贡献。Java 20 计划于 2023 年 3 月发布,它将提供这些特性的升级预览和孵化器版本。

Java 17 及以上版本

 

Sheasha:自从最新的 Java 17 LTS 发布以来,我们注意到 Java 17 的采用速度比 Java 11 发布时要快。这是由各种各样的因素导致的,包括公司采用更现代的 DevOps 流程和管道,支持更快更容易的应用程序更新。另一个因素是框架和库采用了更快的发布节奏,而这在以前是开发者升级应用程序的一大障碍。最新的 Spring Framework 6 基于 Java 17,这向开发者传达了采用最新版本 Java 的决心。另一个拥抱更快 Java 发布节奏的团队是 Minecraft 团队,他们现在向数百万玩家发布的更新也是基于 Java 17 的。

 

与此同时,我们看到许多应用程序仍然在使用 Java 8。由于从 Java 8 升级到 Java 11 比从 Java 11 升级到 Java 17 更困难,因此,已经升级到 Java 11 的团队更有可能迅速采用 Java 17。

 

我们还看到越来越多的开发者使用非 LTS Java 版本(Java 18+),因为他们更有信心为自己的应用程序采用更新的 Java 版本,这样他们可以使用 Java 的新特性,而不必再等待数年。我们看到许多开发者在创建原型或开发新应用程序时选择了最新的非 LTS Java 版本。但对于生产环境来说,LTS 版本仍然是大多数团队的选择。

 

Santana:在最新的 LTS 版本中,Java 17 为 Java 开发者带来了几个新特性,其中 Record 模式带来了一个主要与企业业务相关的新视角。

 

Janssen:有许多令人兴奋的变化,例如 Spring Boot 要求使用 Java 17,这有望促进 Java 17 的采用。

Loom 项目与虚拟线程

 

Sheasha:在 Java 性能方面有很多令人兴奋的变化。许多开发者都很高兴看到 Loom 项目的更新,因为他们现在可以尝鲜一些新的特性,如虚拟线程

 

Korando:将 Loom 项目的关键特性合并到主线 Java 发行版中可能是过去一年里最重要的变化。Loom 项目的开发在过去几年中一直备受关注,因为它承诺的更高的水平可伸缩性将被应用于许多 Java 开发者的应用程序中。虽然一些特性,如虚拟线程,现在已经准备好用于生产环境中,但毫无疑问,许多开发者都在热切地等待它们从预览状态移出,成为 LTS 的一部分,并有望在 2023 年 9 月与 Java 21 一起发布。

 

Evans:我听到很多人都在谈论 Loom 项目,但我对它持保留态度——我想等到我们有了更多的实际经验之后再说。我认为它可能会像一些人认为的那样改变游戏规则,但我不认为这是一件容易的事情。

 

Redlich:2022 年 9 月,备受期待的 Java 19 发布了对虚拟线程的支持。这方面已经有了孵化器框架,如Helidon Níma(Oracle 提供的微服务框架)和 Vert.x 提供的虚拟线程孵化器项目。我预计其他供应商也会效仿。

Jakarta EE

 

在延迟了大约三个月之后,备受期待的Jakarta EE 10于 2022 年 9 月 22 日向 Java 社区发布了。

 

Redlich:Jakarta EE 10 对 20 多个规范进行了更新,并增加了一个新的Core Profile,作为现有平台Web Profile的补充。Jakarta EE 工作组已经在讨论 Jakarta EE 10 和 Jakarta EE 11 的小版本更新计划。

原生 Java(GraalVM/Spring Native/Leyden 项目)

 

Santana:GraalVM 越来越受欢迎,这为Leyden项目提供了巨大的空间。这是一场如何让 Java 启动更快的竞赛!

 

Janssen:GraalVM 正在不断改进并支持更多的用例,例如 Spring 应用程序。

Open Telemetry

 

EvansOpenTelemetry已经发布了 1.0 版本,对于这样一个出现时间不长的标准来说,这算是取得了巨大的进步。我没想到 OpenTelemetry 会这么轻易超越已经很激进的预期。它将实现甘特提出的“到 2023 年底实现遥测大部分流量”的目标,这远远超出了计划。

 

Redlich:即将发布的 MicroProfile 6.0 将首次推出 MicroProfile Telemetry规范,用以取代 MicroProfile 1.3 中首次引入的 MicroProfile OpenTracing规范。

容器

 

Sheasha:随着越来越多的 Java 工作负载迁移到容器中,我们看到了一种转变——从只讨论如何容器化 Java 应用程序到如何最好地容器化 Java 应用程序。我们看到了更多关于如何在容器中运行应用程序的最佳实践。例如,微软发表了一篇关于内存分配和垃圾收集的文章

 

Evans:Java 应用程序的容器化仍在继续演进当中。

微软对 Java 的支持

 

在 2021 年 4 月推出自己的 OpenJDK 下游发行版后,微软继续拥抱 Java 编程语言。

 

Sheasha:微软加入了Jakarta EEMicroProfile工作组,因为微软继续在 Java 生态系统上进行大量投入,原因有很多,GitHub ReadME 项目的这篇文章对此做了说明。

来自 Java 社区的声音

 

Sheasha:随着创新速度的加快,现代化仍然是许多开发者面临的挑战。发布的 Java 版本越多,应用程序在 Java 版本和框架方面的差距就越大,而且越来越难以缩小。这就是为什么我们看到越来越多的公司在现代化工具上进行了投入。一些项目(如OpenRewrite)对我们来说很重要,因为它们可以让我们在不抛弃应用程序的同时保持创新。我们还看到了一些新的项目,例如用于 Java 的Eclipse迁移工具包,它可以帮助开发者进行 Java 版本迁移。

 

开发者疲于学习和掌握开发应用程序所需的大量知识,因为不断有新的库、框架和特性出现。此外,我们看到了“DevOps”中越来越多的“Ops”部分渗透到开发者的职责当中,所以开发者现在也需要了解 Docker 和 Kubernetes。

 

Korando:我认为,Loom 项目向主线 OpenJDK 交付特性的兴奋点开始转向了 Valhalla 项目。Valhalla 项目是 OpenJDK 的另一个长期项目,有望显著改善内存管理和吞吐量性能。希望我们能在 2023 年将 Valhalla 项目特性交付到 OpenJDK 主线!

 

Santana无反射框架成为一个新趋势,通过消除反射来缩短应用程序启动时间和减少内存消耗。Quarkus、Micronaut、Spring Native 和 Jakarta CDI Lite 等框架就是这方面的例子。

 

云是所有解决方案的新目标。我们看到了向各种环境的迁移,不仅是基础设施即服务(IaaS),还包括任何能够提升 Java 开发者效率并为操作层提供更多抽象的解决方案。

 

从软件开发者的角度来看,无服务器带来了可伸缩性和简单性。为了利用这些优势,我们可以看到一些解决方案转向了原生。

 

Evans:今年,Quarkus 似乎已经开始关注开发者的意识。我经常会遇到尝试使用 Quarkus 的开发者,尽管实际的应用数量仍在增长当中。我想人们已经意识到它不仅仅是原生编译的 Java,它也是一流的 Kubernetes Java,具备很棒的开发体验。

有哪些令人兴奋的新东西我们还没有关注

 

Korando:在 JavaOne 2022 上宣布将 Graal JIT 编译器和原生镜像合并到 OpenJDK 中,这是出乎我们意料的一件事。GraalVM 的许多技术都很激动人心,但对于许多 Java 开发者来说它们很难使用。将这些关键特性合并到 OpenJDK 中可以让 Java 开发者更容易地使用它们!

 

Santana:我们知道,开发工具和架构是一个巨大的产业。因此,我们可以看到许多公司在谈论“完美解决方案”和非权衡决策。但实际上,Java 在其他方面被证明具有一致性,并且在一些场景中有一些成功案例。每一种架构决策都存在权衡,我们需要了解其上下文,以便将最佳解决方案应用到最佳的场景中。Java 生态系统向我们展示了它是一个生产就绪的平台,它为微服务、CQRS、云原生、无服务器、事件驱动设计、单体系统、SQL、NoSQL、映射器、活动记录等提供了解决方案。

 

Evans:我没想到 Loom 会在 Java 19 中作为试验特性被及时合并到主线,我真的很喜欢 Gunnar Morling 的 JFR Analytics 项目。

 

Janssen:我最近了解了 OpenJDK 的检查点协调恢复(Coordinated Restore at Checkpoint,CRaC),它通过运行时优化缩短启动时间。

Java 社区

 

Sheasha:就我个人而言,我很庆幸 Java 在我的整个职业生涯中为我打开了许多扇门。我曾有机会在 Java 生态系统中担任开发者、团队负责人、开发者布道师和程序经理。

 

Java 在语言方面的不断创新和改进让这个领域变得有趣,还使 Java 成为解决各种行业各种问题的绝佳选择。对我来说,我喜欢在 Java 领域工作的一个最大的理由是 Java 社区,社区里满是来自世界各地的充满热情的人才。

 

Evans:逐渐跟 Java 8 告别,并让社区转向 Java 17 及更高版本,这另人感到兴奋。此外,在可观测性方面,尤其是 OpenTelemetry,正变得越来越强大。此外,还有一些关于 Profile 的新工作(包括 Java Flight Recorder)正在启动。

 

Janssen:我真的很期待与 Loom 项目合作,希望我们很快就能够开始在项目中使用它。

 

Redlich:我很享受为开源项目做贡献的时光,最近还成为Jakarta NoSQLJakarta Data规范以及Eclipse JNoSQL项目(Jakarta NoSQL 的兼容实现)的提交者。我们一直致力于在 Jakarta EE 11 发布时将这两个 Jakarta 规范及时包含在 Jakarta EE 平台中。

结论

 

需要注意的是,我们的观点只涵盖了一部分东西。Java 生态系统的不同部分可能会有不同的体验。我们的这份 2022 年报告可以作为讨论的引子,而不是一个明确的声明。我们也希望人们能够就行业的发展方向展开公开的讨论。

 

原文链接

https://www.infoq.com/articles/java-jvm-trends-2022/


相关阅读:

InfoQ 2022 年趋势报告:.NET篇

InfoQ 2022年趋势报告:人工智能、机器学习和数据工程篇

InfoQ 2022年趋势报告:DevOps与云计算篇

InfoQ 2022年趋势报告:架构与设计篇

InfoQ 2022年趋势报告:移动及物联网篇

InfoQ 2022年趋势报告:文化与方法篇

2022-12-23 08:0013357

评论

发布
暂无评论
发现更多内容

iMovie for Mac v10.4.0中文版 支持Macos14系统 兼容M3 Mac

Rose

iMovie Mac破解版 Mac视频剪辑工具 iMovie mac版 iMovie中文版下载

低代码平台在数字化转型过程中的定位

明道云

Mac视频转码编辑工具 Compressor 4.7中文激活版 现已支持M3 Mac

Rose

Compressor Mac下载 Compressor破解版 Mac视频编码工具 Compressor for mac

用户注册这样玩,保你平安

越长大越悲伤

Java 后端 注册

RazorSQL for Mac(多功能SQL数据库管理器)支持M1/M2 v10.5.0注册激活版

Rose

数据库 RazorSQL下载 RazorSQL注册码

畅捷通的 Serverless 探索实践之路

Serverless Devs

云计算 Serverless AIGC

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

KaiwuDB

KaiwuDB 可信数据库

初识 OpenCV

数新网络官方账号

OpenCV 计算机视觉

三分钟搞懂Serverless,互联网个人创业者必备

凌览

node.js Serverless 独立开发者

大模型+搜索:一盘跳棋和三位选手

脑极体

AI

华为云耀云服务器L实例:中小企业数字化转型的关键伙伴

轶天下事

HarmonyOS开发案例分享:万能卡片也能用来玩游戏

HarmonyOS开发者

HarmonyOS

记一次线上视频接口OOM问题

xfgg

Java

企业上云请认准华为云这款服务器,数字化时代安全可靠的引擎

轶天下事

如何编译你的C程序 | AI工程化部署

AIWeker

c AI工程化部署

小程序开发新选择!华为云耀云服务器L实例快人一步

YG科技

咨询+低代码,强强联合为制造业客户赋能

明道云

华为云耀云服务器L实例:中小企业数字化转型的加速器

轶天下事

Final Cut Pro for Mac(fcpx视频剪辑)v10.7.0 中文版

Rose

mac软件下载 Final Cut Pro中文版 Final Cut Pro破解版 fcpx 视频剪辑软件

SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

小万哥

MySQL 数据库 程序员 sql 后端开发

华为云耀云服务器L实例:企业建站与小程序开发的新纪元

YG科技

极狐GitLab 16.6 如约而至,更好的 DevOps 体验,赶快升级使用吧!

极狐GitLab

DevOps gitlab CI/CD DevSecOps MR

Logic Pro X v10.8.1中文破解版 mac音频制作

Rose

mac音乐制作软件 Logic Pro破解版 Logic Pro下载

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.9.0激活版

Rose

AnyGo中文版 AnyGo for Mac Mac虚拟机定位 GPS位置 AnyGo破解版

稳定可靠,华为云服务器引领数字化时代

YG科技

加速数智化升级,华为云这款服务器让企业上云更轻松

轶天下事

KeyShot2023pro安装包 附KeyShot注册机 适用于Mac/win

Rose

KeyShot2023pro安装包 KeyShot 注册机 3D渲染和动画软件

一起学Elasticsearch系列-脚本查询

Java随想录

Java 大数据 Elastic Search

淘宝订单接口在电商行业中的重要性及其实践

Noah

MySQL数据库中SQL语句分几类?

小齐写代码

华为云耀云服务器L实例:中小企业小程序开发的高效解决方案

YG科技

InfoQ 2022 年趋势报告:Java 篇_语言 & 开发_InfoQ精选文章