Java 開發工具 JRebel 和 XRebel 的開發商——Perforce 最近公布了其第九份年度全球 Java 開發者生產力報告,該報告基于對 850 多位 Java 開發者的調查而得出。涵蓋的主題包括 Java 團隊的性質、他們遇到的挑戰,以及首選的開發工具等諸多方面。通過調查發現,盡管有越來越多的開發者使用微服務,但是開發者仍然面臨著較長的重新部署時間和服務間的功能問題。
關于受訪者
此次調查中 49% 的受訪者是 Java 開發者,6%為董事或副總裁,其余的則是由團隊負責人、架構師和顧問組成。其中有超過三分之一(36%)的受訪者在大型企業或組織中工作,在中小型公司有 42%,在初創公司有 15%。大多數人都是在小型團隊中工作,這表明人們對更敏捷的開發和采用微服務的需求不斷增長,在微服務中,開發人員可以使用較少的代碼片段。40% 的團隊在 3 至 9 人之間,24% 在 10-20 人之間,17% 在 20-50 人之間。
Java 和微服務趨勢
不出所料,有 69% 的受訪者仍在使用 Java 8,緊隨其后是的 JavaScript 占 40%,以及 Java 11 占36%(在調查中受訪者可以選擇多種編程語言)。只有 16% 的受訪者表示他們正在使用 Java 12 或更高版本,而目前有 15% 的受訪者仍然在堅持使用 Java 7 或更早期的版本。
對于微服務的采用保持穩定,有 66% 的受訪者正在積極過渡或已經在使用微服務了。只有 13% 的受訪者根本不打算轉型。調查中還詢問了開發人員在他們主要的應用程序中擁有多少微服務,并以 1 到 20 這種規模進行選擇。最終得出的答案是:使用 5-10 的有 36%,使用 1-5 的有 34%,其次是 16% 使用了 20 或更多的微服務,最后使用 10-20 的占了 14%。當然,公司或組織可以擁有多個應用程序架構,例如:42% 的用戶使用 Monolith、SOA 29%、移動設備 23%,以及桌面設備 18%。
最受歡迎的工具
該報告對受訪者在每個類別中最常用的技術和工具也進行了調查:
應用服務器 —— Tomcat 仍占 66% 的份額。之后,JBoss/WildFly(19%)、WebLogic(18%)、Jetty(15%)和 WebSphere(14%),后幾個的占比相對比較均勻。
應用程序框架 —— Spring Boot 以 62% 位居榜首,與去年的 83% 相比有所下降。DropWizard 的用戶占 8%,比 2020 年的 1% 有所增加。Quarkus 也類似,采用率從 1% 增加到 6%。
框架配置 —— Annotations 以 75% 的優勢居于領先地位。
IDE —— IntelliJ IDEA 以 65% 排名第一,其次是 Eclipse(48%)、VSCode(27%)和NetBeans(13%)。
JRE/JDK 分發 —— 使用 Oracle JDK 開發者有所增加,從去年的 50% 上升到 59%,盡管有報告指出很多人由于許可成本而放棄使用 JDK。這可能歸因于響應此次調查的大型企業的數量占比較高,而大型企業通常比小型組織更難過渡。排名第二的是 AdoptOpenJDK 占 22%,使用 Amazon Corretto 的占比 10%。
數據庫 —— 最受青睞的是數據庫是 MySQL 占比 43%,其次是 Oracle DB 和 PostreSQL,分別占36%。接下來是 MongoDB,有 29% 的受訪者在使用。
構建工具 —— Maven 以 67% 的占比成為開發者的首選工具,而去年 Maven 和 Gradle 則是并駕齊驅。
虛擬化工具 —— 88% 的受訪者表示他們在使用這些工具,而最常見的工具是 Docker,占57%,低于去年的 74%。Kubernetes 以 42% 的占比排名第二,相比去年的 35% 有所提高。VMWare 以 27% 的份額位居第三。
CI/CD —— Jenkins 在受訪者中使用占比 61%,其他競爭對手(Bamboo、TravisCI 和 TeamCity等),僅占 12% 或更少。
PaaS —— 大多數受訪者現在正在使用 PaaS 服務提供商,只有 24% 的受訪者表示不使用。對于使用 PaaS 服務提供商的用戶,AWS 占 39% 是用戶的首選;Microsoft Azure 緊隨其后,占24%;Google Cloud 位居第三,占 18%。
開發者的痛點
最嚴重的應用程序性能問題是較長的應用程序響應時間,達到54%(與去年的55%相提并論)。這種持續的趨勢與微服務的采用不斷增長相吻合。報告中的另一個性能問題是高 CPU 使用率(39%)和內存泄漏(35%),過多的開放連接和 IO 查詢也分別達到26%和19%。
部署時間是最常見的問題。59% 的開發人員經歷了超過四分鐘的重新部署時間,而 20% 經歷了超過 10 分鐘的重新部署時間。這背后有兩個潛在的原因。一種是,隨著微服務規模的增長,開發和創建應用程序將花費更長的時間。第二個原因是由于微服務在遠程虛擬機上運行。
針對微服務,對服務間功能進行故障排除是報告中最大的挑戰,占30%;其次是在本地設置開發環境的問題(占24%)。這可以歸因于創建復雜的微服務應用程序的困難度。
本文地址:https://www.oschina.net/news/130872/java-development-2021