QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

InfoQ 2019 年 Java 发展趋势报告

  • 2019-07-19
  • 本文字数:3860 字

    阅读完需:约 13 分钟

InfoQ 2019 年 Java 发展趋势报告

本文要点


  • 近期要发布的 Java 13(非 LTS 版本)进入创新者阶段。

  • Java 11(LTS 版本)进入早期采用者阶段,Java 8 进入晚期大众阶段。

  • 非 HotSpot 虚拟机采用率在增长,OpenJ9 和 Graal 进入早期采用者阶段。云原生计算的发展在驱动着企业转向遵循云原生原则(启动速度快、内存占用低)的 JRE。

  • 一般的开发者对 Graal 可能不太感兴趣,但因为它可以将 Java 编译成本地库,同时支持多语言,所以我们会进一步关注它。

  • Java 微服务框架大洗牌,Spring Boot 和 Spring Cloud 进入晚期大众阶段,它们已经成为企业信任的 Java 微服务开发框架。Helidon 和 Microprofile 进入早期采用者阶段,不过我们认为 vert.x 会因为相对利基的市场无法跨过早期采用者阶段。



在这份报告里,InfoQ 编辑团队对 Java 生态系统的技术采用趋势进行了分析,不仅涉及到了 Java,还有其他相关的编程语言,比如 Kotlin 和 Scala,以及 Java 虚拟机、基于 Java 的框架和库。我们将讨论 Core Java 的发展趋势,比如 Java 11 和 Java 13 的采用情况,以及 Web 开发框架的演化,比如 Spring Boot 和 Microprofile。


这份报告旨在为技术负责人提供帮助,帮他们做出中长期的技术决策,同时也让开发者知道该把宝贵的时间花在学习哪些技术上。这是我们第一次发布 Java 趋势报告,尽管 InfoQ 从 2006 年成立以来就一直在报道 Java 相关的主题,而且多年来也一直在内部跟踪 Java 和 JVM 的发展趋势。


InfoQ 和 QCon 关注处于“创新者、早期采用者和早期大众”阶段的技术。我们尝试找出符合 Geoffrey Moore 所谓的早期市场的技术。早期市场“客户群由技术爱好者和有远见的人组成,他们希望走在机遇前面,解决迫在眉睫的问题”。我们也在寻找可能会“跨越鸿沟”以便得到更广泛采用的技术。需要注意的是,技术在采用曲线上的确切位置可能会有所不同。例如,湾区公司目前广泛采用 Java 11,但在其他地方可能不是这种情况。


与 2018 年的内部 Java 趋势图相比,新趋势图在创新者阶段新增了 Java 13(非 LTS 版本)。这导致了一些列连锁反应,Java 11(LTS 版本)被移到了早期采用者阶段,而 Java 8 被移到了晚期大众阶段。


我们看到了非 HotSpot 虚拟机的采用率在增加,OpenJ9 和 Graal 进入了早期采用者阶段。我们认为,云原生计算的发展驱动着各个企业转向遵循云原生原则(启动速度快、内存占用低)的 JRE。一般的开发者对 Graal 可能不太感兴趣,但因为它可以将 Java 编译成本地库,同时支持多语言,所以我们会进一步关注它。


Java 微服务框架大洗牌,Spring Boot 和 Spring Cloud 进入晚期大众阶段。这表示它们的采用率增长正在减缓(因为市场趋于饱和),而不是说开发者会弃用这些框架。Helidon 和 Microprofile 进入早期采用者阶段,不过我们认为 vert.x 会因为相对利基的市场无法跨过早期采用者阶段。


以下内容整理自 InfoQ Java 板块编辑的内部沟通邮件,提供了更多有关我们如何制定 Java 趋势图的背景信息。


Daniel Bryant,独立技术顾问,Datawire 产品架构师,InfoQ 新闻板块主管:


又到了更新 Java 趋势图的时间。我迫不及待地想要看到我们在 2018 年所跟踪的技术是否出现在了趋势图正确的位置上,以及新增或移除了哪些技术。


首先是创新者阶段的变化:


  • 将 Java 11 改为 Java 12/13;

  • 将 OpenJ9 移到早期采用者阶段;

  • 加入 Java 模块化系统;

  • 加入 Quarkus。


早期采用者阶段的变化:


  • 将 Spock 移到晚期采用者阶段;

  • 将微服务框架移到晚期大众阶段,但 Lagom 和 Microprofile 除外?

  • 加入 Helidon。


