1. 程式人生 > >作為最流行的編程語言之一,誰又將會殺死 Java?

作為最流行的編程語言之一,誰又將會殺死 Java?

led 一段時間 能夠 快速 acl 發展 發生 robert 好的

Java最流行的編程語言之一

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

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

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

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

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

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

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

可能殺死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大多數時候位居前三,但有明顯的下降趨勢,表明它正在失去市場份額。這種趨勢在所有語言中都很普遍。最可能的原因是編程語言的數量在不斷增加,應用程序越來越多地被以多種語言編寫。因此,競爭比以往任何時候都要激烈。

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

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

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

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

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

如何減緩Java的衰退

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

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

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

怎麽做?

我的一些想法:

不要傲慢(不要認為Java太大而不會失敗)
促進良好的開發實踐方法
繼續發布超棒的框架、工具等
支持JSR
幫助教學和推廣Java語言
在新環境中嘗試Java
否則,Java如果無法跟上時代的步伐,那麽最終將會被後浪拍死在沙灘上。

作為最流行的編程語言之一,誰又將會殺死 Java?