热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

作者|MichaelRedlich,BenEvans等译者|明知山策划|丁晓昀本报告概述了InfoQJava编辑团队目前是如

作者 | Michael Redlich, Ben Evans等

译者 | 明知山

策划 | 丁晓昀

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

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

我们讨论了核心 Java 的发展趋势,比如新版本 Java 的采用,以及 Spring Framework、Jakarta EE、Quarkus、Micronaut、Helidon、MicroProfile 和 MicroStream 等框架的发展javaqueue

本报告有两个主要目标:

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

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

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

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

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

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

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

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

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

展开全文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OpenJDK

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

Santana:Java 8 已经过时了javaqueue。在最近的一项市场调查(如 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 8javaqueue

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

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

Java 17 及以上版本

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

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

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

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

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

Loom 项目与虚拟线程

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

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

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

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

Jakarta EE

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

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

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

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

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

Open Telemetry

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

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

容器

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

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

微软对 Java 的支持

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

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

来自 Java 社区的声音

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

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

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

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

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

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

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

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

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

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

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

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

Java 社区

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

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

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

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

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

结论

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

原文链接:

/

相关阅读:

InfoQ 2022 年趋势报告:.NET 篇()

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

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

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

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

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

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

点击底部阅读原文访问 InfoQ 官网javaqueue,获取更多精彩内容!

今日好文推荐

直面成本“刺客”、拒绝繁杂技术花样javaqueue,压力之下云厂商改变方向|解读云原生的 2022

马化腾内部开炮:有些业务都活不下去了javaqueue,周末还打球;阿里云香港服务器“史诗级”宕机;马斯克萌生退意 | Q资讯

奇点已来javaqueue,推进All on Serverless有哪些困难、如何破局?| 解读Serverless的2022

解读数字化的2022:不再追求大而全的“军备竞赛”javaqueue,用聚焦来提高转型“成功率”


推荐阅读
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 深入浅析JVM垃圾回收机制与收集器概述
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》的阅读心得进行整理,详细探讨了JVM的垃圾回收机制及其各类收集器的特点与应用场景。通过分析不同垃圾收集器的工作原理和性能表现,帮助读者深入了解JVM内存管理的核心技术,为优化Java应用程序提供实用指导。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • PostgreSQL 与 MySQL 的主要差异及应用场景分析
    本文详细探讨了 PostgreSQL 和 MySQL 在架构、性能、功能以及适用场景方面的关键差异。通过对比分析,帮助读者更好地理解两种数据库系统的特性和优势,为实际应用中的选择提供参考。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
author-avatar
888真人游戏官网1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有