你準備好了嗎,9月19日Java21要來了

2023-09-13 12:01:44

前言

9月份的TIOBE程式語言榜單已公佈,Python依然是第一,Java第四。

而這個月還有一個重要的事情,就是9月19日Java21將會全面釋出,一段時間沒關注的我一口老血噴在螢幕上。

我記得我寫Java17新特性好像還沒多久,Java你要不要這麼努力。

大家可以看一下9月份前20的語言排名

正文

1、排行簡單分析

根據榜單可以發現,前五名還是那幾個,這5年都沒變過,只是互相擠來擠去。

Python、C、C++、Java、C#

Python,不說了,國外太火排第一不意外,國內前幾年忽悠過一些程式設計師,後來發現入圈門檻太高,光速退圈。

C++,好像有那麼點意思了,不知道經歷了什麼。

C#,你就沒想過當老大?

PHP,你倒是說句話啊!

JavaScript還是猛啊,20年來一直在前10,還往上升,你忍了這麼久是要篡位嗎?

Golang,你還是Go Go Go吧,你個扶不起的阿斗,黑馬氣的繼續推Java,尚矽谷氣的瘋狂推巨量資料。

Kotlin,你說你是不是看Java不爽很久了?Java當年從18竄到第1,你敢不敢。

Rust,這年頭,不打廣告都擠不進國內市場。

Java程式設計師別輕易轉以上語言,我不建議,以目前國內的就業形勢而言,沒啥必要,學習成本也不低。

現實點,不管卷不卷,國內後端還是Java好找一點,先認清現實,再考慮別的。

學習第二語言,都差不多,反正你很難找到工作,那我推薦學Python,至少可以陶冶情操。

2、Java21有什麼好

因為我還停留在對於Java17的研究,沒想到稍微不留神,Java21就要來了。

我大意了,趕緊查閱了下Java21的新特性,也還好,有些都是之前版本的預覽特性,只是轉正了。

不過裡面有一個值得關注的,就是虛擬執行緒,終於確定要釋出了。

其實就是其他語言中出現過的協程,說到這裡不得不謝謝Golang。

GO大火的那兩年,因為GO的容器快速啟動,Java生態中開始出現Spring Native。

因為GO的協程,Java生態中開始出現虛擬執行緒。

因為GO的低延遲GC,Java生態中開始引入ZGC,降低堆記憶體和CPU開銷的垃圾回收器。

不得不說,作為同樣的後端程式語言,Golang某種程度上推動了Java生態的發展,讓它走出安樂窩。

從Java17這個革命性的版本,再到Java21的LTS版本即將釋出,我認為這種趨勢對於Java程式設計師來說是好現象,有助於Java生態的持續進化。

所以,我們要保持關注。

3、Java新特性要馬上學嗎

雖然新特性很吸引人,可以說從Java11開始,Java的一些新特性就層出不窮。

裡面能看出吸納了許多其他語言的亮點,這也沒啥,按照程式語言的客觀發展規律,盡頭也就是相互借鑑(你抄我我抄你)了。

那麼,新特性一定要馬上學嗎,我的回答是不必,瞭解一下即可。

我以虛擬執行緒為例,它實際上並不會促進企業朝著Java21的版本跟進。

我主要從以下幾點考量:

1)、業務需求和技術棧

公司是否對 JDK 21 中的新特性有實際需求,並且能夠從中獲得業務上的收益,要打個問號。如果公司的現有技術棧和應用程式可以很好地執行在 Java 8 上,並且沒有迫切需要使用虛擬執行緒的情況下,可能不會立即進行升級。

2)、穩定性和成熟度

虛擬執行緒之前是作為實驗特性,可靠性和穩定性尚未經過廣泛測試和驗證。對於一些對系統穩定性要求較高的公司來說,他們可能更傾向於等待虛擬執行緒在未來版本中成熟和穩定之後再進行升級。相比於高版本的Java,我覺得企業會更傾向於Java11,然後平滑過渡到Java17。

3)、開發團隊的意願和能力

公司的開發團隊是否具備學習和適應 JDK 21 中的新特性的能力,並且是否希望利用虛擬執行緒來改進他們的程式碼和應用程式。這取決於團隊的技術儲備和開發資源的可用性。說白了,你以後要不要招必須熟悉Java21的程式設計師,這顯然不現實,也不是很多中小企業的面試評判標準。

總結

最後講個題外話,我們公司幾個月前有嘗試過直接從Java8升級到Java17,因為Springboot3.0最低支援Java17,如果新專案想用SpringBoot3.0版本,就只能升級到Java17。

但是升級過程令人崩潰,有太多關聯的中介軟體也要一起升級了,每個過程都有坑,而有些元件還升級不了,除非換成別的,這樣一來升級成本太大,公司已經成熟的一套技術體系面臨改造。

種種考慮過後,決定暫時放棄這個想法,等到SpringBoot3.0、Java17版本以及關聯的整個生態穩定之後,再考慮升級的事情。

其實就是等別人踩完了我們再踩,哈哈。


如果喜歡請點贊關注↓↓↓,持續分享乾貨哦!