Java 會(huì)是未來第一編程語言嗎蚣抗?

一、前言

Java語言長期以來一直霸占多數(shù)熱門編程語言榜單的榜首瓮下,可見這是一個(gè)備受程序員熱捧的編程語言翰铡。

Java語言具有什么魅力?想必這都是已經(jīng)為大多數(shù)人們所熟知的了讽坏,不值得過多贅述锭魔。

而Java語言發(fā)展至今,面對發(fā)展勢頭迅猛又十分簡單易學(xué)的python路呜,以及各種層出不窮的高級語言迷捧,Java程序員的份額已經(jīng)逐步下降,那它是否還能在未來保持領(lǐng)先的優(yōu)勢呢胀葱?

本文就主要從Java語言所不擅長的領(lǐng)域漠秋,以及它在自己的領(lǐng)土內(nèi)受到的對手入手,聊一聊Java語言在未來所面臨的挑戰(zhàn)抵屿。

二庆锦、Java帝國的今天

1、依然霸占TIOBE熱門編程語言的榜首?

這是來自權(quán)威開發(fā)語言排行榜TIOBE的最新數(shù)據(jù)(截止到2020年4月)轧葛,可以看到Java語言依然在語言排行榜霸占第一的位置搂抒!

雖然下面Python小老弟近幾年搭上大數(shù)據(jù)的熱潮艇搀,發(fā)展實(shí)為迅猛,在其他一些排行榜上面甚至超越大哥求晶,但是在TIOBE這樣權(quán)威的排行榜上面焰雕,Python依舊是小老弟!

2芳杏、曾經(jīng)想扼殺Java的微軟宣布加入OpenJDK

這又是一個(gè)IT界的真香現(xiàn)場矩屁,Sun 公司曾以“歧視使用 Java 軟件”為由起訴微軟。而微軟在2001年推出新版操作系統(tǒng) Windows XP 時(shí)蚜锨,故意不安裝 Java 軟件档插,并且推出高仿 Java 的語言 C# 和 .net 框架。

在現(xiàn)在亚再,微軟卻宣布加入OpenJDK郭膛,擁抱Java技術(shù)微軟的宇宙第一 IDE Visual Studio也開始支持Java開發(fā)(通過VS的 Visual Studio Live Share 氛悬,可以關(guān)聯(lián)到VS code上面的Java項(xiàng)目则剃,協(xié)同編程,間接地支持了Java開發(fā))如捅。

3棍现、Oracle發(fā)布開源全棧虛擬機(jī)GraalVM

這是大名鼎鼎的Oracle公司搞出來的開源產(chǎn)品,從官網(wǎng)“Run Programs Faster Anywhere”這句口號和產(chǎn)品的命名GraalVM就可以看出镜遣,GraalVM是升級版的JVM己肮。推薦閱讀:Oracle 發(fā)布了一個(gè)全棧虛擬機(jī) GraalVM。

在GraalVM上面執(zhí)行Java程序的效率更高(得益于其中的JIT編譯器技術(shù))悲关。最牛逼的地方在于谎僻,GraalVM支持多語言應(yīng)用!在GraalVM里面寓辱,多種不同的語言可以互相傳遞數(shù)據(jù)艘绍,支持Java、Python秫筏、Ruby诱鞠、R、Scala这敬、Kotlin航夺,JavaScript等多種語言。

三崔涂、Java帝國受到的挑戰(zhàn)

1敷存、后端服務(wù)器開發(fā)

J2EE作為Java平臺(tái)的重要組成部分,現(xiàn)在廣泛應(yīng)用于Web后臺(tái)服務(wù)器開發(fā)領(lǐng)域,在這個(gè)領(lǐng)域锚烦,Java擁有很多好朋友,比如Spring框架帝雇,Mybatis和Hibernate等涮俄,使得開發(fā)者可以快速構(gòu)建Web應(yīng)用程序。關(guān)注公眾號Java技術(shù)検ⅲ可以閱讀系列Spring/Mybatis教程彻亲。

這是Java帝國一塊重要的領(lǐng)土,但也有很多挑戰(zhàn)吮廉。

下面就是幾個(gè)強(qiáng)大的競爭者苞尝。

1)Python 的競爭

Python語言和Java相比,具有下面這些優(yōu)點(diǎn):

語法簡單直觀宦芦,這意味著開發(fā)速度快

第三方庫強(qiáng)大宙址,可以寫復(fù)雜的邏輯

