在未來, 誰將會殺死Java?

來源:互聯網
上載者:User

標籤:padding   loaded   nal   除了   美的   java語言   alt   jpg   失敗   

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 Reinhold,Oracle Java平台組首席架構師,提出的新的六個月發布計劃,是向前推進Java並邁向未來的重大一步。用他的話說(就特徵驅動的版本):

 

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

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

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

怎麼做?

我的一些想法:

  • 不要傲慢(不要認為Java太大而不會失敗)

  • 促進良好的開發實踐方法

  • 繼續發布超棒的架構、工具等

  • 支援JSR

  • 協助教學和推廣Java語言

  • 在新環境中嘗試Java

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

在未來, 誰將會殺死Java?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.