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