當(dāng)然Python和Java相比執(zhí)行效率上肯定是更低了,因此主要應(yīng)用于小型的網(wǎng)站后臺(tái)调卑,像阿里這樣的大廠就是擁抱Java后臺(tái)的了抡砂。

2)C++ 的競爭

C++語言和Java相比,具有以下優(yōu)點(diǎn):

執(zhí)行效率高

對內(nèi)存管理自由恬涧,而Java由GC來管理

C++適合大型高性能的服務(wù)器開發(fā)注益。騰訊更多的就是使用C++進(jìn)行開發(fā),這點(diǎn)和阿里不同溯捆。當(dāng)然C++相比Java丑搔,學(xué)習(xí)和開發(fā)的難度更高。

3)node.js 的競爭

node.js的出現(xiàn)大概是前端程序員最高興的事情了提揍,因?yàn)閚ode.js可以讓他們寫的JavaScript代碼運(yùn)行在服務(wù)端啤月,這樣就可以使得前端不用學(xué)Java也能自己寫后臺(tái),擺脫后臺(tái)爸爸的束縛(誤)碳锈。

得益于node.js的事件驅(qū)動(dòng)機(jī)制顽冶,node.js具有很高的并發(fā)性能,可以應(yīng)對大規(guī)模的http請求售碳。但也有缺點(diǎn)强重,因?yàn)閖s只支持單核,因此沒法充分利用服務(wù)器的性能贸人,它不適合CPU密集型應(yīng)用间景。

4)Go 的競爭

Go語言是最近很火的開發(fā)語言,適合用于開發(fā)高性能分布式系統(tǒng)艺智。這是一個(gè)十分強(qiáng)大的競爭對手倘要,被認(rèn)為是未來的服務(wù)端語言。它具有下面這些優(yōu)點(diǎn):

學(xué)習(xí)難度低,容易上手封拧,易于維護(hù)

得益于協(xié)程志鹃,并發(fā)性能優(yōu)越

編譯型語言,執(zhí)行效率高

5)小結(jié)

可以看到泽西,在后端服務(wù)器開發(fā)領(lǐng)域曹铃,Java在不同方面受到多種語言的競爭,輕量小型的服務(wù)器捧杉,人們可以選擇Python陕见,node.js或者PHP。

而大型高性能服務(wù)器味抖,人們可以選擇C++评甜。Go語言就更強(qiáng)大,兼具了比Java更簡單的語法和更高的并發(fā)性能仔涩,背后又是Google爸爸忍坷。因此,在這一領(lǐng)域红柱,Java面臨巨大的競爭壓力承匣。

2、安卓系統(tǒng)應(yīng)用開發(fā)

Java用于安卓應(yīng)用程序開發(fā)已經(jīng)是很成熟的方案了锤悄,目前絕大多數(shù)的安卓應(yīng)用都是用Java寫的韧骗。很多安卓程序員也都是學(xué)Java過來的。但是隨著新語言不斷推出零聚,和安卓應(yīng)用開發(fā)方式的演變袍暴,Java慢慢不再是安卓開發(fā)的首選。比如下面這些語言隶症,就是比較熱門的選擇政模。

1)Kotlin 成為 Android 開發(fā)的首選語言

在2019年的Google I/O 大會(huì)上,Google 官方正式宣布蚂会,Kotlin 編程語言現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選語言淋样。

Java 占據(jù) Android 開發(fā)絕對統(tǒng)治的時(shí)代一去不復(fù)返了。Kotlin 可以編譯成Java字節(jié)碼胁住,可以在JVM上面運(yùn)行趁猴,也可以編譯成JavaScript,在沒有JVM的機(jī)器上運(yùn)行彪见。Kotlin語言比Java更安全儡司,更簡潔,隨著谷歌爸爸推崇余指,將來的發(fā)展前景可期捕犬。

2)Flutter 框架和 Dart 語言

這兩個(gè)都是谷歌最近推出的東西,F(xiàn)lutter是一款用于幫助開發(fā)者在iOS和Android兩個(gè)平臺(tái)構(gòu)建高質(zhì)量原生應(yīng)用的全新移動(dòng)UI框架,Dart是由Google開發(fā)的一門全新的計(jì)算機(jī)編程語言碉碉,而Flutter使用Dart語言開發(fā)柴钻。

