《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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:1912040
用户头像

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

关注

评论

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

实践分享丨物联网操作系统中的任务管理

华为云开发者联盟

华为 数据 物联网 进程

戴尔G系列游戏本助玩家激战英特尔大师挑战赛

E科讯

初学源码之——银行案例手写IOC和AOP

Java架构师迁哥

三年筑一“用”:长跑中的智能IP网络

脑极体

查看mac电脑的温度信息, 并且给mac电脑降温

lmymirror

macos Mac terminal

世界的下一个主宰——人工智能

CECBC

人工智能 智能时代

公有云厂商哪家强?本月UCloud、百度云、阿里云位居三甲——2020年8月云主机性能评测排名

博睿数据

for-range造就循环永动机?快来看看go中for-range的那些事!

Gopher指北

后端 for Go 语言

奈学开发者社区分享:Java - 设计模式的7个设计原则

奈学教育

Java 设计模式 设计原则

Electron 快速入门及最新安装教程

程序员学院

Java html 大前端 Electron node,js

深入理解MySQL中事务隔离级别的实现原理

X先生

MySQL 数据库 后端 事务

华为全联接2020:环信AI领跑,输出5大行业最佳实践

DT极客

大学四年我是怎么写操作系统和计算机网络的?掏心掏肺的分享!

小林coding

学习 程序员 计算机网络 操作系统 计算机基础

第 0 次面试

escray

程序员 面试 面经

融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

JackJiang

音视频 即时通讯 实时通信

PPT画成这样,述职答辩还能过吗?

小傅哥

Java 小傅哥 流程图 架构师 PPT

H5选图预览到上传最佳实践

阿里云金融线TAM SRE专家服务团队

android H5

一个草根的日常杂碎(9月27日)

刘新吾

随笔杂谈 生活记录 社会百态

中国Prime会员独享巅峰64小时超长跨境网购时间

爱极客侠

Binder那么弱怎么面大厂?

博文视点Broadview

Java android 通信 移动开发 Android进阶

区块链会替代大数据吗?

CECBC

区块链 大数据

架构1期第三周作业一

道长

极客大学架构师训练营

bug 回忆录(一)

志学Python

一个草根的日常杂碎(9月28日)

刘新吾

随笔杂谈 生活记录 社会百态

牛皮!应届生面试阿里Java岗,七轮过后定级P6,薪资44.8W

面试 计算机基础 编程开发 架构师技能

关于互联网留存和收益你知道多少—带你走近用户成长体系

滴滴普惠出行

一文领略 HTTP 的前世今生

yes

互联网 网络 HTTP 阿帕网

奈学开发者社区分享:Java - 设计模式的7个设计原则

古月木易

Java 设计模式

数字货币是大势所趋,新冠疫情后必须率先发展DCEP

CECBC

数字货币 银行

一文纵览向量检索

华为云开发者联盟

数据 搜索 检索 检查

关于深浅拷贝

西贝

Java 大前端 基础

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