InfoQ最新Java趋势报告及2022年解读

2023-05-26 0 829

InfoQ最新Java趋势报告及2022年解读

译者 | Michael Redlich, Ben Evans等

翻译者 | 若非山

策画 | 丁晓昀

本调查报告简述了 InfoQ Java 撰稿项目组现阶段是怎样审视 Java 应用领域内的控制技术选用和新经济态势的。

她们

她们探讨了核心理念 Java 的行业产业发展态势,比如说新版本 Java 的选用,以及 Spring Framework、Jakarta EE、Quarkus、Micronaut、Helidon、MicroProfile 和 MicroStream 等架构的产业发展。

本调查报告有三个主要就最终目标:

协助控制技术相关人士制订短期控制技术重大决策。

协助对个人开发人员将可贵的天数和天然资源资金投入到能自学和产业发展专业技能的地方性。

这是她们正式发布的第三份 Java 态势调查报告。自 2006 年年来,她们始终在外部追踪 Java 和 JVM 的行业产业发展态势,那个热门话题早已有大批的新闻报导。

为的是更快地介绍 InfoQ 和 QCon 报导的有关现阶段和今后的行业产业发展态势,她们采用了 Geoffrey Moore 在撞名 论著 中明确提出的“横跨隔阂”技术观念数学模型。

她们企图找寻 Moore 所言的晚期消费市场,晚期消费市场的“消费群是由控制技术发烧友和有创造力的人共同组成的,她们期望在良机或刻不容缓的难题再次出现以后紧紧抓住它。”

与她们对 2021 年、2020 年 和 2019 年Java 态势调查报告所做那样,上面是 2022 年行业产业发展态势图。

InfoQ最新Java趋势报告及2022年解读

作为回顾,上面是 2021 年行业产业发展态势图:

InfoQ最新Java趋势报告及2022年解读

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

她们决定将所有 OpenJDK 的下游发行版放到一个标签中,即 Java Community JDK,并将它放到晚期大众阶段。那个清单包括:Amazon Corretto、Azul Zulu、OpenJDK 的微软构建版本、BellSoft Liberica JDK、Eclipse Temurin、IBM 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 18 和 Java 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 项目的关键特虚拟线程,现在早已准备好用于生产环境中,但毫无疑问,许多开发人员都在热切地等待它从预览状态移出,成为 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

Evans:OpenTelemetry 早已正式发布了 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 EE和 MicroProfile工作组,因为微软继续在 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人们早已意识到它不仅仅是原生编译的 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 NoSQL 和 Jakarta 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 篇(https://www.infoq.cn/article/UjJrO7kBo8QSuFes5tcz)

InfoQ 2022 年态势调查报告:人工智能、机器自学和数据工程篇(https://www.infoq.cn/article/bNkyoLzwxU7Li2v94Noe)

InfoQ 2022 年态势调查报告:DevOps 与云计算篇(https://www.infoq.cn/article/qrvLruwaMWIeoz2zbrdI)

InfoQ 2022 年态势报告:架构与设计篇(https://www.infoq.cn/article/0dJ52ivjyHhxc2YYfgxW)

InfoQ 2022 年态势调查报告:移动及物联网篇(https://www.infoq.cn/article/fEJyy2uOUM2h3NEUFXG9)

InfoQ 2022 年态势调查报告:文化与方法篇(https://www.infoq.cn/article/s2HC2rgLtM3AuppIfJHR)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务