Fuchsia是谷歌開發(fā)的一款全新的操作系統(tǒng),F(xiàn)lutter 是 Fuchsia 的開發(fā)框架垢粮。Flutter編寫的代碼可以同時(shí)生成IOS和Android兩個(gè)平臺(tái)下的應(yīng)用程序顿颅,因此Flutter框架逐漸熱門。

3)大前端時(shí)代下的H5應(yīng)用

隨著時(shí)代發(fā)展足丢,現(xiàn)在的前端不再只是寫web網(wǎng)頁,而是逐漸發(fā)展為大前端庇配,web斩跌,Android,IOS通吃捞慌,H5應(yīng)用的流行就是一個(gè)例子耀鸦,大家應(yīng)該都發(fā)現(xiàn),手機(jī)上開始出現(xiàn)快應(yīng)用啸澡,小程序這些使用前端語言進(jìn)行開發(fā)的app袖订,這些應(yīng)用使用HTML,JS和CSS進(jìn)行開發(fā)嗅虏,無需使用Java洛姑。

相比之下,H5應(yīng)用輕量級皮服,啟動(dòng)快楞艾,跨平臺(tái),用戶體驗(yàn)方面也逐漸開始接近原生應(yīng)用的流暢度龄广。因此大有流行的趨勢硫眯。

4)小結(jié)

這一小節(jié)介紹了安卓開發(fā)的現(xiàn)狀,Java作為曾經(jīng)的安卓開發(fā)第一首選語言择同,正在面臨諸如Kotlin語言两入,F(xiàn)lutter和Dart語言等新的開發(fā)語言的挑戰(zhàn),同時(shí)敲才,隨著安卓應(yīng)用開發(fā)逐漸出現(xiàn)H5應(yīng)用的趨勢裹纳,前端語言也逐漸開始來到Java的地盤。

四归斤、Java不擅長的領(lǐng)域

1痊夭、前后端分離和JSP的沒落

JSP是一度火爆的技術(shù),Java曾對其寄予厚望脏里,希望通過JSP技術(shù)占領(lǐng)web應(yīng)用程序領(lǐng)域她我。然而,隨著網(wǎng)頁開發(fā)越來越復(fù)雜,用JSP開發(fā)網(wǎng)頁變得很麻煩番舆,前端和后端混雜在一起酝碳,開發(fā)效率很低。

因此前后端開始分離恨狈,而JSP這種運(yùn)行于服務(wù)器端的網(wǎng)頁程序也就慢慢退出了舞臺(tái)疏哗。關(guān)注公眾號Java技術(shù)棧可以閱讀系列前后端分離教程禾怠。

2返奉、C#和.NET搶占桌面程序地盤

Java曾經(jīng)也被廣泛用于開發(fā)桌面客戶端,其中Swing框架就是一個(gè)有名的GUI框架吗氏。然而芽偏,曾經(jīng)想要扼殺Java的微軟,開發(fā)了C#語言弦讽。C#成為Java的競爭對手污尉,C#編寫運(yùn)行于Windows系統(tǒng)的桌面應(yīng)用程序上具有優(yōu)勢。

Java寫的桌面應(yīng)用往产,雖然可以跨平臺(tái)到處運(yùn)行被碗,這對于程序員當(dāng)然是好事,但是對于用戶來說仿村,在Windows上運(yùn)行個(gè)Java程序還得安裝JRE锐朴,顯得十分麻煩。而且奠宜,Java桌面程序運(yùn)行起來比C#程序慢包颁。因此,C#和.NET逐漸占領(lǐng)了桌面應(yīng)用程序的市場压真。

3娩嚼、C/C++活躍的嵌入式系統(tǒng)領(lǐng)域

Java曾經(jīng)是為了嵌入式系統(tǒng)開發(fā)而設(shè)計(jì)的。然而滴肿,Java程序員并不能直接操作硬件岳悟,并且,Java是相對較重的語言泼差,對內(nèi)存等硬件資源不友好贵少,執(zhí)行效率也相對較低。而在嵌入式系統(tǒng)中堆缘,往往只有很少的內(nèi)存空間滔灶,卻對運(yùn)行效率有很高的要求。因此吼肥,在嵌入式領(lǐng)域录平,更多的是C語言和C++甚至是匯編語言的天下麻车。

4、小結(jié)

這一小節(jié)主要針對Java所不擅長的領(lǐng)域來討論斗这《可以看到,Java最為有名的特性“Write once, run anywhere”表箭,也成了它最大的缺陷:在執(zhí)行效率上做不到卓越赁咙。

