誕生于1991年的Java如今已經(jīng)成為世界范圍內(nèi)應(yīng)用最為廣泛的編程語(yǔ)言之一津畸。在今天的文章中,我們將共同了解Java所擁有的七大關(guān)鍵新特性捐凭,展望其如何在未來(lái)的超級(jí)計(jì)算淑廊、大數(shù)據(jù)以及物聯(lián)網(wǎng)等領(lǐng)域繼續(xù)發(fā)揮核心作用奴潘。
Java自1991年誕生于Sun Microsystems公司(現(xiàn)已被甲骨文公司收購(gòu))以來(lái),由James Gosling影钉、Mike Sheridan以及Patrick Naughton共同設(shè)計(jì)而成的Java語(yǔ)言已經(jīng)成為眾多企業(yè)級(jí)應(yīng)用程序方案當(dāng)中的核心組成部分画髓。而在近25年的發(fā)展演變之后,Java還能否在我們的未來(lái)開(kāi)發(fā)規(guī)劃當(dāng)中繼續(xù)占據(jù)一席之地呢平委?
Java的主要優(yōu)勢(shì)在于其作出的WORA:即一次編寫(xiě)(Write Once)奈虾、隨處運(yùn)行(Run Anywhere)。簡(jiǎn)單來(lái)講廉赔,這意味著開(kāi)發(fā)團(tuán)隊(duì)能夠利用Java編寫(xiě)一款應(yīng)用程序肉微,并將其編譯為可執(zhí)行形式,而后將其運(yùn)行在任何支持Java的平臺(tái)之上蜡塌。這顯然能夠極大提高編程工作的實(shí)際效率碉纳,但實(shí)現(xiàn)這樣的效率也確實(shí)需要我們付出一點(diǎn)成本。
此類主要成本之一就是在訪問(wèn)低級(jí)機(jī)器硬件時(shí)馏艾,WORA的起效會(huì)帶來(lái)一系列限制條件劳曹。通用兼容性需要抽象機(jī)制的支持,而抽象機(jī)制會(huì)給應(yīng)用性能造成一定影響琅摩。正因?yàn)镴ava與硬件之間存在一定差距铁孵,因此C++才得以繼續(xù)充當(dāng)主要開(kāi)發(fā)語(yǔ)言之一,且往往與Java配合起效房资。不過(guò)這還僅僅是成本的一種表現(xiàn)库菲。其它更為高昂的成本甚至有可能阻礙Java的未來(lái)發(fā)展。
Java應(yīng)用程序通常運(yùn)行在瀏覽器窗口當(dāng)中志膀,對(duì)瀏覽器界面的熟知正是很多企業(yè)開(kāi)發(fā)人員樂(lè)于利用Java創(chuàng)建應(yīng)用程序的主要原因之一熙宇。不過(guò)問(wèn)題在于,Java是通過(guò)插件架構(gòu)接入瀏覽器并成為其組成部分的溉浙,但這一架構(gòu)目前正逐漸消失烫止。新的微軟Edge瀏覽器不允許使用任何插件。Chrome瀏覽器目前也對(duì)插件作出了諸多限制戳稽。其它瀏覽器似乎也會(huì)遵循同樣的轉(zhuǎn)變思路馆蠕。那么這是否意味著Java將因此而逐漸淡出我們的視野?
不惊奇,Java并不會(huì)就此終結(jié)互躬。Java應(yīng)用程序仍將繼續(xù)以獨(dú)立而特別的方式保持運(yùn)轉(zhuǎn)。大量現(xiàn)有Java代碼的存在意味著重視成本問(wèn)題的開(kāi)發(fā)人員(及開(kāi)發(fā)經(jīng)理)將在長(zhǎng)遠(yuǎn)的未來(lái)繼續(xù)使用Java颂郎。有鑒于此吼渡,我們需要了解與Java相關(guān)的哪些事實(shí)?
軟件開(kāi)發(fā)與編程語(yǔ)言本身一直在不斷發(fā)展乓序。Java當(dāng)然也投身于這場(chǎng)經(jīng)年累月的持續(xù)演進(jìn)寺酪。下面我們就來(lái)一同了解Java的幾大相關(guān)重點(diǎn)坎背,看看其發(fā)展方向會(huì)給我們的未來(lái)開(kāi)發(fā)帶來(lái)怎樣的影響。
Java已不再局限于瀏覽器
Java主要作為基于瀏覽器的應(yīng)用程序開(kāi)發(fā)語(yǔ)言的歷史角色已經(jīng)發(fā)生了轉(zhuǎn)變寄雀。在步入Windows 10時(shí)代之后得滤,我們將迎來(lái)新的Edge瀏覽器并在這里徹底告別Java——因?yàn)檫@款新型瀏覽器不再支持插件機(jī)制。
現(xiàn)在盒犹,向大家分享一點(diǎn)小秘密:如果您出于某種考量而需要繼續(xù)使用基于瀏覽器的Java應(yīng)用懂更,完全沒(méi)問(wèn)題。Windows 10當(dāng)中同時(shí)提供IE 11瀏覽器急膀,這套傳統(tǒng)瀏覽方案樂(lè)于迎接包括Java在內(nèi)的各種插件方案膜蛔。這雖然也意味著大家仍然需要重視由插件引發(fā)的安全問(wèn)題,但至少我們多了一種選擇脖阵。
不過(guò)面向未來(lái),大家應(yīng)當(dāng)制定計(jì)劃墅茉,逐步將自己的Java應(yīng)用程序轉(zhuǎn)移到桌面平臺(tái)之上命黔。它們將在這里迎來(lái)新的發(fā)展空間,而用戶們也將逐漸適應(yīng)在瀏覽器窗口之外與Java應(yīng)用順暢協(xié)作就斤。
JavaScript將一直存在
Java與JavaScript是完全不同的兩種事物:Java是一款由Sun Microsystems公司開(kāi)發(fā)的編譯編程語(yǔ)言悍募,而JavaScript則是由Netscape公司推出的解釋型腳本語(yǔ)言。Java應(yīng)用程序可以運(yùn)行在瀏覽器當(dāng)中(利用插件架構(gòu))洋机,同時(shí)亦可以獨(dú)立程序形式存在坠宴。而JavaScript則必須立足于瀏覽器窗口之內(nèi)——單憑自身并不能夠獨(dú)立運(yùn)行。
著眼于未來(lái)绷旗,JavaScript仍將在瀏覽器領(lǐng)導(dǎo)保持至關(guān)重要的地位喜鼓。它能夠與HTML 5攜手合作,共同為用戶提供豐富的交互式瀏覽器使用體驗(yàn)衔肢。如果您是一位擁有豐富JavaScript使用經(jīng)驗(yàn)的開(kāi)發(fā)人員庄岖,那么您的發(fā)展前景可謂相當(dāng)光明。
如果您是一位開(kāi)發(fā)工作經(jīng)理角骤,那么在規(guī)劃當(dāng)中利用HTML 5以及JavaScript進(jìn)行應(yīng)用開(kāi)發(fā)也相當(dāng)明智隅忿。二者相結(jié)合能夠?yàn)槠髽I(yè)Web以及移動(dòng)Web應(yīng)用提供非常理想的支撐,從而應(yīng)對(duì)未來(lái)很長(zhǎng)一段時(shí)間內(nèi)的實(shí)際需求邦尊。
Java陣營(yíng)的各類組件正逐漸匯聚
甲骨文公司正持續(xù)開(kāi)發(fā)Java項(xiàng)目背桐,并計(jì)劃于2016年年內(nèi)推出Java 9版本。其宏觀圖景是將Jigsaw項(xiàng)目正式交付給開(kāi)發(fā)人員蝉揍,并使Java具備更出色的模塊化特性链峭。這意味著屆時(shí)將有多種“接入并起效”架構(gòu)供我們選擇,從而進(jìn)一步拓展Java的傳統(tǒng)編程模式又沾。
開(kāi)發(fā)人員已經(jīng)為Jigsaw項(xiàng)目制定了一系列發(fā)展目標(biāo)熏版,我們可以將其歸結(jié)為兩大門類:性能與可擴(kuò)展能力纷责。模塊的出現(xiàn)能夠?qū)Y(jié)構(gòu)進(jìn)行進(jìn)一步簡(jiǎn)化,而總體來(lái)講結(jié)構(gòu)精簡(jiǎn)就代表著代碼規(guī)模更小撼短、執(zhí)行速度更快再膳。輕松將模塊納入及移出整體應(yīng)用程序的能力會(huì)使Java代碼得以在不同規(guī)模的各類平臺(tái)之上順暢運(yùn)作,從規(guī)模巨大的工程技術(shù)工作站到小巧的嵌入式物聯(lián)網(wǎng)處理器皆涵蓋于其中曲横。
Java將成為物聯(lián)網(wǎng)的溫床
在剛剛誕生之時(shí)喂柒,Java原本是作為我們?nèi)缃穹Q為物聯(lián)網(wǎng)裝置上應(yīng)用程序的編程語(yǔ)言存在。該語(yǔ)言的早期開(kāi)發(fā)者們希望針對(duì)互聯(lián)網(wǎng)電視機(jī)打造一款編程語(yǔ)言禾嫉。不過(guò)問(wèn)題在于灾杰,1991年時(shí)的嵌入式處理器根本無(wú)法同時(shí)支持Java框架及其應(yīng)用程序。時(shí)至今日熙参,情況已經(jīng)發(fā)生了徹底轉(zhuǎn)變艳吠。
Java Platform, Micro Edition(簡(jiǎn)稱JPME)為甲骨文公司針對(duì)嵌入式及移動(dòng)平臺(tái)所打造的解決方案孽椰,同時(shí)面向電視機(jī)以及媒體中心等特殊平臺(tái)昭娩。在物聯(lián)網(wǎng)領(lǐng)域當(dāng)中,“一次編寫(xiě)黍匾,隨處起效”原則的存在帶來(lái)了顯著的成本節(jié)約效果栏渺。更加值得一提的是,企業(yè)能夠借此引導(dǎo)開(kāi)發(fā)人員打造出商用Java編程成果锐涯,并將其分配至物聯(lián)網(wǎng)任務(wù)當(dāng)中磕诊。
將上述能力匯總起來(lái),Java語(yǔ)言將成為成功的企業(yè)級(jí)物聯(lián)網(wǎng)發(fā)展戰(zhàn)略當(dāng)中不可或缺的重要一環(huán)纹腌。
Java向移動(dòng)領(lǐng)域進(jìn)發(fā)
讓Java在物聯(lián)網(wǎng)領(lǐng)域得以大顯示身手的Java Platform霎终,Micro Edition同時(shí)也能夠在移動(dòng)應(yīng)用程序開(kāi)發(fā)工作中扮演重要角色。必須強(qiáng)調(diào)的是升薯,Java在iOS領(lǐng)域面臨著巨大的競(jìng)爭(zhēng)壓力神僵。蘋(píng)果公司的Swift語(yǔ)言已經(jīng)成為希望讓自己的應(yīng)用成果順利進(jìn)入App Store貨架的開(kāi)發(fā)者們的首選編程環(huán)境。不過(guò)如果大家的主要目標(biāo)市場(chǎng)為Android覆劈,那么Java仍然是一款極為強(qiáng)大的開(kāi)發(fā)工具保礼,同時(shí)也能為我們帶來(lái)理想的跨平臺(tái)能力。
Java能夠支撐超級(jí)計(jì)算機(jī)設(shè)備
當(dāng)我們思考適用于高性能計(jì)算(簡(jiǎn)稱HPC)的編程語(yǔ)言時(shí)责语,首先想到的幾乎不可能是Java炮障。但實(shí)際情況是,世界上相當(dāng)一部分高性能計(jì)算項(xiàng)目都在利用Java負(fù)責(zé)背后的流體分析(或者天文觀測(cè))任務(wù)坤候。Java的基礎(chǔ)架構(gòu)看起來(lái)并不適用于高性能計(jì)算胁赢,但它所具備的多種特性卻足以保證其在高性能應(yīng)用程序當(dāng)中占據(jù)一席之地。
Java當(dāng)中的一大關(guān)鍵性高性能計(jì)算能力在于其原生支持多線程執(zhí)行機(jī)制白筹。另一大要點(diǎn)則在于智末,Java允許開(kāi)發(fā)人員輕松編寫(xiě)出網(wǎng)絡(luò)應(yīng)用程序谅摄。雖然Java難于使用多核心處理器的弊端在一定程度上抵消了上述優(yōu)勢(shì),不過(guò)出于某些特殊高性能計(jì)算目標(biāo)的科學(xué)項(xiàng)目仍然樂(lè)于將Java作為其中的重要組成部分系馆。
沒(méi)錯(cuò)送漠,Java不太可能在高性能計(jì)算領(lǐng)域徹底取代C++,但其肯定要比早已老朽不堪的FORTRAN更具活力由蘑。如果您的編程團(tuán)隊(duì)中包含多位剛剛畢業(yè)且熟知Java開(kāi)發(fā)知識(shí)的新人闽寡,那么它絕對(duì)是您不可錯(cuò)過(guò)的首選編程語(yǔ)言。
Java尼酿,大數(shù)據(jù)技術(shù)領(lǐng)域的一匹黑馬
等等爷狈,Java能夠在大數(shù)據(jù)領(lǐng)域有所建樹(shù)?沒(méi)錯(cuò)裳擎,真是這樣涎永,因?yàn)樗軌蛞袁F(xiàn)代高性能計(jì)算(簡(jiǎn)稱HPC)體系為核心,將多數(shù)強(qiáng)大的大數(shù)據(jù)組件結(jié)合在一起鹿响。就在去年羡微,IBM公司展示了一套實(shí)驗(yàn)性項(xiàng)目,其中的一套Hadoop實(shí)例就運(yùn)行在利用Tesla圖形處理單元(即GPU)構(gòu)建的系統(tǒng)當(dāng)中抢野。這是一套極為強(qiáng)大的組合,能夠輕松完成大多數(shù)極為復(fù)雜的數(shù)據(jù)集分析任務(wù)各墨。
GPU已經(jīng)成為目前大多數(shù)速度最快的超級(jí)計(jì)算設(shè)備所不可或缺的處理器選項(xiàng)指孤。而Java的“一次編寫(xiě),隨處起效”架構(gòu)意味著技術(shù)團(tuán)隊(duì)能夠在工作站上開(kāi)發(fā)自己的軟件贬堵,而后將其移植到這些強(qiáng)勁的系統(tǒng)當(dāng)中恃轩。當(dāng)這些系統(tǒng)運(yùn)行有Hadoop等大數(shù)據(jù)數(shù)據(jù)庫(kù)管理工具時(shí),其結(jié)果絕對(duì)令人印象深刻黎做。
在這里我分享一些學(xué)習(xí)大數(shù)據(jù)的教程給真心想學(xué)習(xí)大數(shù)據(jù)的朋友叉跛,你可以加我的群:724693112或者微信:wxid_j9y4t84ezzcr22直接找我聊領(lǐng)取,希望能幫到真正想學(xué)習(xí)蒸殿,進(jìn)步的人筷厘,吸收自己想要的知識(shí)點(diǎn),充實(shí)自己宏所。