38

InfoQ 2019 年 Java 发展趋势报告-InfoQ

 4 years ago
source link: https://www.infoq.cn/article/xHcGEQe2*jXl8kDTuNK2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

InfoQ 2019 年 Java 发展趋势报告

发布于:2019 年 7 月 19 日 09:19

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 2019 年 Java 发展趋势报告

在这份报告里,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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK