2019 Java发展趋势报告:Java老矣,Java正年轻

2019 Java发展趋势报告:Java老矣,Java正年轻

Java 已是一门具备 20 多年历史的老牌语言,雄霸编程语言排行榜榜首多年的 Java 目前也面临着愈来愈大来自新兴语言的挑战和使用者们的批评。InfoQ 英文站的编辑们按照技术采用生命周期的理论对 Java 在 2019 的发展趋势作了分析,Java 老矣,Java 却仍年轻。本文要点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 会由于相对利基的市场没法跨过早期采用者阶段。


fc02e346b19f5e4e0b46b6033594d92b.jpeg


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

这份报告旨在为技术负责人提供帮助,帮他们作出中长期的技术决策,同时也让开发者知道该把宝贵的时间花在学习哪些技术上。这是咱们第一次发布 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 新闻板块主管:jvm

又到了更新 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 等国际会议。他在空闲时间喜欢跑步、阅读和旅行。

原做者:Ben Evans、Erik Costlow、Dustin Schultz、Charles Humble
译者:无明
原文连接: Java InfoQ Trends Report - July 2019
原出处: InfoQ

ea25b5822a20ead1099963ca08fb49f6.jpeg

相关文章
相关标签/搜索