最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:445175

评论 1 条评论

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

《网络是怎么样连接的》读书笔记 - 集线器、路由器和路由器(三)

懒时小窝

网络编程 网络

Java中的字符串之字符串常量池

未见花闻

6月月更

web内容如何保护:如何有效地保护 HTML5 格式的视频内容?

zhoulujun

DRM 视频版权保护 数字版权保护 h5视频版权

喜报|海泰方圆通过CMMI-3资质认证,研发能力获国际认可

电子信息发烧客

微博评论的计算架构

极客土豆

IET出席2022世界科技社团发展与治理论坛 为构建国际科技共同体献言献策

E科讯

TLog 助力盘古框架实现微服务链路日志追踪

码农大熊

盘古开发框架

TML转义字符:xss攻击与HTML字符的转义和反转义

zhoulujun

XSS xss攻击 转义字符 反转义

微服务之consul初体验

迷彩

微服务 中间件 Consul 微服务治理 6月月更

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

爱晒太阳的大白

网络协议之:redis protocol详解

程序那些事

网络协议 程序那些事 6月月更

居家办公让我绩效拿了C | 社区征文

大菠萝

初夏征文

Tiger DAO VC产品正式上线,Seektiger生态的有力补充

鳄鱼视界

Java内存模型

卢卡多多

volatile 6月日更

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v8.2版已发布

JackJiang

网络编程 即时通讯 im开发 开源im

Maven 基础

zarmnosaj

6月月更

中断操作:AbortController学习笔记

zhoulujun

揭秘GES超大规模图计算引擎HyG:图切分

华为云开发者联盟

人工智能 图计算 图切分

什么是算子?

华为云开发者联盟

人工智能 算子

新一代构建工具(1):对比rollup/parcel/esbuild—esbuild脱颖而出

zhoulujun

Rollup webpack esbuild

HotSpot JVM 「01」类加载、链接和初始化

Samson

学习笔记 hotspot 6月月更

SDN系统方法 | 10. SDN的未来

俞凡

架构 网络 sdn SDN系统方法

Flutter 网络请求封装之Dio(Cookie管理、添加拦截器、下载文件、异常处理、取消请求等)

yechaoa

flutter android 6月月更 dio

leetcode 300. Longest Increasing Subsequence 最长递增子序列 (中等)

okokabcd

动态规划 算法与数据结构 leetcoce

华为发布两大昇腾计划 推动AI人才发展和科研创新

郝俸🦁好棒

昇腾

Pipenv中安装Django

宇宙之一粟

django 6月月更

六大专题全方位优化,阿里巴巴性能优化小册终开源,带你直抵性能极致

Java全栈架构师

Java 程序员 面试 性能优化

面对AI人才培养的“产学研”鸿沟,昇腾AI如何做厚产业人才黑土地?

脑极体

先到先得!“阿里爸爸”全新出品SpringBoot高级笔记(全彩版)

Java全栈架构师

Java 源码 程序员 面试 springboot

数据治理,说起来容易,做起来难

奔向架构师

数据治理 数据资产 6月月更

社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴......)

CoderW

Java 面试 简历模板 大厂

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