鏈接:cnblogs.com/misterchaos/archive/2020/04/06/12650643.html 一、前言Java語言長期以來一直霸占多數(shù)熱門編程語言榜單的榜首,可見這是一個備受程序員熱捧的編程語言。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帝國的今天2.1 依然霸占TIOBE熱門編程語言的榜首2.2 曾經(jīng)想扼殺Java的微軟宣布加入OpenJDK2.3 Oracle發(fā)布開源全棧虛擬機GraalVM三、Java帝國受到的挑戰(zhàn)3.1 后端服務(wù)器開發(fā)J2EE作為Java平臺的重要組成部分,現(xiàn)在廣泛應(yīng)用于Web后臺服務(wù)器開發(fā)領(lǐng)域,在這個領(lǐng)域,Java擁有很多好朋友,比如Spring框架,Mybatis和Hibernate等,使得開發(fā)者可以快速構(gòu)建Web應(yīng)用程序。這是Java帝國一塊重要的領(lǐng)土,但也有很多挑戰(zhàn)。下面就是幾個強大的競爭者。 3.1.1 Python 的競爭
當然Python和Java相比執(zhí)行效率上肯定是更低了,因此主要應(yīng)用于小型的網(wǎng)站后臺,像阿里這樣的大廠就是擁抱Java后臺的了。 3.1.2 C++ 的競爭C++語言和Java相比,具有以下優(yōu)點:
C++適合大型高性能的服務(wù)器開發(fā)。騰訊更多的就是使用C++進行開發(fā),這點和阿里不同。當然C++相比Java,學(xué)習(xí)和開發(fā)的難度更高。 3.1.3 node.js 的競爭node.js的出現(xiàn)大概是前端程序員最高興的事情了,因為node.js可以讓他們寫的JavaScript代碼運行在服務(wù)端,這樣就可以使得前端不用學(xué)Java也能自己寫后臺,擺脫后臺爸爸的束縛(誤)。得益于node.js的事件驅(qū)動機制,node.js具有很高的并發(fā)性能,可以應(yīng)對大規(guī)模的http請求。但也有缺點,因為js只支持單核,因此沒法充分利用服務(wù)器的性能,它不適合CPU密集型應(yīng)用。 Go語言是最近很火的開發(fā)語言,適合用于開發(fā)高性能分布式系統(tǒng)。這是一個十分強大的競爭對手,被認為是未來的服務(wù)端語言。它具有下面這些優(yōu)點:
3.1.5 小結(jié)可以看到,在后端服務(wù)器開發(fā)領(lǐng)域,Java在不同方面受到多種語言的競爭,輕量小型的服務(wù)器,人們可以選擇Python,node.js或者PHP。而大型高性能服務(wù)器,人們可以選擇C++。Go語言就更強大,兼具了比Java更簡單的語法和更高的并發(fā)性能,背后又是Google爸爸。因此,在這一領(lǐng)域,Java面臨巨大的競爭壓力。 3.2 安卓系統(tǒng)應(yīng)用開發(fā)Java用于安卓應(yīng)用程序開發(fā)已經(jīng)是很成熟的方案了,目前絕大多數(shù)的安卓應(yīng)用都是用Java寫的。很多安卓程序員也都是學(xué)Java過來的。但是隨著新語言不斷推出,和安卓應(yīng)用開發(fā)方式的演變,Java慢慢不再是安卓開發(fā)的首選。比如下面這些語言,就是比較熱門的選擇。 3.2.1 Kotlin 成為 Android 開發(fā)的首選語言 3.2.2 Flutter 框架和 Dart 語言3.2.3 大前端時代下的H5應(yīng)用隨著時代發(fā)展,現(xiàn)在的前端不再只是寫web網(wǎng)頁,而是逐漸發(fā)展為大前端,web,Android,IOS通吃,H5應(yīng)用的流行就是一個例子,大家應(yīng)該都發(fā)現(xiàn),手機上開始出現(xiàn)快應(yīng)用,小程序這些使用前端語言進行開發(fā)的app,這些應(yīng)用使用HTML,JS和CSS進行開發(fā),無需使用Java。相比之下,H5應(yīng)用輕量級,啟動快,跨平臺,用戶體驗方面也逐漸開始接近原生應(yīng)用的流暢度。因此大有流行的趨勢。 3.2.4 小結(jié)這一小節(jié)介紹了安卓開發(fā)的現(xiàn)狀,Java作為曾經(jīng)的安卓開發(fā)第一首選語言,正在面臨諸如Kotlin語言,F(xiàn)lutter和Dart語言等新的開發(fā)語言的挑戰(zhàn),同時,隨著安卓應(yīng)用開發(fā)逐漸出現(xiàn)H5應(yīng)用的趨勢,前端語言也逐漸開始來到Java的地盤。 四、Java不擅長的領(lǐng)域4.1 前后端分離和JSP的沒落Java曾經(jīng)也被廣泛用于開發(fā)桌面客戶端,其中Swing框架就是一個有名的GUI框架。然而,曾經(jīng)想要扼殺Java的微軟,開發(fā)了C#語言。C#成為Java的競爭對手,C#編寫運行于Windows系統(tǒng)的桌面應(yīng)用程序上具有優(yōu)勢,Java寫的桌面應(yīng)用,雖然可以跨平臺到處運行,這對于程序員當然是好事,但是對于用戶來說,在Windows上運行個Java程序還得安裝JRE,顯得十分麻煩。而且,Java桌面程序運行起來比C#程序慢。因此,C#和.NET逐漸占領(lǐng)了桌面應(yīng)用程序的市場。 4.3 C/C++活躍的嵌入式系統(tǒng)領(lǐng)域 Java曾經(jīng)是為了嵌入式系統(tǒng)開發(fā)而設(shè)計的。然而,Java程序員并不能直接操作硬件,并且,Java是相對較重的語言,對內(nèi)存等硬件資源不友好,執(zhí)行效率也相對較低。而在嵌入式系統(tǒng)中,往往只有很少的內(nèi)存空間,卻對運行效率有很高的要求。因此,在嵌入式領(lǐng)域,更多的是C語言和C++甚至是匯編語言的天下。 4.4 小結(jié) 五、總結(jié)六、參考資料
|
|