速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

InfoQ Java 趋势发展报告(2020 年 9 月)

  • 2020-10-10
  • 本文字数:4676 字

    阅读完需:约 15 分钟

InfoQ Java趋势发展报告(2020年9月)

本文要点

  • 云部署和容器化是 IT 行业的大趋势,Java 也不例外。

  • GraalVM 和静态编译是加速云计算发展的关键构建模块。Leyden 计划可能是这一趋势的一个新方向,但还处在早期阶段。

  • Quarkus 吸引了很多关注,并很快进入早期采用者阶段。在某种程度上,它描绘了行业的其他趋势,并将它们打包成一个更容易使用的版本,满足应用程序的各种场景。

  • Java 11 的生产部署已经达到了约 20%,Java 8 占据了市场的其余份额,但没有大规模部署非 LTS 版本。



这篇文章总结了 InfoQ 编辑团队如何看待 Java 技术的采用情况和新兴趋势。我们主要关注 Java 及其相关语言,如 Kotlin 和 Scala、Java 虚拟机(JVM)以及基于 Java 的框架和实用程序。我们将讨论 Java 的发展趋势,比如 Java 新版本的采用,以及相关框架(如 Quarkus 和 MicroProfile 等)的发展。


本报告有两个主要目的:


  • 协助技术主管作出中长期技术决策。

  • 帮助个人开发者将宝贵的时间和资源投入到有价值的学习和技能发展中去。


这是我们发布的第二份 Java 趋势报告。从 2006 年 InfoQ 发布趋势报告以来,这个话题已经得到了大量的报道,我们已经在内部跟踪 Java 和 JVM 发展趋势很多年了。你可以在这里找到 2019 年的报告。


为了帮助 InfoQ(和 QCon)把握当前和未来的趋势,我们使用了 Geoffrey Moore 在他的《跨越鸿沟》一书中所倡导的技术采用模型。


我们试着找出符合摩尔所谓的早期市场的想法。早期市场“用户由技术爱好者和有远见的人组成,他们想要抓住机会或者解决迫在眉睫的问题”。


我们能够观察到的是已经跨越到主流采用的市场。当然,这有点难以定义,而且局部市场的差异确实存在。在某个行业或某个局部市场,一项技术可能被放在采用曲线上的一个点上,而在另一个地方则被放置在一个完全不同的点上。


例如,那些积极推动无服务器和 FaaS 技术的公司很可能在探索和采用一些技术方面走得更远,比如 Java 静态编译和其他承诺可以缩短启动时间和减少占用空间的技术。


从去年到现在,最值得关注的一些变化包括 Oracle Java 二进制文件的使用量急剧下降。这也许是意料之中的——去年 Oracle 在支持和发布模型方面所做出的变化还没有被反映到趋势报告中,不过我们有整整一年的时间来评估它的影响。


可以看到,市场并没有选择甲骨文每 6 个月的升级发布周期,而是固定在了 LTS 版本——也就是 Java 8 和 Java 11。由于 Oracle 在发布后的 6 个月内不提供免费的 Java 二进制文件,市场越来越多地转向非 Oracle 二进制文件提供商——AdoptOpenJDK 是主要受益者,其次是 Azul 和 Amazon。


另一个引人注目的行业大趋势是:几乎所有的东西都以更快的速度进入云计算领域。这方面的势头一直很猛,而现在更加明显了。新冠疫情对这个行业的影响无疑是其中的一个因素。


这不仅可以从 AWS 和其他云供应商采用量的增加看出来,也可以从容器化工作负载的崛起和希望使用资源占用更少的服务的愿望中看出来。Quarkus、Microaut 和 Spring Boot 等框架的流行程度也体现出了这一点。它们都是基于云计算的,对 Kubernetes 很友好,而且都越来越流行,尽管还没有出现一个明确的市场领导者。


下面是我们内部使用的 2019 年趋势图,2020 年的在文章顶部。



参与本次讨论的人员包括:


  • Ben Evans——InfoQ Java 首席编辑

  • Uday Tatiraju

  • Erik Costlow

  • Mike Redlich


下面是几位 InfoQ Java 编辑和 Java Champion 之间的一个讨论总结,它为我们在趋势图上对某些技术的推荐定位提供了更多的背景参考。

GraalVM

