2020 年 JVM 生态报告解读

前言

做过 Java 开发的同学都知道,JVM(Java 虚拟机)Java 实现的基础,虽然在平时工作中真正运用到的时候可能并不多,但是一个程序员想要上升到高级层次,那就必须知道 Java 到底是怎么运行的,这就有必要去学习了解 JVM 的相关知识了。学习 JVM 可以能更深入的理解 Java 这门语言,可以清楚知道Java程序是如何执行的以及为未来排查线上问题打下坚实的基础。接下来我们看看 2020 年的 JVM 生态报告和最新趋势,值得我们每个 Java 开发者去关注了解。

JDK 厂商占比

Oracle JDKOpen JDK 加起来占比将近 60%,其中 Oracle JDK 占比略多一些,Oracle JDKOpen JDK 都是市场上的热门选择,我们看看二者之间的一些差异。Oracle JDK 更多的关注稳定性,更适合企业级用户,而 Open JDK 相对而言没有那么稳定,它会经常发布一些新特性。Oracle JDK 支持长期发布的更改,而 Open JDK 仅支持计划和完成下一个发行版,还有一个就是 Oracle JDK 是根据 二进制代码许可协议 获得许可,而 Open JDK 是根据 GPL v2 许可获得许可。使用 Oracle 平台时会产生一些许可影响。如 Oracle 宣布的那样,在没有商业许可的情况下,在 2019 年 1 月之后发布的 Oracle Java SE 8 的公开更新将无法用于商业,商业或生产用途。但是,Open JDK 是完全开源的,可以自由使用。

which-java-vendor-use.png

愿意付费用户占比很少

只有 9% 的用户表示愿意为 JDK 支付费用,还有 86% 的用户表示并不想为 JDK 支付费用,可以看出大部分用户其实对 JDK 的付费使用还是不赞同的,目前来看,如果要真正实行付费模式还是有点难。不过人们选择为 JDK 支付费用时,Oracle 还是当之无愧的大赢家的。自从 JDK9 发布之后,以后每年的 3 月和 9 月都会发布一个新的版本,这个发布节奏的改变,这个对许多用户的版本更新策略还是有一定的影响。调查结果显示这个发布节奏的变更影响了三分之一的开发者们是否决定为其支付费用。

paying-for-jdk-support.png

Java 8 仍然是主流版本

Java 9 之后对 JDK 的结构做了很大的调整,这也是影响人们升级的原因之一,根据报告结果来看 Java 8 仍然是大家使用最多的版本,但是在 2018 年 9 月发布了第一个 LTS(长期支持) 版的 Java 11 之后,有四分之一的开发者在生产环境中使用了 Java 11。因为发布节奏的原因,大部分开发者还是不愿意每 6 个月就对版本进行一次更新,版本迁移成本其实也不低,还有新版本在生产环境的稳定性也是其中的一个考虑因素。

java-version-use-production.png

Kotlin 在 JVM 类语言中占比第二

JVM 类语言语言中 Java 占比 86.9% 稳居第一,除了 Java 语言之外,Kotlin 语言在 JVM 类语言占比第二占比 5.5%Kotlin 从去年的 2.4% 增加到今年的 5.5%JVM 类语言的用户中 Kotlin 使用率的增长,因为它可以与 Java 无缝集成也不足为奇,像在 Spring Boot 框架中使用 Kotlin 进行开发也很容易。Kotlin 也一直在创新,积极拥抱 Java 的大腿,在 Java 的新版本中也在试图整合一些 Kotlin 的概念。

jvm-language-use.png

Spring 依然是 Java 框架中的王者

有十分之六的开发者依赖 Spring 框架来构建他们的程序,这对于众多的第三方开源框架来说,这是一个很高的占比,Spring Framework 依然是 Java 开发框架中的王者,Spring 框架已经发布了很长一段时间了,通过长时间的改进和创新,无疑 Spring 现在已经成为 Java 生态系统中的最重要的框架。在众多的使用者中有将近三分之二的用户使用 Spring 5,可见大家对 Spring 框架的新版使用率还是很高的。

spring-version-use.png

Spring Boot 是主流的服务器端 Web 框架

服务器端依然是 Spring 的天下,其中有一半的人使用的是 Spring Boot 框架,还有将近的三分之一的人使用的是 Spring MVC 框架,前几年比较火的 Struts 框架已经开始没落了,这个占比和现在市场上比较流行微服务架构是分不开,因为 Spring Boot 框架天生就是为微服务而生的,它可以快速实现微服务。使用基于 Spring BootSpring Cloud 框架可以快速搭建一个分布式的服务或应用。

server-side-web-framework.png

IntelliJ IDEA 是主流的开发工具

IntelliJ IDEAJava 开发者们使用最广泛的开发工具,调查结果显示有 62% 的开发人员使用社区免费版和付费终极版。Apache NetBeans10% 的市场份额保持在第三位,和去年的调查结果一致。可以发现被业界广泛称赞的 VS Code 神级编辑器在 Java 开发人员中并没有想象的那么受欢迎。

which-ide-use.png

Maven 是主流的项目构建管理工具

Maven 是一个软件项目管理和自动构建的工具,由 Apache 基金会 维护。它基于项目对象模型(POM)概念,Maven 利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。调查结果显示它在排名仍是第一,一直都是主流的项目构建工具,排名第二的 Gradle 一直保持着增长的趋势,在 2019 年占比达到四分之一,而在 2012 年占比高达 40% 的老牌的构建工具 Ant 将逐渐退出舞台,到 2019 年占比不到 10%。可以明确的是,构建工具之间的竞争从不会停止,能否及时更新发布一些可以解决使用者痛点的工具是大家选择的因素之一。

which-build-tool-use.png

Jenkins 仍然是持续集成工具中的王者

和我们大多数 Java 开发人员的期望一致,Jenkins 以高达 58% 的占比排名稳居第一,排名第二的 GitLab 占比仅为 6%,有趣的是没有使用工具的也高达 12%,虽然不适用工具的人数占比比去年低了很多,但是这个占比还是让人有点儿惊讶。

which-CI-server-use.png


生态报告来源:https://snyk.io/blog/jvm-ecosystem-report-2020

PS:关注公众号「mghio」,回复关键字 JVM 获取 2020 年 JVM 生态报告 PDF 版原文。

-------------本文结束感谢您的阅读-------------
mghio wechat
微信公众号「mghio」
赏作者☕️