因此,在桌面應(yīng)用程序和嵌入式系統(tǒng)兩個(gè)領(lǐng)域Java不是王者免钻。而隨著時(shí)代發(fā)展彼水,前后端分離,JSP也被時(shí)代所拋棄极舔≡痴牵《寫 JSP 的痛點(diǎn),真的非常痛姆怪!》這篇推薦看下。

五澡绩、總結(jié)

綜上所述稽揭,相信大家對于Java語言有了更全面的了解,看到了Java背后的蕓蕓眾生肥卡,各種層出不窮的高級語言和新技術(shù)溪掀,和Java相愛相殺。

Java作為現(xiàn)在世界上最熱門的編程語言步鉴,依然在各個(gè)不同的領(lǐng)域具有重要的地位 揪胃,Java的強(qiáng)大之處在于,它十分全能氛琢,幾乎沒有什么是Java不能做的喊递,但它并不都是做得最好的,我們也可以看到許許多多的競爭者在不同方面比Java語言更加優(yōu)越阳似。

但是骚勘,我寫這篇文章的目的,不在于比較各個(gè)語言的優(yōu)劣撮奏,各種語言都有自己的優(yōu)點(diǎn)和缺點(diǎn)俏讹,我們也不必因?yàn)槟撤N語言更好就著急轉(zhuǎn)語言。

總而言之畜吊,語言只是工具泽疆,各種語言之間,語法的差別都不是特別大玲献,背后的原理也是大同小異殉疼,往往只是多了幾個(gè)新特性梯浪,而語言背后的編程思維才是最重要的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末株依,一起剝皮案震驚了整個(gè)濱河市驱证,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恋腕,老刑警劉巖抹锄,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荠藤,居然都是意外死亡伙单,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門哈肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吻育,“玉大人,你說我怎么就攤上這事淤井〔继郏” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵币狠,是天一觀的道長游两。 經(jīng)常有香客問我,道長漩绵,這世上最難降的妖魔是什么贱案? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮止吐,結(jié)果婚禮上宝踪,老公的妹妹穿的比我還像新娘。我一直安慰自己碍扔,他們只是感情好瘩燥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著不同,像睡著了一般颤芬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上套鹅,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天站蝠,我揣著相機(jī)與錄音,去河邊找鬼卓鹿。 笑死菱魔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吟孙。 我是一名探鬼主播澜倦,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼聚蝶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藻治?” 一聲冷哼從身側(cè)響起桩卵,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤胜嗓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后变过,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泪酱。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洛心,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帕膜,我是刑警寧澤垮刹,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布乌庶,位于F島的核電站瞒大,受9級特大地震影響透敌,放射性物質(zhì)發(fā)生泄漏酗电。R本人自食惡果不足惜背率,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧根资,春花似錦玄帕、人聲如沸桨仿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至操刀,卻和暖如春骨坑,著一層夾襖步出監(jiān)牢的瞬間粉捻,已是汗流浹背肩刃。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工续语, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厦画,地道東北人疮茄。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像根暑,于是被迫代替她去往敵國和親力试。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 一、前言 Java語言長期以來一直霸占多數(shù)熱門編程語言榜單的榜首淳地,可見這是一個(gè)備受程序員熱捧的編程語言怖糊。Java語...
    黃鈺朝閱讀 205評論 0 1
  • 一伍伤、前言 Java語言長期以來一直霸占多數(shù)熱門編程語言榜單的榜首并徘,可見這是一個(gè)備受程序員熱捧的編程語言。Java語...
    編程的程序員閱讀 156評論 0 0
  • 黑色的海島上懸著一輪又大又圓的明月,毫不嫌棄地把溫柔的月色照在這寸草不生的小島上劝评。一個(gè)少年白衣白發(fā)姐直,悠閑自如地倚坐...
    小水Vivian閱讀 3,102評論 1 5
  • 漸變的面目拼圖要我怎么拼百侧? 我是疲乏了還是投降了砰识? 不是不允許自己墜落, 我沒有滴水不進(jìn)的保護(hù)膜佣渴。 就是害怕變得面...
    悶熱當(dāng)乘涼閱讀 4,238評論 0 13
  • 感覺自己有點(diǎn)神經(jīng)衰弱辫狼,總是覺得手機(jī)響了;屋外有人走過辛润;每次媽媽不聲不響的進(jìn)房間突然跟我說話膨处,我都會(huì)被嚇得半死!一整...
    章魚的擁抱閱讀 2,169評論 4 5