誕生于1991年的Java如今已經(jīng)成為世界范圍內(nèi)應(yīng)用最為廣泛的編程語言之一。在今天的文章中,我們將共同了解Java所擁有的七大關(guān)鍵新特性,展望其如何在未來的超級計算、大數(shù)據(jù)以及物聯(lián)網(wǎng)等領(lǐng)域繼續(xù)發(fā)揮核心作用。
Java的主要優(yōu)勢在于其作出的WORA:即一次編寫(Write Once)、隨處運行(Run Anywhere)。簡單來講,這意味著開發(fā)團(tuán)隊能夠利用Java編寫一款應(yīng)用程序,并將其編譯為可執(zhí)行形式,而后將其運行在任何支持Java的平臺之上。這顯然能夠極大提高編程工作的實際效率,但實現(xiàn)這樣的效率也確實需要我們付出一點成本。
此類主要成本之一就是在訪問低級機(jī)器硬件時,WORA的起效會帶來一系列限制條件。通用兼容性需要抽象機(jī)制的支持,而抽象機(jī)制會給應(yīng)用性能造成一定影響。正因為Java與硬件之間存在一定差距,因此C++才得以繼續(xù)充當(dāng)主要開發(fā)語言之一,且往往與Java配合起效。不過這還僅僅是成本的一種表現(xiàn)。其它更為高昂的成本甚至有可能阻礙Java的未來發(fā)展。
Java應(yīng)用程序通常運行在瀏覽器窗口當(dāng)中,對瀏覽器界面的熟知正是很多企業(yè)開發(fā)人員樂于利用Java創(chuàng)建應(yīng)用程序的主要原因之一。不過問題在于,Java是通過插件架構(gòu)接入瀏覽器并成為其組成部分的,但這一架構(gòu)目前正逐漸消失。新的微軟Edge瀏覽器不允許使用任何插件。Chrome瀏覽器目前也對插件作出了諸多限制。其它瀏覽器似乎也會遵循同樣的轉(zhuǎn)變思路。那么這是否意味著Java將因此而逐漸淡出我們的視野?
不,Java并不會就此終結(jié)。Java應(yīng)用程序仍將繼續(xù)以獨立而特別的方式保持運轉(zhuǎn)。大量現(xiàn)有Java代碼的存在意味著重視成本問題的開發(fā)人員(及開發(fā)經(jīng)理)將在長遠(yuǎn)的未來繼續(xù)使用Java。有鑒于此,我們需要了解與Java相關(guān)的哪些事實?
軟件開發(fā)與編程語言本身一直在不斷發(fā)展。Java當(dāng)然也投身于這場經(jīng)年累月的持續(xù)演進(jìn)。下面我們就來一同了解Java的幾大相關(guān)重點,看看其發(fā)展方向會給我們的未來開發(fā)帶來怎樣的影響。
Java已不再局限于瀏覽器

Java。作為與萬維網(wǎng)共同發(fā)展成長的編程工具,幾乎沒有任何一種其它語言能夠像它這樣從始至終對Web應(yīng)用程序作出定義。自1991年誕生于Sun Microsystems公司(現(xiàn)已被甲骨文公司收購)以來,由James Gosling、Mike Sheridan以及Patrick Naughton共同設(shè)計而成的Java語言已經(jīng)成為眾多企業(yè)級應(yīng)用程序方案當(dāng)中的核心組成部分。而在近25年的發(fā)展演變之后,Java還能否在我們的未來開發(fā)規(guī)劃當(dāng)中繼續(xù)占據(jù)一席之地呢?
Java主要作為基于瀏覽器的應(yīng)用程序開發(fā)語言的歷史角色已經(jīng)發(fā)生了轉(zhuǎn)變。在步入Windows 10時代之后,我們將迎來新的Edge瀏覽器并在這里徹底告別Java——因為這款新型瀏覽器不再支持插件機(jī)制。
現(xiàn)在,我要向大家分享一點小秘密:如果您出于某種考量而需要繼續(xù)使用基于瀏覽器的Java應(yīng)用,完全沒問題。Windows 10當(dāng)中同時提供IE 11瀏覽器,這套傳統(tǒng)瀏覽方案樂于迎接包括Java在內(nèi)的各種插件方案。這雖然也意味著大家仍然需要重視由插件引發(fā)的安全問題,但至少我們多了一種選擇。
不過面向未來,大家應(yīng)當(dāng)制定計劃,逐步將自己的Java應(yīng)用程序轉(zhuǎn)移到桌面平臺之上。它們將在這里迎來新的發(fā)展空間,而用戶們也將逐漸適應(yīng)在瀏覽器窗口之外與Java應(yīng)用順暢協(xié)作。
JavaScript將一直存在