Erik Costlow,软件架构师,专注于安全和 Java 领域:


  • 将 Java 8 移到落后者阶段。Java 8 是在 2014 年发布的,Oracle 已经不再为它提供公共免费支持。

  • Java 11(LTS 版本)仍然待在早期采用者阶段;

  • Java 13(非 LTS 版本)进入创新者阶段;

  • 开发者对 Graal 本身并不是很感兴趣,但他们需要这些东西:

  • 可以将 Java 编译成本地应用(本地镜像);

  • 多语言支持(例如 Ruby Truffle)。

  • Graal 本地镜像有一个问题——如果 Java 或其他 JVM 供应商也提供了静态编译那会怎样?本地镜像并没有通过 TCK。关键问题是其他 JVM 供应商可以这么做吗?如果他们这么做了会怎样?

  • 非 HotSpot 虚拟机除了 Graal 和 OpenJ9,还有 Excelsior、Azul、Liberica、Corretto、Alibaba Dragonwell、AdoptOpenJDK、RedHat,等等。

  • JVM 上的 Node 已死。

  • 将测试框架移到早期大众阶段。

  • 将 Spring Boot 移到晚期大众阶段。

  • 将“Java EE 到 Jakarta EE 的迁移“放在创新者阶段,我觉得这会很有意思。


现在有太多的 Java 发行版。我希望在创新者阶段能够有与这个问题相关的内容:如何大规模管理这些发行版或者如何在不同团队、系统之间管理好它们。如果一个应用程序可以被编译成本地应用,那么谁来负责给”JRE“打补丁?这又意味着什么?


Dustin Schultz,首席软件工程师,Pluralsight 作者,技术布道师:


我赞同关于创新者阶段的说法。


但我不认为 Spock 会跳出早期采用者阶段,毕竟我还没有看到它被大量采用。


除了 Vertx,我会将其他微服务框架移出早期采用者阶段……或许 Lagom 可以留下。我不确定它们在以后会不会跳出这个阶段。


或许可以将 Groovy 移到晚期大众阶段,因为它的表现太一般。


Charles Humble,InfoQ 首席编辑:


我同意你们的大部分说法。Java 模块化系统采用也是一个很有趣的话题。我敢肯定 OSGI 拥护者对于将它放在创新者阶段会有意见,但这样做可能是对的。


我想可以将 Clojure 移到晚期大众阶段。当然,人们还在用它,但我感觉到它的使用量在下降,而且它本身面向的就是利基市场。


我会将 Ceylon 移掉。它一直以来都没有获得太多关注,而且我不认为进入 Eclipse 会给它带来多大帮助。这个项目的活跃度很低,过去 6 个月只有 10 个代码提交。


测试框架的趋势看起来相当稳定。我们要把它移掉吗?从采用率来看,我给它们排个顺序:JUnit、TestNG/Cucumber、Spock,但似乎变化不大?


SmartBear 最近收购了 Cucumber,可能会促进它的发展,但即使是这样,我仍然倾向于把它们移掉。


人们似乎对 JVM 上的 Node 不感兴趣?我想可以把它移掉。


我很想把 Kotlin 移到早期大众阶段,它是我近来最经常听到的一门 JVM 编程语言,这要得益于 Android 开发的流行。可以说,它已经越过了鸿沟,但仍然落后于其他编程语言,比如 Groovy、Swift 或 Go 语言。


我觉得 Scala 可以留在晚期大众阶段,人们会逐步弃用它。


关于 Java,我也不确定该怎么说。我所知道的是,非 LTS 版本的采用量非常有限,它们或许可以被放在创新者阶段,但很奇怪的是,它们当中有些已经进入 EOL 阶段。不管怎样,我认为 Java 8 仍然处在晚期大众阶段,Java 11 在早期采用者阶段,Java 11 在创新者阶段?


Ben Evans,New Relic 首席工程师,JVM 技术架构师:


我非常赞同有关 Java 非 LTS 版本的说法。来自生产环境的数据表明,Java 11 部署量很稳定,并有了 5%左右的增长,我觉得它应该处在早期采用者阶段。


Ceylon 绝对可以移掉,它从来就没有得到过足够的关注,它的份额被 Kotlin 吃掉了。


Java 8 应该留在早期大众阶段,现在仍然有很多服务是用 Java 8 开发的,还有很多主流产品(例如 Cassandra)不支持 Java 8 以后的版本。我还没看到有哪个主流产品放弃对 Java 8 的支持(但我相信 ElasticSearch 会是第一个)。


作者介绍


Ben Evans 是 JVM 性能优化公司 jClarity 的联合创始人之一。他是 LJC(伦敦 JUG)组织者和 JCP 执行委员会成员,帮助定义 Java 生态系统标准。Ben 是 Java Champion,三次 JavaOne Rockstar 演讲者获得者,“The Well-Grounded Java Developer”、新版“Java In a Nutshell”和“Optimizing Java”作者,定期提供 Java 平台、性能、架构、并发、初创企业等话题相关的演讲。


Erik Costlow 是一位具有丰富 Java 经验的软件安全专家。他在 Contrast Security 从事开发者管理工作。Contrast 公司专注于传感器与应用程序的集成,让它们能够基于应用程序如何使用数据来检测安全威胁。Erik 还是 Oracle 的首席产品经理,主要负责 Java 8 的安全问题。他还协助 Turbonomic 产品管理团队在数据中心/云性能自动化方面实现了 1 亿美元的年收入。Erik 还负责 Fortify 静态代码分析器的产品管理,这是一个帮助开发人员发现和修复代码漏洞的工具。Erik 还在 Packt Publishing 的课程平台上推出了几门有关数据分析、统计和密码学的课程。


