誰將會殺死 Java?

2017-10-12    分類:JAVA開發、程式設計開發、首頁精華2人評論發表於2017-10-12

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

Java是這個星球上最為流行的程式語言之一,但這方面的競爭正愈演愈烈。下面我們將講述Java可能遭遇滑鐵盧的地方,以及可以做些什麼來預防它的衰退。

2017年9月的TIOBE指數將Java列為當月較為流行的語言。其實,它已經名列前三甲很多年了。

Stack Overflow Developer Survey 2017將Java列為繼Javascript和SQL之後第三常用的程式語言(實際上,過去四年它都保持著這名次)。

不說這些結果是如何產生的,亦或者這結果是否反映了現實世界中的情況,我們不能否認的是,Java在多個環境中仍然是一種流行語言。

但是,Java總有一天會死。世無定事,沒有什麼可以天長地久。

程式語言死亡的真正定義是沒有人再使用它——但這樣的情況很難發生。即使是老朽且不被廣泛使用的語言(例如,你是否聽說過Modula-3?),仍然在被使用、維護,或者至少會演變成其他的東西。

當然,這是一個漸變的過程,怎麼發生的方法不定。從實際出發,假設程式語言在它不再被用於新專案時,就意味著它的死亡,但是它可能依然存活在許多遺留專案上(COBOL就是一個完美的例子)。

最終這結局也將降臨到Java頭上,那麼誰會殺死它?

讓我們來分析選項。

在以《What Killed Smalltalk Could Kill Ruby Too》為主題的演講,Robert “Uncle Bob” Martin說,Smalltalk被殺的原因是,它太容易造成混亂,並且它的傲慢自大會導致不專業的實踐方法,如缺乏測試驅動開發(TDD)。

在任何語言中你都可以搞得一團亂。當然,在某些語言中,比其他語言更容易導致混亂——例如,在動態型別語言中,我們可以隨時更改變數的型別——但是我們在Java中沒有這個問題。

此外,在Java社群中很多人採用的良好實踐,比如設計模式和TDD,有助於我們製作更好的軟體。

所以讓我們來探討另一個選項。

Java是物件導向的語言。如果其他(新的)正規化接管了怎麼辦?如果物件導向的程式設計變得過時了怎麼辦?

好吧,這可能性並不大——基本原理已經有很長一段時間沒有真正改變過了。諸如結構化,功能性和麵向物件程式設計的重大創新發生在20世紀50年代,60年代以及甚至70年代,但從那以後,沒有什麼舉足輕重的事發生。

但是,在過去十年中,卻有很多新的語言問世,這些語言有著現代的語法以及新功能的框架。

那麼,沒有現代語法和新的功能是否會導致Java的死亡呢?

不,我不這麼認為。

你還記得(或聽說過)EJB 2.0及其Entity Beans嗎?它們很可怕,但是像Rod Johnson和Gavin King這些Java社群的成員卻以Spring和Hibernate等框架回應。

以類似的方式,雖然Java不是一個功能齊全的語言,但是由於有Vavr這樣的庫,我們可以使Java更加功能化。

我的意思是,Java缺少的某些東西,有人會通過建立(框架,工具,規範,無論什麼)來填補這個空白。

那麼Java會不會因為另一種程式語言而死亡呢?

我們以JavaScript為例。畢竟JavaScript正在佔領這個世界,對吧?

我們可以在後臺使用Node.js,類似於移動裝置上的React Native或Ionic,我們甚至不必提及在前端的所有競爭選項。

但是,至少在企業軟體中,我沒有看到JavaScript將要替代Java的趨勢。JavaScript在企業領域中沒有取得成功的框架或工具。它也沒有與Java虛擬機器(JVM)相當的東西,Java虛擬機器(JVM)依然是大型和關鍵任務軟體的首選平臺。

那麼Kotlin呢?

Kotlin語言首次出現在2011年,並且最近Google宣佈在Android上對Kotlin提供一流的支援。Kotlin正在逐漸被知名公司採用,並且不侷限於在這些公司的Android app上(例子)。

除了現代化的功能,Kotlin也是一種開放原始碼的語言,它由一家生產最佳java ide的公司提供支援。

所以,如果你問我的話,我的回答是,是的,Kotlin看起來像是(在遙遠的未來)替代Java的一個很好的候選者。

當然,Java也可能被一種或多種語言所替代。

哪些呢?

我不確定,而且我敢說現在也沒有人知道這個問題的答案。

我所能確定的是,沒有任何語言能夠自主地殺死Java。不借助任何外力,就此而言。

能夠殺死Java的刀子在於它無法滿足市場的需求。

程式語言是構建解決計算機問題的應用程式的工具。如果某程式語言提供抽象、模型、工具和框架,使你可以更有效率或建立比Java更高效的程式碼,你會選擇哪種語言呢?

即使是在Java版本之間,如果讓你在Java 1.4和Java 9之間進行選擇,那麼你會選擇Java 1.4嗎?你會放棄用lambdas或泛型工作的機會嗎?我不這麼認為。你會需要較新版本的功能。

在這些年來,由於已檢查異常、內部類、getter和setter等等方面,Java被認為是一種冗長又笨拙的語言。直到Java 7(有些人認為是Java 8)才開始好轉。

然而,Java 7於2011年釋出,比Java 1.4(2002年釋出)晚了九年。在這個時代,這是不能接受的,並且可能會導致惡性迴圈。

仔細檢視TIOBE頁面上的Java圖表。儘管Java大多數時候位居前三,但有明顯的下降趨勢,表明它正在失去市場份額。這種趨勢在所有語言中都很普遍。最可能的原因是程式語言的數量在不斷增加,應用程式越來越多地被以多種語言編寫。因此,競爭比以往任何時候都要激烈。

如果我們認為其他語言比這種語言更好,那麼它就不再受歡迎,我們也不會將這種語言教給新一代的開發人員。

新的教程、課程和書籍將不會再被創造。

社群中的寶貴成員將被其他技術吸引走。

該語言將不會用於新的環境。

將導致減少語言的流行度。

Mark ReinholdOracle Java平臺組首席架構師,提出的新的六個月釋出計劃,是向前推進Java並邁向未來的重大一步。用他的話說(就特徵驅動的版本):

這種方法可以在早期採用者進行徹底的檢查和測試後,以高水平的質量提供大的新功能。然而,不足之處在於,較小的API、語言和JVM功能只有在大功能準備就緒時才能實現。
這是在本世紀之交前後幾十年時間裡達成的一個可接受的折中方案,當時Java僅與幾個以類似的步伐演進的平臺競爭。然而,如今,Java在與許多以更快速度發展的平臺一起競爭。

最後一段話很多都是事實。

但是,這不僅僅是Oracle的工作。社群也必須保護Java。

怎麼做?

我的一些想法:

  • 不要傲慢(不要認為Java太大而不會失敗)
  • 促進良好的開發實踐方法
  • 繼續釋出超棒的框架、工具等
  • 支援JSR
  • 幫助教學和推廣Java語言
  • 在新環境中嘗試Java

否則,Java如果無法跟上時代的步伐,那麼最終將會被後浪拍死在沙灘上。

譯文連結:http://www.codeceo.com/article/what-will-kill-java.html
英文原文:What Will Kill Java?
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章