Java與JavaScript是完全不同的兩種事物:Java是一款由Sun Microsystems公司開發(fā)的編譯編程語言,而JavaScript則是由Netscape公司推出的解釋型腳本語言。Java應(yīng)用程序可以運行在瀏覽器當(dāng)中(利用插件架構(gòu)),同時亦可以獨立程序形式存在。而JavaScript則必須立足于瀏覽器窗口之內(nèi)——單憑自身并不能夠獨立運行。
著眼于未來,JavaScript仍將在瀏覽器領(lǐng)導(dǎo)保持至關(guān)重要的地位。它能夠與HTML 5攜手合作,共同為用戶提供豐富的交互式瀏覽器使用體驗。如果您是一位擁有豐富JavaScript使用經(jīng)驗的開發(fā)人員,那么您的發(fā)展前景可謂相當(dāng)光明。
如果您是一位開發(fā)工作經(jīng)理,那么在規(guī)劃當(dāng)中利用HTML 5以及JavaScript進(jìn)行應(yīng)用開發(fā)也相當(dāng)明智。二者相結(jié)合能夠為企業(yè)Web以及移動Web應(yīng)用提供非常理想的支撐,從而應(yīng)對未來很長一段時間內(nèi)的實際需求。
Java陣營的各類組件正逐漸匯聚

甲骨文公司正持續(xù)開發(fā)Java項目,并計劃于2016年年內(nèi)推出Java 9版本。其宏觀圖景是將Jigsaw項目正式交付給開發(fā)人員,并使Java具備更出色的模塊化特性。這意味著屆時將有多種“接入并起效”架構(gòu)供我們選擇,從而進(jìn)一步拓展Java的傳統(tǒng)編程模式。
開發(fā)人員已經(jīng)為Jigsaw項目制定了一系列發(fā)展目標(biāo),我們可以將其歸結(jié)為兩大門類:性能與可擴(kuò)展能力。模塊的出現(xiàn)能夠?qū)Y(jié)構(gòu)進(jìn)行進(jìn)一步簡化,而總體來講結(jié)構(gòu)精簡就代表著代碼規(guī)模更小、執(zhí)行速度更快。輕松將模塊納入及移出整體應(yīng)用程序的能力會使Java代碼得以在不同規(guī)模的各類平臺之上順暢運作,從規(guī)模巨大的工程技術(shù)工作站到小巧的嵌入式物聯(lián)網(wǎng)處理器皆涵蓋于其中。
Java將成為物聯(lián)網(wǎng)的溫床
在剛剛誕生之時,Java原本是作為我們?nèi)缃穹Q為物聯(lián)網(wǎng)裝置上應(yīng)用程序的編程語言存在。該語言的早期開發(fā)者們希望針對互聯(lián)網(wǎng)電視機(jī)打造一款編程語言。不過問題在于,1991年時的嵌入式處理器根本無法同時支持Java框架及其應(yīng)用程序。時至今日,情況已經(jīng)發(fā)生了徹底轉(zhuǎn)變。
Java Platform, Micro Edition(簡稱JPME)為甲骨文公司針對嵌入式及移動平臺所打造的解決方案,同時面向電視機(jī)以及媒體中心等特殊平臺。在物聯(lián)網(wǎng)領(lǐng)域當(dāng)中,“一次編寫,隨處起效”原則的存在帶來了顯著的成本節(jié)約效果。更加值得一提的是,企業(yè)能夠借此引導(dǎo)開發(fā)人員打造出商用Java編程成果,并將其分配至物聯(lián)網(wǎng)任務(wù)當(dāng)中。
將上述能力匯總起來,Java語言將成為成功的企業(yè)級物聯(lián)網(wǎng)發(fā)展戰(zhàn)略當(dāng)中不可或缺的重要一環(huán)。
Java向移動領(lǐng)域進(jìn)發(fā)

