Categories
程式開發

2020年Java語言發展現狀


今年,Java到達了一個不可思議的里程碑,達到了25歲的高齡。我們通過舉辦一個特別的在線Java日活動來慶祝它的誕生,在該活動中,許多專家演講者分享了他們的經驗,並就如何從這門語言中獲得更多收益提供了技巧和竅門。

這引起了我們的思考,我們決定對數據進行深入研究,以徹底發現Java的普遍狀態是什麼,並幫助你回答一些亟待解決的問題。我們發現的某些內容可能是不足為奇的,但也有些見解是令人非常意想不到的。

隨著Java 15在本週的發布,我們決定把它放在一起,向你展示Java的狀態。這篇文章是根據不同來源的數據而創建的,其中包括我們的開發人員倡導者Trisha Gee的專家評論。

Java開發者有多少,他們分佈在哪裡?

第一個問題是:“大多數的Java開發人員都在哪裡,我們中有多少人是Java開發人員呢?”我們通過綜合所能獲取到的最準確的信息來回答這個問題,然後進行推斷,得出一個我們認為非常合理的猜測。

市場研究和分析團隊根據開發人員估算模型得出的最佳估計顯示,當今世界上有大約520萬專業Java開發人員,他們將Java作為主要語言。但是,如果我們將主要使用其他編程語言但同時也做一些Java工作的專業開發人員也包含在內的話,這個數字可能接近680萬。

至於這些Java開發人員都集中在什麼地方,在亞洲居住的Java開發人員數量最多,那里大約有250萬開發人員使用Java作為主要語言。北美和歐洲的數字遠不及亞洲。你可能會問:“為什麼呢?”好吧,起初我們有也有同樣的想法,因此我們對這些區域進行了更深入的研究,以確切地了解這些數字的來源。

圖片

哪個國家的Java開發者最多?

我們進一步研究了擁有最多Java開發人員的各個國家,然後調查了為什麼這些國家在專業開發中特別喜歡Java而不是其他語言。

下圖顯示了每個國家使用Java作為主要語言的開發人員的百分比(用於收集此數據的調查對象最多可以選擇3種主要語言)。中國韓國的數值最高,分別約為51%和50%。數據來自2020年開發者生態系統狀況調查

專家分析

Java在前6個國家如此流行的原因可能包括Java是免費使用的、政府支持和開源。對於中國、西班牙巴西尤其是這樣。它是在中國和印度進行Android移動開發的基礎,並且僱傭海外人員用Java開發手機應用程序非常普遍,這可能是印度使用量達到峰值的原因。德國的使用率也很高,這可以歸因於Java在德國軟件工程師中是最流行的語言,因為多種行業都使用Java來構建高度可擴展的應用程序。大多數企業服務都依靠Java來驅動應用程序支持日常業務的運行,例如工資單、庫存管理、報表等。德國還有一個龐大的金融部門,在本國技術上大量使用Java,例如交易機器人、零售銀行系統以及金融業為了保持競爭所需要的其他應用程序。

我們本以為美國會有很高比例的Java用戶,但是並沒有,這也是很合理的。有大量的技術棧可供選擇,而且很多技術公司通常處於這些技術棧的最前沿,因此那裡的開發人員可能不需要Java的強大功能或穩定性,而是使用能讓他們進行快速構建和測試等的語言。

圖片

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被這些公司的專業開發人員所大量使用。

圖片

用Java開發的軟件類型

快速瀏覽一下用Java開發的軟件類型,應該可以了解它的使用統計信息。根據2020年開發者生態系統狀況調查的結果,Java使用最流行的領域是Web服務,佔52%。

專家分析

看到Java在商業智能/數據科學/機器學習中如此流行,真令人驚訝,因為你可能認為這將是Python的領域。其他的就不足為奇了,因為Web服務的後端通常是Java,而且使用Java編寫業務應用程序也很有意義,因為它們也需要使用後端和數據庫。

圖片

使用Java的熱門行業

既然我們知道了為什麼這麼多專業開發人員使用Java,那麼讓我們具體看看Java應用於哪些行業。

根據2020年開發者生態系統狀況調查,Java程序主要用於IT服務(42%)與金融和金融科技領域(44%),但這並不是說Java沒有用於其他行業。

專家分析

