自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編程語言之爭,誰將會殺死Java?

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

英文原文:What Will Kill Java?

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

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

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

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

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

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

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

  最終這結(jié)局也將降臨到 Java 頭上,那么誰會殺死它?

  讓我們來分析選項。

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

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

  此外,在 Java 社區(qū)中很多人采用的良好實踐,比如設(shè)計模式和 TDD,有助于我們制作更好的軟件。

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

  Java 是面向?qū)ο蟮恼Z言。如果其他(新的)范式接管了怎么辦?如果面向?qū)ο蟮木幊套兊眠^時了怎么辦?

  好吧,這可能性并不大——基本原理已經(jīng)有很長一段時間沒有真正改變過了。諸如結(jié)構(gòu)化,功能性和面向?qū)ο缶幊痰闹卮髣?chuàng)新發(fā)生在 20 世紀 50 年代,60 年代以及甚至 70 年代,但從那以后,沒有什么舉足輕重的事發(fā)生。

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

  那么,沒有現(xiàn)代語法和新的功能是否會導致 Java 的死亡呢?

  不,我不這么認為。

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

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

  我的意思是,Java 缺少的某些東西,有人會通過創(chuàng)建(框架,工具,規(guī)范,無論什么)來填補這個空白。

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

  我們以 JavaScript 為例。畢竟 JavaScript 正在占領(lǐng)這個世界,對吧?

  我們可以在后臺使用 Node.js,類似于移動設(shè)備上的 React Native 或 Ionic,我們甚至不必提及在前端的所有競爭選項。

  但是,至少在企業(yè)軟件中,我沒有看到 JavaScript 將要替代 Java 的趨勢。JavaScript 在企業(yè)領(lǐng)域中沒有取得成功的框架或工具。它也沒有與 Java 虛擬機(JVM)相當?shù)臇|西,Java 虛擬機(JVM)依然是大型和關(guān)鍵任務軟件的***平臺。

  那么 Kotlin 呢?

  Kotlin 語言***出現(xiàn)在 2011 年,并且最近 Google 宣布在 Android 上對 Kotlin 提供***的支持。Kotlin 正在逐漸被知名公司采用,并且不局限于在這些公司的 Android app 上(例子)。

  除了現(xiàn)代化的功能,Kotlin 也是一種開放源代碼的語言,它由一家生產(chǎn)*** java ide 的公司提供支持。

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

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

  哪些呢?

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

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

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

  編程語言是構(gòu)建解決計算機問題的應用程序的工具。如果某編程語言提供抽象、模型、工具和框架,使你可以更有效率或創(chuàng)建比 Java 更高效的代碼,你會選擇哪種語言呢?

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

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

  然而,Java 7 于 2011 年發(fā)布,比 Java 1.4(2002 年發(fā)布)晚了九年。在這個時代,這是不能接受的,并且可能會導致惡性循環(huán)。

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

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

  新的教程、課程和書籍將不會再被創(chuàng)造。

  社區(qū)中的寶貴成員將被其他技術(shù)吸引走。

  該語言將不會用于新的環(huán)境。

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

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

這種方法可以在早期采用者進行徹底的檢查和測試后,以高水平的質(zhì)量提供大的新功能。然而,不足之處在于,較小的 API、語言和 JVM 功能只有在大功能準備就緒時才能實現(xiàn)。

這是在本世紀之交前后幾十年時間里達成的一個可接受的折中方案,當時 Java 僅與幾個以類似的步伐演進的平臺競爭。然而,如今,Java 在與許多以更快速度發(fā)展的平臺一起競爭。

  ***一段話很多都是事實。

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

  怎么做?

  我的一些想法:

  • 不要傲慢(不要認為 Java 太大而不會失?。?/li>
  • 促進良好的開發(fā)實踐方法
  • 繼續(xù)發(fā)布超棒的框架、工具等
  • 支持 JSR
  • 幫助教學和推廣 Java 語言
  • 在新環(huán)境中嘗試 Java

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

  -

  譯文鏈接:http://www.codeceo.com/article/what-will-kill-java.html

  翻譯作者:碼農(nóng)網(wǎng) – 小峰

責任編輯:張燕妮 來源: 博客園
相關(guān)推薦

2020-09-08 17:09:49

編程語言后端開發(fā)

2012-08-13 14:13:46

2012-08-07 09:29:09

程序員編程

2019-07-30 07:30:56

編程語言PythonJava

2012-02-13 10:03:31

編程開發(fā)

2013-03-25 09:30:10

SDN網(wǎng)絡虛擬化OpenFlow

2023-10-09 07:01:06

Nginx反向代理Envoy

2015-02-09 09:51:06

2009-02-18 09:11:22

編程語言排行榜Tiobe

2021-02-07 09:18:07

JavaScript 前端編程語言

2013-12-27 09:00:27

編程語言

2009-06-14 21:54:37

動態(tài)語言Java腳本API

2022-12-26 09:00:07

2017-11-27 11:08:33

編程C語言代碼

2020-10-14 10:15:32

GoogleChrome分拆

2020-12-31 09:06:44

Go語言Reflect

2017-06-14 09:37:05

R語言Apriori算法

2018-08-01 15:10:02

GolangPython語言

2021-10-23 06:42:14

Go語言接口

2021-10-03 22:18:14

Go語言整數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號