Justin Lee(Red Hat 首席工程师):


我认为直接使用 GraalVM 对于大多数企业来说门槛相当高,而通过 Quarkus 或 Micronaut 来使用 GraalVM 可能是一条比较好的路径,因为它们处理掉了很多细节问题。


Johan Vos(Gluon 联合创始人):


我们利用 GraalVM 原生镜像创建原生移动和嵌入式 App。

Java 开发人员编写 100%的 Java 和 JavaFX 代码,所有代码、依赖项、本地库、资源都被编译、链接、打包成一个 IPA 或 APK,可以上传到应用商店(或用于私有网络)。

在移动设备上,GraalVM 原生镜像有一个巨大的优势,因为它允许在 iOS 上使用 Java。此外,对于移动设备来说,启动时间非常重要,我看到它们的启动时间是非常惊人的。


Roy van Rijn (OpenValue 总监):


我们已经在生产环境中试验过 GraalVM(作为原生 Docker 镜像)。对于一个简单的 CRUD Micronaut 服务来说,它运行得非常好。对于较大的服务(使用 Spring Boot 和 MQ/消息传递),大约在一年前我们就遇到了问题。不过,这方面的创新进展很快。

随着 Spring GraalVM Native 新版本的发布,我们向 backlog 中添加试验性的东西,进行概念验证。我们目前的设想是将所有服务都转换为 GraalVM 原生镜像。速度(尤其是云端启动时间)和内存使用将是我们的一大优势。

Quarkus

Emmanuel Bernard(Red Hat 杰出工程师):


我们看到的主要应用是 Quarkus 微服务(不是闹着玩的那种)和一些作为服务的函数。

我看到的主要是新开发的服务、从其他微服务进行移植或者一些企业决定重新选择他们的应用程序开发技术栈(包括在必要时放弃 Java)。

我们也看到人们从遗留应用程序中拿出一些东西,并加入了一些新东西,而 Quarkus 显著掩盖了 GraalVM 原生镜像的短板。


Erik Costlow (InfoQ Java 编辑):


Quarkus 选取了 Jakarta EE 最好的部分、GraalVM 最好 Jakarta 部分以及云最好的部分,并将它们组合在一起。这个框架可以快速重载,自动创建无服务器容器,并通过插件生态系统连接到其他系统。最重要的是,它的文档对每个插件进行了清晰的描述,让新项目和现有项目的使用更加容易。

我最喜欢的一点是,Quarkus 提供了一个坚实的基础,让开发人员能够专注于自己的代码或应用程序,而不是把时间花在其他工作上,比如如何与资源交互。开发人员有权利但没有义务深入研究这些东西。

Java 11

Uday Tatiraju(Oracle 技术主管):


在过去的 8 个月里,我和我的团队利用 JDK 11 和 JPMS 重新设计和开发了整个搜索平台。当然,在使用 JPMS 时,我们需要解决在第三方库中存在的一些问题,比如拆分打包、反射、不安全代码。

JDK 11 有很多优点,它帮我们减少了对第三方库的依赖。例如,JDK 中的 HTTP 客户端库提供了丰富的特性,消除了我们对 Apache HTTP 客户端库的依赖。

我们也看到 JDK 11 的采用在增加,至少在 Oracle 的其他团队中是这样的。而且,很多流行的第三方框架和库,如 Tomcat、ZooKeeper、SLF4J 等,现在都支持 JDK 11 和 JPMS。


Ben Evans(New Relic 首席工程师、InfoQ Java 板块负责人):


我们针对客户生产系统发送出来的数据进行了研究,结果表明(截至目前),大约 20%的客户在生产环境中使用 Java 11,而 Java 8 占据了市场的绝大多数。Java 7 和之前版本大约是 1%到 2%,比所有非 LTS 版本加起来还要多。

转向 OpenJDK 的趋势正在形成,这也是我们今年看到的一个更大的趋势。AdoptOpenJDK——现在更名为 Eclipse Adoptium——是 Java 11 和 OpenJDK 的标准发行版,它们从 Oracle 那里夺走了大量的市场份额。

OpenJDK 11 是一个很棒的发行版,我们一直在内部将其用于后端服务。


Brian Vermeer(Snyk 开发者布道师、VirtualJUG 联合负责人):