金融和金融科技領域主要涉及金融交易所、零售銀行系統、創建計算引擎以及開發本地定制工具和服務,以使公司在市場上具有競爭力。金融和金融科技幾乎都是用Java建立的,所以在這裡沒有什麼好驚訝的。 IT服務也是如此,因為許多針對非IT公司的薪資系統和庫存管理服務都是基於Java構建的。其他行業也很有趣。由於Android的存在,移動開發的比例可能很高,因此Java正以這種方式被使用。大數據和數據分析也非常有趣,因為該行業是由Python主導的,但是後端可能會使用Java和JVM語言。當然構建軟件開發工具也可以。 JetBrains IDE目前是用Java構建的。儘管其他行業有點神秘,但實際上,了解Java在這些行業中的使用方式將非常有趣。

圖片

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,以避免出現大問題。

圖片

流行的應用服務器

在過去的3年中,Apache Tomcat仍然是最受歡迎的應用服務器,而JBoss EAP和WildFly的使用量卻減少了一半。給出的數據來自參加2018年2020年開發者生態系統調查的所有以Java為主要語言的開發人員。

專家分析

Jetty位居第二,但它確實低得令人驚訝。可能是某些正在使用Spring Boot和其他微服務框架的開發人員沒有意識到他們到底在使用使用,他們可能在不知不覺中使用了Tomcat或Jetty。

圖片

排名前5的Web框架

在2018年,Spring Boot與Spring MVC是一樣流行的,到了2020年,它變得更加流行。給出的數據來自所有使用Java作為主要語言的開發人員。

專家分析

這基本上只是在證實Spring擁有市場。幾乎可以肯定的是,仍然有人在使用Struts 1,但它只是用於遺留應用程序。

圖片

排名前5的分析器

2020年開發者生態系統狀況調查顯示,有24%的用戶使用VisualVM,而一半的用戶則沒有使用。給出的數據來自所有使用Java作為主要語言的開發人員。

圖片

排名前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中,你確實可以從一個與應用程序服務器集成的優秀工具中得到很多東西,你可以真正使用分析、重構等功能。

我們專家的最新消息

我發現有很多對本博客文章數據分析進行刪減和編輯的版本,這是我無意間造成的混亂。我想澄清一下我對開發人員和IDE評論背後的意圖。對我來說,如果開發人員不理解IntelliJ IDEA作為一個功能齊全的IDE給他們帶來了什麼,那對我來說就是一個失敗,因為這六年來我的工作就是讓開發人員了解IDE(特別是IntelliJ IDEA)能為你做什麼。我強烈地認為,人們不應該因為不了解產品而責備用戶或潛在用戶。

我個人對IDE的觀點來自擁有20多年Java開發經驗的Java開發人員,他們開發過各種大大小小的Java項目。如果沒有像IntelliJ IDEA這樣的IDE提供大量的幫助,我無法想像如何創建一個複雜的企業應用程序。我也見過很多開發人員使用VS Code,並且我完全了解代碼編輯器所涵蓋的用例。在你的工具箱中總有能容納多於一種的工具,了解某個工具的優點將有助於我們為正確的工作選擇合適的工具。

圖片

討論最多的Java工具和其他語言

在IT社區中會經常討論Java,其中的一個社區就是Stack Overflow。我們從“問答”部分中獲取了數據,以找出哪些標籤與“ java”最相關。縱軸表示提到Java的次數,橫軸表示標籤出現的總次數。

專家分析

對於那些希望確保自己使用了正確的技術或正尋找適合自己的工具的用戶來說,這個圖表可能很有用。這些語言很有意思,但這可能是因為人們正在尋找Java與其他語言之間的比較。正則表達式是人們苦苦掙扎的一個利基領域,但它能上榜也就不足為奇了。

圖片

Java社區的熱門話題

Java的討論

我們分析了Reddit上“ java”子版塊的帖子,並發現了Java用戶在Reddit上討論最多的主題。

專家分析

這些正是我期望看到的話題。例如,用Java編寫代碼的人總是會對這種語言是否仍然有需求感興趣,畢竟,這種語言還在發展。我們剛剛慶祝了Java誕生25週年,因此人們希望檢查它是否過時了,以及它是否仍然有效。特別是,如果他們剛從大學畢業,還不知道他們所學的語言是否能為他們提供工作機會。在容器中部署Java是一個非常熱門的話題,包括我在內,這是每個人都想知道的東西,但幾乎找不到任何相關信息。我對性能優化這個主題並不感到驚訝,儘管我認為這個主題有點多餘,因為大多數應用程序實際上並不需要開發人員來進行優化,儘管許多開發人員認為這是一項重要的職業技能。使後端和前端協同工作也非常複雜,我可以想到有很多關於這方面的問題。

圖片

原文鏈接:

https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/