Java是瀕臨死亡還是比以往任何時候都更有活力? - Roger
許多人說 Java 的輝煌時代即將結束?你經常會聽到“Java 正在消亡”的說法,所有現代人都應該儘快轉向像 Go 這樣的現代語言。他們說這對他們有好處,但對每個人都將放棄的舊語言來說會很糟糕。但這是真的嗎?
有人說“Java 正在消亡”,字面意思是:該語言流行的時代已經過去,需要它的人越來越少,而剩下的人即將放棄它。也有人認為Java在流行上可能還不錯,但技術上它停留在上個世紀,所以現在用它來寫是不體面的。
當然,要給出準確的答案,最簡單的方法是購買有關所有程式語言的研究論文,但我們沒有金錢和時間。所以讓我們看看可用的資訊,然後一一看看這兩個論文。
“沒有人想要 Java”
在第一種情況下,讓我們看看硬核數字而不是“我認為是”。不幸的是,世界上沒有單一的語言流行指標,所有可用的來源都可能會產生很大的誤導。但是如果你比較幾個不同的來源,則更有信心地下判斷。
最著名的是 TIOBE 指數。是的,可能對其方法和結果存在疑問;不能盲目相信,也不能完全無視。讓我們開啟最新的資料——2021 年 7 月,Java 位居第二。根據 TIOBE 的說法,它不僅是一種“垂死的語言”,而且是世界上最受歡迎的語言之一。
另一個著名的來源是 Stack Overflow 的年度開發人員調查。讓我們開啟2020 年這項民意調查的結果。乍一看,Java 的地位要弱得多,僅排在第五位。但是,當我們更仔細地觀察“領先於曲線”時,印象就會改變:它是 JavaScript、HTML、CSS 和 SQL。首先,這次民意調查不僅包括程式語言,還包括標記語言,這很重要。其次,前面的所有選項都有一個共同點,即除了主要語言之外,開發人員還經常使用它們。如果 .NET 和 Java 開發人員都使用 SQL 一點點,所以在調查中都提到了它,這是否使 SQL 比 C# 和 Java 更重要?
在這裡檢視第三個來源很有趣—— 來自 JetBrains的一項調查。在這種情況下,結論是最常用的語言通常是 JavaScript,但最流行的主要語言是 Java。
這裡有人可能會爭辯說:數字因來源而異,因此無法絕對確定,但如果每年出現大幅下降,那將是顯而易見的。但在實踐中恰恰相反——在所有三個來源中,Java 的位置至少穩定了 2-3 年。總而言之,如果您現在開始一個 Java 專案,幾年後您將不會發現自己孤身一人。
“為什麼這有關係?”
為什麼一種語言的流行很重要?為什麼要使用與其他人相同的語言?當然沒有嚴格要求,有人用Haskell寫的,開心就好。但有幾個重要因素。
例如,就業市場的規模。如果您公司的一位主要開發人員決定退出並使用很少使用的東西編寫專案,那麼找到替代品有多容易?相反的問題是:如果你是那個退出的開發人員,在你的領域找到一份好工作有多容易?Java 擁有最大的就業市場之一——比 Go 大得多。
此外,該語言的高流行度意味著網際網路上會有大量關於它的資訊(部落格文章、報告、Stack Overflow 的答案),但是當您使用一種稀有語言時,您可能會面臨資訊匱乏. 當然,當先鋒是有一定的浪漫色彩的,但這並不是快速解決問題的最佳策略。
這些問題與“它有模式匹配嗎?”一樣重要。在選擇語言時,Java 僅僅因為生態系統的規模就具有巨大的優勢。由於有多少人使用它,因此在建立新專案時它被證明是一個不錯的選擇,這反過來又會鼓勵人們湧入。如果這種自我維持的過程消失,那麼在接下來的幾年裡肯定不會。
“Java 是上個世紀”
現在讓我們繼續第二個論點:當技術的火車頭向前衝刺時,這裡有一種來自 90 年代的語言。當您擁有更現代的語言時,為什麼要使用它?
一般來說,對很多人來說,更重要的不是語言本身,而是它的平臺和“周圍的一切”:主要供應商的解決方案和愛好者的開源庫、IDE 支援和替代 JVM 語言。如果我們將所有這一切視為一個整體,就會有很多發展正在進行。
但是我們甚至不能考慮第三方專案,而是直接看看 Java 在過去十年中發生了什麼。
2011 年,甲骨文收購了 Sun Microsystems,從而獲得了 Java,當時前景並不明朗。當時進入甲骨文的其他產品(OpenOffice、Solaris、Hudson)前途未卜。
但 Java 的結果卻不同:這裡 Oracle 並沒有放棄貨架上的購買,而是投入了資源進行開發。而2014年釋出的Java 8版本是一件大事;由於這些創新,語言發生了明顯的變化和現代化。業界心甘情願地接受了這個版本,那些仍然需要在舊版本上維護專案的人通常是同情的。
2017 年,隨著 Java 9 的到來,一個長期存在的 JDK 模組化專案釋出。與任何已存在數十年的主要專案一樣,JDK 中的內部依賴項隨著時間的推移開始類似於義大利麵條。為了“看清楚”它,必須將這些依賴關係分解為一個連貫的系統——也就是說,本質上進行了一次巨大的重構。對於真正“陷入過去”的專案,這種情況不會發生。
自 2018 年以來,一個新的釋出週期已經生效:他們開始每六個月釋出一個較小的 Java 版本,而不是幾年來準備一個大版本的 Java。這樣做只是為了跟上行業的步伐,更快地釋出功能(如果某些功能已準備就緒,您不必將它們擱置數年直到釋出下一個版本)。並且有定期的釋出流並沒有把所有東西都顛倒過來,但仍然新增了一些值得注意的東西。
一般來說,談論缺乏發展是不正確的。我們可以談論的是 Java 與其他語言相比更加保守。的確,在許多問題上,他們都儘量謹慎行事,而不是一頭扎進事情裡。但這引出了下一個問題:“一味前進”真的是一件好事嗎?
幾年前,前端世界有很多抱怨事物變化迅速,使您無法保持冷靜和專注。在 Java 社群中,現在也不是每個人都對新的釋出週期感到滿意。
結論
技術發展的速度沒有一個合適的速度:對初創公司有利的事情對大型銀行不利。Java 的保守主義本身既不是優點也不是缺點:它對某些人有利,對其他人不利。
以上所有並不意味著 Java 是世界上最好的語言,對每個人來說都無一例外,你應該使用它。在選擇語言時,應該看具體情況下需要什麼,而不是依賴網路上大喊“從X到Y,否則你就落伍了”。如果您採用這種方式,Java 在大多數情況下仍然是一個不錯的選擇。
相關文章
- 傳統ECM瀕臨死亡,殺手同樣是人工智慧!人工智慧
- 3A格鬥遊戲大作為何如今瀕臨死亡?遊戲
- 新的AI演算法讓我們比以往任何時候都更接近於用思想控制機器AI演算法
- 還在學iOS?是時候學習Flutter了(二)iOSFlutter
- php還是java,選擇比努力更重要!PHPJava
- 還在寫iOS?是時候學一下Flutter了iOSFlutter
- 154的cpu有時候還是挺高,先觀察
- java還是C?Java
- 是時候該學JavaScript了JavaScript
- Java 8 是否還需要 LINQ?還是已經比 LINQ 更好?Java
- 是時候該瞭解一波Protocol Buffers了[Java]ProtocolJava
- 都996了,需求還是沒法按時交付,怎麼辦?996
- session是什麼時候建立的Session
- Java 是傳值還是傳引用 (轉)Java
- 建模的時候如何確定一個名詞是類還是別一個類的屬性?
- 是時候 Get 新技能了:使用 Java 爬取網頁資訊Java網頁
- 是時候捋一捋 Java 的深淺複製了Java
- 學Java還是前端更好?Java前端
- tomcat的執行的時候,GC進行記憶體回收,回收後的記憶體是還給OS還是還給JVMTomcatGC記憶體JVM
- 到底是Java好還是Python好?JavaPython
- Java - 是值傳遞還是引用傳遞Java
- 是時候扔掉 Postman 了,Apifox 真香!PostmanAPI
- 是時候瞭解React Native了React Native
- 是時候向Chrome說再見了Chrome
- 比Kubernetes和無伺服器更有前途的是Istio!伺服器
- 這家一度瀕臨破產的瑞典遊戲廠商,是如何絕境逢生的?遊戲
- 都8102年了!是時候有個新的狀態容器取代redux了!Redux
- Drop table時候會徹底刪除index, Truncate 時候會清除index 但是index資料還是保留在HIndex
- 運維學網路安全還是雲端計算好?哪個更有前景?運維
- 面試的時候被問“擅長前端還是後臺”應該怎麼回答?面試前端
- 網路詐騙致女孩死亡,歹徒之罪還是社會安全之殤?
- 機器學習用java還是python?機器學習JavaPython
- 學Java好還是前端好?Java前端
- 是時候扔掉cmder, 換上Windows TerminalWindows
- 是時候放棄 el-form 元件了ORM元件
- 是時候好好安利下LuLuUI框架了!UI框架
- session的狀態什麼時候是snipedSession
- 2024, 是時候告別CentOS了CentOS