<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java 會(huì)是未來(lái)第一編程語(yǔ)言嗎?

          共 4186字,需瀏覽 9分鐘

           ·

          2020-10-31 03:19

          Java技術(shù)棧

          www.javastack.cn

          關(guān)注閱讀更多優(yōu)質(zhì)文章



          本文作者:Yuchao Huang

          www.cnblogs.com/misterchaos/archive/2020/04/06/12650643.html


          一、前言



          Java語(yǔ)言長(zhǎng)期以來(lái)一直霸占多數(shù)熱門編程語(yǔ)言榜單的榜首,可見(jiàn)這是一個(gè)備受程序員熱捧的編程語(yǔ)言。

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

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

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



          二、Java帝國(guó)的今天



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



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

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

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



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

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


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


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

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



          三、Java帝國(guó)受到的挑戰(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)注公眾號(hào)Java技術(shù)棧可以閱讀系列Spring/Mybatis教程。

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

          下面就是幾個(gè)強(qiáng)大的競(jìng)爭(zhēng)者。

          1)Python 的競(jìng)爭(zhēng)


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


          • 語(yǔ)法簡(jiǎn)單直觀,這意味著開發(fā)速度快
          • 第三方庫(kù)強(qiáng)大,可以寫復(fù)雜的邏輯

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


          2)C++ 的競(jìng)爭(zhēng)


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


          • 執(zhí)行效率高
          • 對(duì)內(nèi)存管理自由,而Java由GC來(lái)管理

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

          3)node.js 的競(jìng)爭(zhēng)


          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)對(duì)大規(guī)模的http請(qǐng)求。但也有缺點(diǎn),因?yàn)閖s只支持單核,因此沒(méi)法充分利用服務(wù)器的性能,它不適合CPU密集型應(yīng)用。

          4)Go 的競(jìng)爭(zhēng)

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


          • 學(xué)習(xí)難度低,容易上手,易于維護(hù)
          • 得益于協(xié)程,并發(fā)性能優(yōu)越
          • 編譯型語(yǔ)言,執(zhí)行效率高


          5)小結(jié)


          可以看到,在后端服務(wù)器開發(fā)領(lǐng)域,Java在不同方面受到多種語(yǔ)言的競(jìng)爭(zhēng),輕量小型的服務(wù)器,人們可以選擇Python,node.js或者PHP。

          而大型高性能服務(wù)器,人們可以選擇C++。Go語(yǔ)言就更強(qiáng)大,兼具了比Java更簡(jiǎn)單的語(yǔ)法和更高的并發(fā)性能,背后又是Google爸爸。因此,在這一領(lǐng)域,Java面臨巨大的競(jìng)爭(zhēng)壓力。


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


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

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

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

          Java 占據(jù) Android 開發(fā)絕對(duì)統(tǒng)治的時(shí)代一去不復(fù)返了。Kotlin 可以編譯成Java字節(jié)碼,可以在JVM上面運(yùn)行,也可以編譯成JavaScript,在沒(méi)有JVM的機(jī)器上運(yùn)行。Kotlin語(yǔ)言比Java更安全,更簡(jiǎn)潔,隨著谷歌爸爸推崇,將來(lái)的發(fā)展前景可期。


          2)Flutter 框架和 Dart 語(yǔ)言


          這兩個(gè)都是谷歌最近推出的東西,F(xiàn)lutter是一款用于幫助開發(fā)者在iOS和Android兩個(gè)平臺(tái)構(gòu)建高質(zhì)量原生應(yīng)用的全新移動(dòng)UI框架,Dart是由Google開發(fā)的一門全新的計(jì)算機(jī)編程語(yǔ)言,而Flutter使用Dart語(yǔ)言開發(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)頁(yè),而是逐漸發(fā)展為大前端,web,Android,IOS通吃,H5應(yīng)用的流行就是一個(gè)例子,大家應(yīng)該都發(fā)現(xiàn),手機(jī)上開始出現(xiàn)快應(yīng)用,小程序這些使用前端語(yǔ)言進(jìn)行開發(fā)的app,這些應(yīng)用使用HTML,JS和CSS進(jìn)行開發(fā),無(wú)需使用Java。

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


          4)小結(jié)


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



          四、Java不擅長(zhǎng)的領(lǐng)域



          1、前后端分離和JSP的沒(méi)落

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

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


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


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

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


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


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


          4、小結(jié)


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

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



          五、總結(jié)



          綜上所述,相信大家對(duì)于Java語(yǔ)言有了更全面的了解,看到了Java背后的蕓蕓眾生,各種層出不窮的高級(jí)語(yǔ)言和新技術(shù),和Java相愛(ài)相殺。

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

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

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






          關(guān)注Java技術(shù)棧看更多干貨



          戳原文,獲取精選面試題!
          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩中AV无码毛片 | 免费看日逼视频情侣 | 成人六区| 亚洲国产在人播放首页 | 天堂一区二区三区 |