在我们去年 2 月发布的《2020年JVM生态系统报告》(基于对开发者的网络调查)中,我们可以清楚地看到,在生产环境中,大约有 25%的人正在使用 Java 11。然而,值得注意的是,大多数人仍然在使用 Java 8。大多数人(55%)的计划是坚持使用 LTS 版本——但是 22%的受访者表示他们也在考虑是否采用短期升级版本。开发人员不愿升级到新版本的原因很简单,因为当前的版本对他们来说已经足够好了。

根据我们的研究,虽然 Oracle JDK 仍然占主导地位,但出现了一个转向其他 OpenJDK 供应商的趋势。四分之一的开发人员选择了 AdoptOpenJDK 发行版。

尽管到目前为止 Java 仍然是主要的 JVM 编程语言,但 Kotlin 的采用也在急剧增加。现在,Koltin 已经是排名第二的 JVM 编程语言,超越了 Scala 和 Clojure。这可能是因为 Koltin 与 Java 的无缝集成导致的。


Trisha Gee (JetBrains Java 团队负责人):


我确实看到了采用 Java 11 的人数在增加(我们的调查显示,Java 11 的使用率比去年增加了 10%,这个比例有点奇怪,那是因为开发人员使用的 JVM 不止一个,所以加起来不是 100%)。所有的调查和传闻证据都表明,相当一部分开发者在使用 Java 11。

除此之外,我要说的是,一些 Java 开发者仍然坚定地信奉 Java 8。他们当中有很多人止步不前,因为他们没有使用现代框架,比如 Spring Boot 等等(Spring Boot 是目前最受欢迎的框架),被困在一些旧应用程序服务器上,它们需要“上帝的许可”才能进行升级(你知道这有多难)。其他还没有形成趋势的:人们没有使用模块系统或者没有迁移到模块系统,不过这对于企业来说是可以接受的。另一方面,模块化和 Java 9 似乎并不妨碍迁移到 Java 11。

Microprofile

Mike Redlich (InfoQ Java 编辑):


MicroProfile 提交者一直在为 MicroProfile Specification Process 组建 MicroProfile 工作组,所以 MicroProfile 4.0 的发布被推迟了,该版本原本计划 9 月份发布。


以上观点只讲述了故事的一部分——Java 生态系统不同部分的体验可能也是非常不一样的。我们的文章所表达的观点起到的是抛砖引玉的作用,而不是一种明确的声明,它们可以被视为一种邀请,让大家一起来公开讨论这个行业的发展方向。


作者介绍:


Ben Evans 是 JVM 性能优化公司 jClarity 的联合创始人。他是 LJC(伦敦 JUG)的组织者,也是 JCP 执行委员会成员。Ben 是 Java Champion、3 次荣获 JavaOne Rockstar 演讲者。他是《Java 程序员修炼之道》(The Well-Grounded Java Developer)、新版《Java in a Nutshell》和《优化 Java》的作者。他经常发表与 Java 平台、性能、架构、并发、初创等主题相关的演讲。


Ben Evans 将在 11 月 4 至 11 月 18 日的QCon Plus虚拟会议上主持“Java:在一个成熟的软件生态系统中提供持续创新”。我们将探讨在一个成熟的软件生态系统中持续交付重大创新意味着什么,以及 Java 如何在云计算、容器和一个比以往更加多样化的软件世界里蓬勃发展。点击这里了解更多相关信息。


Uday Tatiraju 是 Oracle 公司的技术主管和首席工程师,在电子商务平台、搜索引擎、后端系统、网络和移动编程方面有超过十年的经验。


Michael Redlich 是新泽西州克林顿市埃克森美孚研究与工程公司的高级研究技术员,在过去的 30 年里,他开发过自定义科学实验室和 Web 应用程序。他还在 Ai-Logix 公司(现为AudioCodes)担任技术支持工程师,为客户提供技术支持和开发电话应用程序。他的技术专长包括面向对象设计和分析、关系数据库设计和开发、计算机安全、C/C++、Java、Python 和其他编程/脚本语言。近来,他对 MicroProfile、Jakarta EE、Helidon、Micronaut 和 MongoDB 很感兴趣。


