JRebel 的调查收到了全球开发者近 400 条回复。这份调查报告涵盖了开发者工具链的所有部分,包括编程语言、应用架构、应用服务器、运行时平台、框架技术、框架配置、IDE、JRE/JDK 发行版、PaaS 提供商、数据库、部署模式、构建工具和虚拟化工具。
58% 的受访者表示,他们在主要应用程序中选择 Java 8 作为编程语言。而 Java 11 以 23% 的受访者位居第二。7% 的受访者表示使用 Java 7 或更早版本,另有 6% 的受访者表示使用 Java 12 或更高版本。Kotlin 和 JavaScript 的使用率最低,分别为 3% 和 2%。
对我们来说,看到 Java 8 成为占主导地位的编程语言,并不是一件令人惊讶的事情。然而,令人惊讶的是,只有 23% 的受访者使用 Java 11。我们认为,这与 Java 自从 Java 8 以来缺乏真正有效的更新以及更新 JVM 的成本有关。对于仍在使用 Java 7 或更早版本的受访者,我们预计,随着越来越多的应用程序继续迁移到 Java 14 或当前可用的版本,这一数字将会减少。
各种应用服务器是否正在消失?我们的调查结果表明,开发者使用 Tomcat 的速度几乎是最接近的竞争对手的五倍。61% 的受访者表示,在他们的主要应用程序上使用 Tomcat,很明显,Tomcat 是占主导地位的应用服务器。排名第二的应用服务器是 Jetty,占 13%;而 WebLogic 和 WebSphere 的使用率分别为 7% 和 6%。排在最后的是,JBoss/Wildfly 的使用率为 5%。
很明显,Tomcat 为了赢取如此大的市场份额,正在采取正确的措施。对我来说,至少部分原因是 Tomcat 的多功能性以及与其他主要 Java 平台的兼容性,如 Spring Boot、Docker、Hybris 和 AWS。—Curtis Johnson,JRebel 产品经理
另一个主要方面是它的成本:它是免费的。管理层因此很难拒绝它。以前,缺乏对应用服务器的支持是人们习惯使用 Websphere、Weblogic 和 JBoss 等应用服务器的核心原因之一。现在看来,Java 架构公司已经决定,支持应用服务器的最佳方式是在其架构中,而不是只在应用服务器中。
运行时平台最受欢迎的选择是 Spring Boot,占 83%。当然,多年来,Spring Boot 一直是首选的 Java 框架。这至少部分归因于近年来 Java 应用程序越来越多地采用微服务。在所有受访者中,Spring 以 2% 成为第二受欢迎的选择,而不使用运行时平台的受访者也占了 2%,打成了平手。使用 Dropwizard、Micronaut、Vert.x 或自定义平台的受访者各占 1%。
这个问题要求受访者选择在他们的主要项目中使用的应用程序框架和技术。由于大多数应用程序使用各种不同的框架技术,因此这个问题允许多个回答。
86% 的受访者表示使用 Spring。51% 的受访者表示使用了 Hibernate、OpenJPA 或 EclipseLink 等持久性技术。27% 的受访者表示使用了服务器端渲染技术,如 JSP、JSF、Thymeleaf、FreeMarker 或 GWT。26% 的受访者表示使用 JAX-RS 或 JAX-WS 技术,如 Jersey、RESTEasy、CXF 或 Axis。对于响应式框架,11% 的受访者表示使用了 Vert.x、AKka、RxJava 或 Project Reactor 等技术。最后,7% 的受访者表示在他们的主要项目中使用了 JavaBeans。
2020 年 Java 技术报告:半数开发者仍在使用 Java 8
对于框架配置,我们发现大多数受访者在类、方法和字段上使用 @Annotation,或者使用外部 xml、yaml 或类似文件。68% 的用户表示使用 @Annotation,67% 的用户表示使用外部 xmlL、yaml 或类似文件。18% 的受访者使用在初始化期间运行的方法中添加的代码进行配置。
在这个问题中,我们要求开发者列出他们专业使用的集成开发环境(Integrated Development Environment,IDE)。就在几年前,开发者还会质疑在 IDE 上花钱是否值得。
但是,有 82% 的受访者表示他们使用 IntelliJ IDEA ,很明显,这个付费的 IDE 非常值得一试。第二个最常用的 IDE 是 Eclipse,占 24%,而 VSCode 占 10%。最后,有 4% 的受访者表示,以专业身份使用 NetBeans。这些年来,NetBeans 真的失去了所有的兴趣,甚至连 VSCode 在这次调查中都超过了它。
在这个调查问题中,我们要求受访者选择他们使用的 JRE/JDK 发行版。而且,在这项调查中一个更令人惊讶的结果是,我们发现,将近 50% 的受访者正在使用付费的 Oracle JDK。这比使用 Oracle OpenJDK 的受访者要高出 13%,后者的比例为 36%。
我们认为这可能出于两个原因:1. 在我们的调查中有大量的 Java 8 开发者。我们认为,使用 Java 8 的开发者数量表明,该项目在很长一段时间内没有更新了,这可能是使得应用程序保持在 Oracle 发行版的原因。2. Oracle JDK 提供的支持可能比我们想象的更重要。
看到在我们的调查受访者中,有如此多的人在为 Oracle JDK 付费,这真是令人惊讶。我完全期待开源选项拥有更大的市场份额。—Curtis Johnson,JRebel 产品经理
除了 Oracle OpenJDK 和 Oracle JDK 外,10% 的受访者表示使用了 AdoptOpenJDK,另有 2% 的受访者表示使用 Azul Zulu。
在这个问题中,我们要求受访者报告他们所选择的 PaaS 提供商。在使用 PaaS 提供商的 60% 受访者中,43% 选择 AWS,14% 选择 Microsoft Azure,12% 选择 Google Cloud Platform。选择较少的供应商包括 Pivotal Cloud Foundry,占 4%,SAP Cloud Platform 和 IBM Cloud 各占 2%。
在这个问题中,我们要求受访者选择他们当前使用的数据库。最受欢迎的是 PostgreSQL,占 47%,紧随其后的是 Oracle DB,占 42%。接下来是 MySQL,有 28% 的受访者报告了使用情况。MongoDB 位居第四,在受访者中占 12%。使用最少的数据库包括 SQL、NoSQL 和 Cassandra,使用率分别为 7%、6% 和 4%。
在这个问题中,我们要求受访者报告他们使用的是哪种部署模式。最受欢迎的部署模式(占 46%)是将应用程序作为 JAR 运行。44% 的受访者报告称他们部署到应用服务器上,而 5% 的受访者报告他们使用了 Hybris 或 Liferay 等平台来部署他们的应用。
对于构建工具,我们要求开发者选择他们在主应用程序中使用的工具。不出所料,Maven 和 Gradle 是最常用的工具。但是,也许反映了在移动开发领域工作的受访者的数量,Gradle 在这两者中更受欢迎。我们认为这并不能反映出 Maven 和 Gradle 被采用的现实,但无论如何,这都是一个有趣的现象。我们的调查发现,47% 的受访者使用 Gradle 作为他们主要应用程序的构建工具,而 44% 的受访者表示使用 Maven。Ant 的使用率都低于这两个数字,均为 7%。
在这个问题中,我们询问了开发者他们使用哪些虚拟化工具。到目前为止,最常用的工具是 Docker,占 74%。考虑到使用微服务的 Java 开发者的比例,这并不令人意外。Kubernetes 是第二受欢迎的虚拟化工具,占 35%,这表明 Kubernetes 在过去几年里经历了持续的增长。
随着 Kubernetes 的发展,它在未来几年将在市场上占主导地位也就不足为奇了。VMWare 和 Vagrant 是最后两个使用率最高的工具,使用率分别为 18% 和 5%。最后,有 14% 的受访者表示没有使用虚拟化工具。
微服务对开发者在应用程序开发过程中使用的技术带来了深远的影响。而且,随着公司继续转型并创建基于微服务的应用程序,我们预计技术选择将趋向于促进架构和在其中工作的开发人员的需求。完整报告地址:
https://www.jrebel.com/resources/java-developer-productivity-report-2020
InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!
点个在看少个 bug👇