讓Java在物聯(lián)網(wǎng)領(lǐng)域得以大顯示身手的Java Platform,Micro Edition同時也能夠在移動應(yīng)用程序開發(fā)工作中扮演重要角色。必須強(qiáng)調(diào)的是,Java在iOS領(lǐng)域面臨著巨大的競爭壓力。蘋果公司的Swift語言已經(jīng)成為希望讓自己的應(yīng)用成果順利進(jìn)入App Store貨架的開發(fā)者們的首選編程環(huán)境。不過如果大家的主要目標(biāo)市場為Android,那么Java仍然是一款極為強(qiáng)大的開發(fā)工具,同時也能為我們帶來理想的跨平臺能力。
Java能夠支撐超級計算機(jī)設(shè)備

當(dāng)我們思考適用于高性能計算(簡稱HPC)的編程語言時,首先想到的幾乎不可能是Java。但實際情況是,世界上相當(dāng)一部分高性能計算項目都在利用Java負(fù)責(zé)背后的流體分析(或者天文觀測)任務(wù)。Java的基礎(chǔ)架構(gòu)看起來并不適用于高性能計算,但它所具備的多種特性卻足以保證其在高性能應(yīng)用程序當(dāng)中占據(jù)一席之地。
Java當(dāng)中的一大關(guān)鍵性高性能計算能力在于其原生支持多線程執(zhí)行機(jī)制。另一大要點則在于,Java允許開發(fā)人員輕松編寫出網(wǎng)絡(luò)應(yīng)用程序。雖然Java難于使用多核心處理器的弊端在一定程度上抵消了上述優(yōu)勢,不過出于某些特殊高性能計算目標(biāo)的科學(xué)項目仍然樂于將Java作為其中的重要組成部分。
沒錯,Java不太可能在高性能計算領(lǐng)域徹底取代C++,但其肯定要比早已老朽不堪的FORTRAN更具活力。如果您的編程團(tuán)隊中包含多位剛剛畢業(yè)且熟知Java開發(fā)知識的新人,那么它絕對是您不可錯過的首選編程語言。
Java,大數(shù)據(jù)技術(shù)領(lǐng)域的一匹黑馬

等等,Java能夠在大數(shù)據(jù)領(lǐng)域有所建樹?沒錯,真是這樣,因為它能夠以現(xiàn)代高性能計算(簡稱HPC)體系為核心,將多數(shù)強(qiáng)大的大數(shù)據(jù)組件結(jié)合在一起。就在去年,IBM公司展示了一套實驗性項目,其中的一套Hadoop實例就運行在利用Tesla圖形處理單元(即GPU)構(gòu)建的系統(tǒng)當(dāng)中。這是一套極為強(qiáng)大的組合,能夠輕松完成大多數(shù)極為復(fù)雜的數(shù)據(jù)集分析任務(wù)。
GPU已經(jīng)成為目前大多數(shù)速度最快的超級計算設(shè)備所不可或缺的處理器選項。而Java的“一次編寫,隨處起效”架構(gòu)意味著技術(shù)團(tuán)隊能夠在工作站上開發(fā)自己的軟件,而后將其移植到這些強(qiáng)勁的系統(tǒng)當(dāng)中。當(dāng)這些系統(tǒng)運行有Hadoop等大數(shù)據(jù)數(shù)據(jù)庫管理工具時,其結(jié)果絕對令人印象深刻。
那么,您是如何開發(fā)自己的高性能應(yīng)用程序的?您是否會使用同樣的編程語言開發(fā)物聯(lián)網(wǎng)解決方案或者是基于瀏覽器的新型企業(yè)工作流應(yīng)用?請大家在評論欄中分享您對于Java當(dāng)前與未來發(fā)展圖景的看法。而其中最重要的問題在于:您是否會建議剛剛進(jìn)入企業(yè)的新手將Java作為其掌握的基礎(chǔ)性編程語言之一?我們期待著您的答案——這對于下一代程序員們非常重要。