Dustin Schultz 是一名首席软件工程师、Pluralsight 作者和技术布道师。他拥有计算机科学学士和硕士学位,从事软件开发工作超过 15 年。Dustin 热爱一切与科技有关的事物。他也喜欢学习,总是对一切充满了好奇心。他妈妈在他小时候给他买了一本有关“事物原理”的书,因为她厌倦了他老是有问不完的问题。


Charles Humble 于 2014 年 3 月接任 InfoQ 总编一职,指导我们的内容创作,包括新闻、文章、书籍、视频演示和采访。在成为 InfoQ 全职员工之前,Charles 负责 Java 板块的报道工作,并担任 PRPi 咨询公司的首席技术官。这是一家薪酬研究公司,于 2012 年 7 月被普华永道收购。他当时在 PRPi 全面负责开发公司内部使用的软件。作为开发人员、架构师和开发经理,他在企业软件领域工作了大约 20 年。在他还是一名业余音乐爱好者。


Daniel Bryant 是 Datawire 的独立技术顾问和产品架构师。他的技术专长主要是“DevOps”工具、云/容器平台和微服务实现。Daniel 是 Java Champion,并为几个开源项目做出了贡献。他还为 InfoQ、O’Reilly 和 TheNewStack 撰写文章,并定期出席 OSCON、QCon 和 JavaOne 等国际会议。他在空闲时间喜欢跑步、阅读和旅行。


原文链接


Java InfoQ Trends Report - July 2019


2019-07-19 09:1911952
用户头像

发布了 731 篇内容, 共 459.9 次阅读, 收获喜欢 2004 次。

关注

评论

发布
暂无评论
发现更多内容

2020盘点之手机失窃事件复盘分析

石君

信息安全 资金安全 手机失窃

58同城风控平台演进

DataFunTalk

架构 中台

小说内容理解

DataFunTalk

AI 推荐系统

美团面试:为什么就能直接调用userMapper接口的方法?

田维常

美团

百分点智能对话技术探索实践

DataFunTalk

AI

低代码旋风将席卷整个IT业界,带来应用开发的新革命和新里程!

J2PaaS低代码平台

互联网大厂有哪些分库分表的思路和技巧?

冰河

分布式数据库 分库分表 分布式存储 数据一致性 数据同步

被砍伤的技术VP | 法庭上的CTO(24)

赵新龙

CTO 法庭上的CTO

Head First设计模式

田维常

工具词典:中立观点

lidaobing

维基百科 28天写作

网络模拟器:Cisco Packet Tracer 设备登陆实验

C语言编程:入门指南(一周内学懂)

计算机与AI

c

时空大数据与智能技术的时代共舞,百度地图给2020的答案

脑极体

天下武功,唯”拆“不破之架构篇二 | 技术人应知的创新思维模型 (9)

Alan

架构 技术 技术人应知的创新思维模型 七日更 28天写作

阿里P8大牛亲自讲解!6年菜鸟开发面试字节跳动安卓研发岗,成功收获美团,小米安卓offer

欢喜学安卓

android 程序员 面试 移动开发

Serverless 在 SaaS 领域的最佳实践

阿里巴巴中间件

阿里巴巴 中间件

生产环境全链路压测建设历程 23:FAQ 3、4 适配改造,目标压力

数列科技杨德华

全链路压测 七日更

开设赌场的CTO | 法庭上的CTO(23)

赵新龙

CTO 法庭上的CTO

五步带你探究爬虫爬取视频弹幕背后的真相,附爬虫实现源码

小Q

学习 编程 架构 面试 python 爬虫

云原生架构-静态代码扫描SonarQube超时

云原生实验室

DevOps 云原生 jenkins SonarQube Pipeli

十大经典排序算法最强总结(含Java、Python码实现)

Java 面试 算法

阿里P8大牛亲自讲解!Android高级工程师面试实战,Android岗

欢喜学安卓

android 程序员 面试 移动开发

全面 Severless 化只需要 7天!看南瓜电影的云上升级

阿里巴巴中间件

阿里巴巴 中间件

我对2021的期待,从合上这份2020日历开始

脑极体

史上最全面‘java监听器’解读,读完就能用进项目

Java架构师迁哥

“让专业的人做专业的事”,畅捷通与阿里云的云原生故事

阿里巴巴中间件

云计算 云原生

犯”集资诈骗罪“、二审判6年的CTO | 法庭上的CTO(21)

赵新龙

CTO 法庭上的CTO

甲方日常 77

句子

工作 随笔杂谈 日常

腾讯T2手把手教你!字节跳动历年校招Android面试真题解析,含BATJM大厂

欢喜学安卓

android 程序员 面试 移动开发

盘点2020 | 2021,Begin Again !

coolion

大前端 盘点2020

侵犯著作权、判刑两年半的 CTO |法庭上的CTO(22)

赵新龙

CTO 法庭上的CTO

InfoQ 2019 年 Java 发展趋势报告_语言 & 开发_Ben Evans_InfoQ精选文章