Erik Costlow 是一位拥有丰富 Java 经验的软件安全专家。他负责管理 Contrast Security 和公共社区版的开发者关系。Contrast 将传感器编织到应用程序中,让它们能够根据应用程序使用数据的情况来检测安全威胁。Erik 曾经是 Oracle 负责 Java 8 安全的产品经理,他在黑客攻击最严重的时候加入了公司,两年后离开了公司,在这期间没有出现 0day 漏洞。在那段时间里,他了解了 Java 在企业/商业和社区层面的细节。他还协助 Turbonomic 的产品管理团队在数据中心/云性能自动化方面实现了 1 亿美元的年收入。Erik 还负责 Fortify 静态代码分析器的产品管理工作,该工具帮助开发人员发现和修复自定义源代码中的漏洞。Erik 还通过 Packt 发布了一些有关数据分析、统计和加密的开发者课程。


原文链接


Java InfoQ Trends Report—September 2020


2020-10-10 15:445397

评论 1 条评论

发布
用户头像
1
2020-10-23 16:27
回复
没有更多了
发现更多内容

Spring 都在用的技术,你确定不过来看看?3️⃣

XiaoLin_Java

模块五 - 微博评论系统高性能高可用设计

圈圈gor

架构实战营 #架构实战营 「架构实战营」

SAE 最佳实践范本:助力视野数科进入云原生“快车道”

Serverless Devs

Serverless SAE

WTM活动回顾|WomenTechmakers 2021 Courage to Create

江湖老铁

TiDB 在国信证券海量数据高并发场景中的实践

PingCAP

尚硅谷2022版Java课程体系,霸气来袭

@零度

Java 尚硅谷

QuanXiang 2022 Q1 开源路线图

全象云低代码

开源 工作流 低代码 表单

『TDengine2021用户故事』征文活动进入投票阶段!

TDengine

tdengine

【云图说】DDS读写两步走,带您领略只读节点的风采

华为云开发者联盟

数据库 节点 DDS 文档数据库 DDS读写

微博评论高性能高可用计算架构

Evan

过年回家前,先签收这份“外挂”

龙智—DevSecOps解决方案

Atlassian Confluence 到期日提醒 confluence插件

迪斯尼《曼达洛人》艺术总监和制作设计师亲自揭秘背后的虚拟场景制作

龙智—DevSecOps解决方案

perforce 曼达洛人 西部世界 虚拟场景

焱融科技年度报告如约而至,如 Beijing 初雪

焱融科技

云计算 分布式 云原生 高性能 文件存储

低代码实现探索(二十五)DDD,事件,指令

零道云-混合式低代码平台

认识 Express 的 res.send() 和 res.end()

编程三昧

JavaScript 前端 nodejs Express 1月月更

架构实战营模块五作业

lchx08

「架构实战营」

Jira Software 年度总结:12个重要功能大放送!

龙智—DevSecOps解决方案

Jira Atlassian Atlassian Jira

java开发之Mybatis 快问快答

@零度

mybatis JAVA开发

使用 Lambda 表达式实现超强的排序功能

看山

Lambda java8 排序 1月月更

ReactNative进阶(二十七):createMaterialTopTabNavigator 顶部导航组件

No Silver Bullet

1月月更 ReactNative

一个低成本确保IM消息时序的方法探讨

WorkPlus

PHP 遇见 Serverless,帮你解决这些痛点!

Serverless Devs

虎符推出AMM流动性资金池 支持现货专区做市赚收益

区块链前沿News

流动性 虎符 Hoo 虎符交易所 AMM

可能是推荐系统最详细且简单的入门教程

JavaEdge

1月月更

模块五作业-微博评论高性能高可用计算架构

CH

架构实战营

如何快速实现离散企业全链路数字化管理

华为云开发者联盟

数据采集 华为云IoT 智能制造 黑湖科技 数据中枢

MultipartFile与File的一些事

华为云开发者联盟

spring File 文件 MultipartFile 中转文件

一文读懂HarmonyOS服务卡片怎么换肤

HarmonyOS开发者

HarmonyOS

jar包与war包的部署

你?

一起看看MySQL中的隐藏列

华为云开发者联盟

MySQL 事务 主键 唯一索引 隐藏列

「元宇宙十万个为什么」:为什么元宇宙值得投资?

WorkPlus

InfoQ Java趋势发展报告(2020年9月)_语言 & 开发_Ben Evans_InfoQ精选文章