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