今年,Java 迎來了 25 周年的里程碑。我們舉辦了一個在線 Java 日活動來慶祝它的誕生,在該活動中,許多專家演講者分享了他們的經驗,并就如何從這門語言中獲得更多收益提供了技巧和竅門。這引起了我們的思考,我們決定對數據進行深入研究,以了解 Java 的普遍現狀是怎樣的,并回答一些亟待解決的問題。我們發現的某些內容可能是不足為奇的,但也有些見解是令人非常意想不到的。
1. Java 開發者有多少,他們分布在哪里?
第一個問題是:“大多數的 Java 開發人員都在哪里,我們中有多少人是 Java 開發人員呢?”我們通過綜合所能獲取到的最準確的信息來回答這個問題,然后進行推斷,得出一個我們認為非常合理的猜測。
市場研究和分析團隊根據開發人員估算模型得出的最佳估計顯示,當今世界上有大約 520 萬專業 Java 開發人員,他們將 Java 作為主要語言。但是,如果我們將主要使用其他編程語言但同時也做一些 Java 工作的專業開發人員也包含在內的話,這個數字可能接近 680 萬。
在亞洲居住的 Java 開發人員數量最多,大約有 250 萬開發人員使用 Java 作為主要語言。北美和歐洲的數字遠不及亞洲。你可能會問:“為什么呢?”好吧,起初我們有也有同樣的想法,因此我們對這些區域進行了更深入的研究,以確切地了解這些數字的來源。
2. 哪個國家的 Java 開發者最多?
我們進一步研究了擁有最多 Java 開發人員的各個國家,然后調查了為什么這些國家在專業開發中特別喜歡 Java 而不是其他語言。
下圖顯示了每個國家使用 Java 作為主要語言的開發人員的百分比(用于收集此數據的調查對象最多可以選擇 3 種主要語言)。中國和韓國的數值最高,分別約為 51%和 50%。數據來自 2020 年開發者生態系統狀況調查。
https://www.jetbrains.com/lp/devecosystem-2020/java/?_ga=2.150745394.563113833.1601341550-619513127.1595322402
專家分析
Java 在前 6 個國家如此流行的原因可能包括 Java 是免費使用的、政府支持和開源。對于中國、西班牙和巴西尤其是這樣。它是在中國和印度進行 Android 開發的基礎,雇傭海外人員用 Java 開發手機應用程序非常普遍,這可能是印度使用量達到峰值的原因。德國的使用率也很高,這可以歸因于 Java 在德國軟件工程師中是最流行的語言,因為多種行業都使用 Java 來構建高度可擴展的應用程序。大多數企業服務都依靠 Java 來驅動應用程序支持日常業務的運行,例如工資單、庫存管理、報表等。德國還有一個龐大的金融部門,在本國技術上大量使用 Java,例如交易機器人、零售銀行系統以及金融業為了保持競爭所需要的其他應用程序。
我們本以為美國會有很高比例的 Java 用戶,但是并沒有,這也是很合理的。美國有大量的技術棧可供選擇,而且很多技術公司通常處于這些技術棧的最前沿,因此那里的開發人員可能不需要 Java 的強大功能或穩定性,而是使用能讓他們進行快速構建和測試等的語言。
3. Java 在開發行業中的位置
根據 2020 年開發者生態系統狀況調查,有超過三分之一的專業開發人員將 Java 用作主要語言,而 Java 在專業開發人員當中仍然是僅次于 JavaScript 的第二大主要語言。
專家分析
看到 JavaScript 和 Java 處于領先地位,這并不奇怪,因為它們是成對的:使用 Java 的開發人員經常使用 JavaScript 編寫前端和任意快速腳本。由于機器學習的普及,Python 可能排名第三。一般來說,我們希望 Web 成為開發人員生態系統的重要組成部分,因此 JavaScript、HTML 和 CSS 以及 PHP 將始終能擁有穩固的地位。SQL 也會一直存在,因為沒有多少東西是不需要某種容量的數據庫的。C++ 也是一種堅實的語言,因為它被用于許多嵌入式應用程序中,因此它不會很快在圖表中消失。雖然 C# 似乎正在逐漸衰落,但我想如果 Java 比例高,C# 就會低,因為它們在功能上非常相似。至于為什么我認為 Java 在專業發展領域如此之高,原因與之前提到的德國類似。大多數企業的業務服務都依靠 Java 來運行。它不僅僅用于 IT 部門,幾乎每個公司,無論是分銷、制造還是銀行業,都將 IT 服務作為其基礎設施的一部分,而這些服務,如工資單或庫存管理,通常都是在后端使用 Java 構建的。因此,Java 被這些公司的專業開發人員所大量使用。
4. 用 Java 開發的軟件類型
快速瀏覽一下用 Java 開發的軟件類型,應該可以了解它的使用統計信息。根據 2020 年開發者生態系統狀況調查的結果,Java 使用最流行的領域是 Web 服務,占 52%。
專家分析
看到 Java 在商業智能 / 數據科學 / 機器學習中如此流行,真令人驚訝,因為你可能認為這將是 Python 的領域。其他的就不足為奇了,因為 Web 服務的后端通常是 Java,而且使用 Java 編寫業務應用程序也很有意義,因為它們也需要使用后端和數據庫。
5. 使用 Java 的熱門行業
既然我們知道了為什么這么多專業開發人員使用 Java,那么讓我們具體看看 Java 應用于哪些行業。
根據 2020 年開發者生態系統狀況調查,Java 程序主要用于 IT 服務(42%)與金融和金融科技領域(44%),但這并不是說 Java 沒有用于其他行業。
專家分析
金融和金融科技領域主要涉及金融交易所、零售銀行系統、創建計算引擎以及開發本地定制工具和服務,以使公司在市場上具有競爭力。金融和金融科技幾乎都是用 Java 建立的,所以在這里沒有什么好驚訝的。IT 服務也是如此,因為許多針對非 IT 公司的薪資系統和庫存管理服務都是基于 Java 構建的。其他行業也很有趣。由于 Android 的存在,移動開發的比例可能很高,因此 Java 正以這種方式被使用。大數據和數據分析也非常有趣,因為該行業是由 Python 主導的,但是后端可能會使用 Java 和 JVM 語言。當然構建軟件開發工具也可以。JetBrains IDE 目前是用 Java 構建的。盡管其他行業有點神秘,但實際上,了解 Java 在這些行業中的使用方式將非常有趣。
6. Java 相關工具
Java 版本
Java 8 仍然是最受歡迎的版本。在使用 Java 作為主要語言的專業開發人員當中,有 75%的人使用 Java 8。基于開發人員在 2020 年開發者生態系統狀況調查中選擇的幾個版本,下圖顯示了 Java 版本的分布情況。
專家分析
有幾個因素導致了 Java 8 的如此流行。首先,它擁有典型的 Java 開發人員所需要的所有語言,它具有 lambda 和流,并且它是一個很好的易于使用的版本。另外,人們一直不愿意遷移到 Java9。Java9 引入了一些重大的架構更改,人們擔心這些更改會破壞他們用 Java 8 構建的應用程序。最重要的是,Oracle 還推出了每兩年發布一次的版本,因此并不是所有版本都是長期受支持的,因此 Java 9、Java 10、Java 12 和 Java 13 僅受 6 個月的支持,這可能就是為什么它們都只有這么少用戶的原因。Java 13 之所以如此之高,是因為當本調查公布時,它是最新的版本,因此你可以預期,該數字將在幾個月后下降。
Java 11 發布于 2018 年,它是長期受支持的最新版本。許多企業仍未遷移到它,因為他們擔心超過 Java 9(由于其架構的更改)會破壞一切,而且 Java 11 引入了新的許可和新的訂閱,因此它帶來了一個新的恐懼:更擔心如果使用了錯誤的版本,以錯誤的方式使用它,Oracle 會對你進行罰款。許多開發人員沒有升級到 Java 11 的最后一個主要因素是,它沒有很多令人興奮的新功能,因此該語言的功能并沒有降低升級的風險。Java 17 將是下一個擁有長期支持的版本,并帶有許多新功能,但是直接從 Java 8 升級到 Java 17 也會帶來一些問題。
我的預測是,我認為下一個長期版本 Java 17 將比上一個 LTS(長期支持版本)Java 11 更受歡迎。不過,作為 Java 17 的準備,這一點我再強調也不為過,建議你先將代碼庫更新到 Java 11,然后再更新為 Java 17,以避免出現大問題。
7. 流行的應用服務器
在過去的 3 年中,Apache Tomcat 仍然是最受歡迎的應用服務器,而 JBoss EAP 和 WildFly 的使用量卻減少了一半。給出的數據來自參加 2018 年和 2020 年開發者生態系統調查的所有以 Java 為主要語言的開發人員。
專家分析
Jetty 位居第二,但它確實低得令人驚訝。可能是某些正在使用 Spring Boot 和其他微服務框架的開發人員沒有意識到他們到底在使用使用,他們可能在不知不覺中使用了 Tomcat 或 Jetty。
8. 排名前 5 的 Web 框架
在 2018 年,Spring Boot 與 Spring MVC 是一樣流行的,到了 2020 年,它變得更加流行。給出的數據來自所有使用 Java 作為主要語言的開發人員。
專家分析
這基本上只是在證實 Spring 擁有市場。幾乎可以肯定的是,仍然有人在使用 Struts 1,但它只是用于遺留應用程序。
9. 排名前 5 的分析器
2020 年開發者生態系統狀況調查顯示,有 24%的用戶使用 VisualVM,而一半的用戶則沒有使用。給出的數據來自所有使用 Java 作為主要語言的開發人員。
10. 排名前 5 的 IDE/ 編輯器
2018 年和 2020 年的開發者生態系統調查顯示,IntelliJ IDEA 的份額從 2018 年的 55%增加到 2020 年的 72%,而其他四個的使用率則有所下降。
專家分析
不過,即使我們對調查結果進行了加權,但我們并不否認這些信息可能會有些偏差,因為這是來自 JetBrains 開發者生態系統狀態調查,而 JetBrains 的一個主要產品就是 IntelliJ IDEA。然而,這并不是說這并非完全不合理,就好像我們在其他調查中看到的一樣,IntelliJ IDEA 通常是使用最多的 IDE 之一,并且通常擁有約 55-60%的用戶份額。VS Code 正在增長,這不是從競爭的角度來看的,而是從缺乏對 IDE 的理解的角度來看的。VS Code 是一個代碼編輯器,帶有一些你可以在 IDE 中找到的特性,并且可以提供附加功能的擴展。因此,如果人們使用 VS Code 進行開發,則可能意味著開發人員不知道一個功能齊全的 IDE 能給他們什么。在 Web 領域,使用編輯器是可以理解的,因為 Web 開發人員通常使用動態語言,并且經常使用其他工具(例如瀏覽器插件)來滿足他們的需求。但是在 Java 中,特別是在專業的 Java 中,你確實可以從一個與應用程序服務器集成的優秀工具中得到很多東西,你可以真正使用分析、重構等功能。
11. 討論最多的 Java 工具和其他語言
在 IT 社區中會經常討論 Java,其中的一個社區就是 Stack Overflow。我們從“問答”部分中獲取了數據,以找出哪些標簽與“ java”最相關。縱軸表示提到 Java 的次數,橫軸表示標簽出現的總次數。
專家分析
對于那些希望確保自己使用了正確的技術或正尋找適合自己的工具的用戶來說,這個圖表可能很有用。這些語言很有意思,但這可能是因為人們正在尋找 Java 與其他語言之間的比較。正則表達式是人們苦苦掙扎的一個利基領域,但它能上榜也就不足為奇了。
12. Java 社區的熱門話題
Java 的討論
我們分析了 Reddit 上“ java”子版塊的帖子,并發現了 Java 用戶在 Reddit 上討論最多的主題。
專家分析
這些正是我期望看到的話題。例如,用 Java 編寫代碼的人總是會對這種語言是否仍然有需求感興趣,畢竟,這種語言還在發展。我們剛剛慶祝了 Java 誕生 25 周年,因此人們希望檢查它是否過時了,以及它是否仍然有效。特別是,如果他們剛從大學畢業,還不知道他們所學的語言是否能為他們提供工作機會。在容器中部署 Java 是一個非常熱門的話題,包括我在內,這是每個人都想知道的東西,但幾乎找不到任何相關信息。我對性能優化這個主題并不感到驚訝,盡管我認為這個主題有點多余,因為大多數應用程序實際上并不需要開發人員來進行優化,盡管許多開發人員認為這是一項重要的職業技能。使后端和前端協同工作也非常復雜,我可以想到有很多關于這方面的問題。