热门标签 | 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,用聚焦来提高转型“成功率”


推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 微软小娜企业版发布新版本,提供构建自定义技能的套件
    微软将向企业级市场发布微软小娜企业版的新版本,该版本提供了构建自定义技能的套件,使企业员工可以更方便地使用数字助理。目前该套件仍处于内测期间,只有部分企业可以获得,其他有兴趣的企业需要继续等待。新版本的套件可以帮助员工构建各种自定义技能,如检查休假余额、创建服务凭证等。微软通过让多个开发人员编辑和管理机器人通道注册配置来改善开发者的体验,团队可以自行访问和更改技能注册,满足企业实际需求。微软小娜企业版已经在各个行业得到采用,能够帮助员工专注于优先事项,将非优先处理的任务交给微软小娜处理。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Arction客户案例——LightningChart被集成到BodeAnalyzerSuite中!相关的知识,希望对你有一定的参考价值。 ... [详细]
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社区 版权所有