Java語(yǔ)言將淡出 JVM寶座爭(zhēng)奪戰(zhàn)預(yù)熱
Java比JVM(Virtual Machine)更有分量的時(shí)代已經(jīng)結(jié)束了。
51CTO編輯推薦:7月編程語(yǔ)言排行榜:Java,正在老去的王者
JVM作為一種機(jī)制用以提供Java應(yīng)用在多個(gè)不同硬件上的可移植性,而現(xiàn)在它可以運(yùn)行的語(yǔ)言更多了,從動(dòng)態(tài)語(yǔ)言如JRuby, Jython和Clojure到靜態(tài)型Scala語(yǔ)言。因此,JVM正在成為一個(gè)多元化的平臺(tái),開(kāi)發(fā)人員可以充分利用不同語(yǔ)言來(lái)滿(mǎn)足各自不同的需要。
為什么JVM變得如此有吸引力呢?Sun Microsystems公司W(wǎng)eb技術(shù)總監(jiān)認(rèn)為,這是因?yàn)镴VM這個(gè)Java平臺(tái)的性能以及它對(duì)其他語(yǔ)言的支持。例如,JVM尤其是HotSpot,具有尤其突出的性能。第二個(gè)原因是JVM有巨大的Java庫(kù)。學(xué)習(xí)一種新語(yǔ)言最難的問(wèn)題之一就是要匯集所有必要的庫(kù)并使之可用,而在JVM上,你可以免費(fèi)得到這一切。因此,許多企業(yè)也不會(huì)部署任何不適合Java生態(tài)系統(tǒng)的東西。
Java平臺(tái)比Java語(yǔ)言更加重要。Sun公司的Bray強(qiáng)調(diào)Java平臺(tái)已越來(lái)越比Java語(yǔ)言本身重要。他說(shuō),我個(gè)人認(rèn)為, 長(zhǎng)遠(yuǎn)來(lái)看Java平臺(tái)比Java語(yǔ)言有更多的戰(zhàn)略重要性。
對(duì)我們而言JVM已經(jīng)完全成為偉大的產(chǎn)品,因?yàn)樗诿恳粋€(gè)新一代的JVM中都切實(shí)地改善了性能,這種性能提升穩(wěn)定且有必要。 Scala語(yǔ)言的開(kāi)發(fā)者M(jìn)artin Odersky說(shuō)。與此同時(shí)他指出,在一個(gè)公司的基礎(chǔ)架構(gòu)中Scala可以取代Java,比如Sony Pictures。
不過(guò),盡管其他語(yǔ)言在JVM上的使用越來(lái)越多,但Java還沒(méi)有成為JVM中過(guò)時(shí)的語(yǔ)言。 Bray說(shuō),Java仍然是世界上最流行的編程語(yǔ)言,并將繼續(xù)是企業(yè)和未來(lái)系統(tǒng)編程的核心語(yǔ)言。
如果這樣的事情(指Java不再是企業(yè)和系統(tǒng)編程的核心)會(huì)發(fā)生,那也將是在非常非常遙遠(yuǎn)的將來(lái)。 Odersky說(shuō)。他指出,Java背后的種種龐大因素使得大多數(shù)公司都不愿意改變它。盡管如此,類(lèi)如Scala和其他一些語(yǔ)言將獲得JVM上更多的語(yǔ)言共享,而JVM平臺(tái)也將變得比現(xiàn)在更加多語(yǔ)言化。 Odersky說(shuō)道。
JVM將變得更加多語(yǔ)言化的一個(gè)原因是Sun的Da Vinci Machine項(xiàng)目,該項(xiàng)目承諾將簡(jiǎn)化動(dòng)態(tài)語(yǔ)言在JVM上的運(yùn)行。Bray說(shuō),Da Vinci Machine解決[Java Specification Request] 292 ,目的是方便動(dòng)態(tài)語(yǔ)言開(kāi)發(fā)者能在JVM上獲得很好的性能,無(wú)疑這將增加動(dòng)態(tài)語(yǔ)言社區(qū)對(duì)JVM平臺(tái)的吸引力。這項(xiàng)工作值得密切關(guān)注。
Clojure的作者Rich Hickey認(rèn)為,動(dòng)態(tài)語(yǔ)言有利于解決在開(kāi)始時(shí)并不確定答案的問(wèn)題,如建立Web應(yīng)用程序,尤其是因?yàn)闆](méi)有一個(gè)正確的方式去建立一個(gè)Web應(yīng)用程序;相比之下, Java更適合解決知道答案的問(wèn)題,當(dāng)然底層的基礎(chǔ)架構(gòu)尤其適合Java。
同樣的,其他語(yǔ)言也給JVM帶來(lái)了更好的功能。JRuby和Jython的支持者認(rèn)為他們的語(yǔ)言并非Java的競(jìng)爭(zhēng)語(yǔ)言而是對(duì)Java的補(bǔ)充。一個(gè)Jython項(xiàng)目的leader Frank Wierzbicki說(shuō),Jython更多的是對(duì)JVM上Java語(yǔ)言的補(bǔ)充,它因?yàn)閷uby帶入JVM中而進(jìn)一步提升了這個(gè)Java平臺(tái)。
JRuby。JRuby可以說(shuō)一直是JVM上的最引人注目的動(dòng)態(tài)語(yǔ)言。它可以追溯到2001年,是Ruby語(yǔ)言的一個(gè)解釋器。JVM上實(shí)現(xiàn)Ruby有兩個(gè)非常重要原因。首先,它使Java開(kāi)發(fā)者接觸到一個(gè)更高層次的編程語(yǔ)言, JRuby 的核心開(kāi)發(fā)者Bini說(shuō),第二,Ruby有許多有趣的庫(kù),比如Rails和RSpec,可用于JVM上 。用于JVM上也意味著當(dāng)你使用Ruby時(shí),你仍然可以使用所有現(xiàn)有的Java庫(kù)。JRuby可以像使用Ruby類(lèi)一樣來(lái)使用任何Java類(lèi)。這意味著你綜合了Ruby語(yǔ)言生態(tài)系統(tǒng)以及Java環(huán)境的功能。他說(shuō)。
Jython。與此同時(shí), Jython所有的方式都回到1998年7月,那時(shí)它還被稱(chēng)為JPython。Wierzbicki表示,有大量的Java在那里,Jython提供了一種從高效的Python語(yǔ)言訪問(wèn)代碼的方式。例如,Jython一直被測(cè)試框架使用作為一個(gè)嵌入式的腳本工具。我已經(jīng)在許多的Python會(huì)議如PyCon、EuroPycon以及EuroDjangoCon上說(shuō)過(guò),而且我也切實(shí)地發(fā)現(xiàn)許多Python社區(qū)的開(kāi)發(fā)者希望能夠在JVM上使用Python。他補(bǔ)充說(shuō)。
Clojure 。JVM上仍是Clojure (發(fā)音為closure ),它用來(lái)支持JVM上的功能型以及更好的并行程序設(shè)計(jì)。Hickey稱(chēng),這將推動(dòng)多線程應(yīng)用程序的開(kāi)發(fā)。任何Java有用的地方Clojure都有用。因此它使用Java庫(kù)和語(yǔ)法支持Java調(diào)用。
Scala。首次亮相于2004年,用以提升Java。雖然Java平臺(tái)提供了諸如類(lèi)安全性和垃圾處理等功能,但這些仍然不夠。他說(shuō),我們希望讓Java更具表達(dá)性,因此人們的開(kāi)發(fā)效率將更高。Scala不同于JVM兼容的其他語(yǔ)言,如JRuby、Jython Clojure ,它部署了一個(gè)完善的靜態(tài)型系統(tǒng),并提供更多的編程功能。
Groovy 。JVM上的另外一個(gè)語(yǔ)言。被稱(chēng)為JVM的敏捷動(dòng)態(tài)語(yǔ)言Groovy構(gòu)建在Java的優(yōu)勢(shì)上,并從Ruby和SmallTalk等語(yǔ)言吸取靈感新增了很多功能。
有了Groovy,這肯定更容易編程,與Groovy比Java說(shuō),SpringSource的首席軟件工程師Jon Travis說(shuō),他負(fù)責(zé)監(jiān)督Groovy語(yǔ)言的開(kāi)發(fā)。世界各地的Groovy開(kāi)發(fā)者為熟悉Java的朋友們?cè)黾恿撕芏嗔钊擞∠笊羁痰墓δ堋?/P>
【相關(guān)閱讀】