JVM平臺(tái)開(kāi)發(fā)語(yǔ)言 一直在流行
關(guān)于JVM平臺(tái)開(kāi)發(fā)語(yǔ)言一直是Java開(kāi)發(fā)者茶余飯后的一個(gè)熱門(mén)話題,JVM作為一種機(jī)制用以提供Java應(yīng)用在不同的環(huán)境,其他平臺(tái)以及不同硬件上的可移植性,而基于JVM平臺(tái)的編程語(yǔ)言也是不斷的在增加。從動(dòng)態(tài)語(yǔ)言如Groovy、JRuby, Jython到靜態(tài)型Scala語(yǔ)言, JVM也正成為一個(gè)多元化的平臺(tái),開(kāi)發(fā)人員可以充分利用不同語(yǔ)言來(lái)滿足各自不同的需求。
從本月的編程語(yǔ)言排行榜上我們可以看出,本次***的5種編程語(yǔ)言中3種就屬基于JVM平臺(tái)開(kāi)發(fā)的編程語(yǔ)言。這也意味著開(kāi)發(fā)者對(duì)JVM平臺(tái)開(kāi)發(fā)語(yǔ)言的關(guān)注、使用也不斷的增加。為什么JVM的編程語(yǔ)言會(huì)如此受到開(kāi)發(fā)者的青瞇?下面我們從JVM平臺(tái)的3點(diǎn)特性進(jìn)行分析。
動(dòng)態(tài)語(yǔ)言支持
從SE 6開(kāi)始就是對(duì)動(dòng)態(tài)語(yǔ)言的支持,動(dòng)態(tài)語(yǔ)言逐漸成為許多Java開(kāi)發(fā)者應(yīng)用開(kāi)發(fā)日常工作的一部分,并常常用于原型開(kāi)發(fā)或用來(lái)提高開(kāi)發(fā)速度。為了快速得到更大規(guī)模的Java應(yīng)用程序,人們一直在使用動(dòng)態(tài)語(yǔ)言膠合程序部件。
事實(shí)上,任何可以使用有效class 文件表述的功能性語(yǔ)言,都可以運(yùn)行在JVM上。動(dòng)態(tài)語(yǔ)言的靈活性,尤其是腳本語(yǔ)言,對(duì)于實(shí)驗(yàn)性、原型應(yīng)用程序以及需頻繁更新的程序,都具有獨(dú)特的吸引力。
Java開(kāi)發(fā)人員也可以使用動(dòng)態(tài)語(yǔ)言進(jìn)行部分編程,然后將這部分代碼轉(zhuǎn)換成Java,或繼續(xù)用Java來(lái)開(kāi)發(fā)程序中更為健壯、生命力更強(qiáng)的部分,其他代碼則可以通過(guò)更加動(dòng)態(tài)的語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā)。動(dòng)態(tài)類型固有的靈活性與JVM的執(zhí)行效率,合二為一。很明顯,這就是它能夠吸引動(dòng)態(tài)編程語(yǔ)言創(chuàng)建者以及使用這些語(yǔ)言構(gòu)建應(yīng)用程序的開(kāi)發(fā)者的原因。
跨平臺(tái)性
如果單單說(shuō)JVM支持動(dòng)態(tài)語(yǔ)言編程就能夠吸引更多的開(kāi)發(fā)者那是不可能的,曾有這么一句話“一次編程,到處運(yùn)行”,這句話說(shuō)的就是JVM的跨平臺(tái)性。指即不依賴于操作系統(tǒng),也不信賴硬件環(huán)境。
那么JVM是如何跨平臺(tái)的呢?下面提供張JVM的結(jié)構(gòu)圖
JVM跨平臺(tái)的四種執(zhí)行引擎部分說(shuō)明:
1、解釋器
簡(jiǎn)單,一次性解釋字節(jié)碼。易于實(shí)現(xiàn)但是執(zhí)行緩慢。
2、即時(shí)編譯器
將***次執(zhí)行的字節(jié)碼編譯為本地機(jī)器代碼。編譯出的本地機(jī)器代碼會(huì)被緩存,第二次調(diào)用的時(shí)候可以重用。執(zhí)行速度快,但是消耗更多內(nèi)存(與解釋器相比)。
3、自適應(yīng)優(yōu)化器
虛擬機(jī)開(kāi)始的時(shí)候是解釋字節(jié)碼,但是他會(huì)監(jiān)視運(yùn)行中的程序,并記錄下使用最頻繁的代碼段。程序運(yùn)行的時(shí)候,將最頻繁的代碼編譯成本地代碼,其他使用不頻繁的代碼,繼續(xù)保持為字節(jié)碼。
4、硬件芯片:
用本地方法執(zhí)行字節(jié)碼。java通過(guò)編譯器后生成class文件,為字節(jié)碼,通過(guò)虛擬機(jī)編譯后形成機(jī)器碼,電腦上只能運(yùn)行機(jī)器碼。字節(jié)碼是可以運(yùn)行在任何支持java虛擬機(jī)的硬件平臺(tái)和操作系統(tǒng)上的二進(jìn)制文件。
(摘自:bobiy45785的博客)
混合編程
JVM平臺(tái)能夠受到開(kāi)發(fā)者的青瞇還有一點(diǎn)就是能夠進(jìn)行多語(yǔ)言混合編程,也就是說(shuō)在JVM平臺(tái)上不僅Java一種編程語(yǔ)言可以使用。事出于單一的Java開(kāi)發(fā)已經(jīng)無(wú)法滿足當(dāng)前軟件復(fù)雜的需求。而混合編程也受到了開(kāi)發(fā)者的熱捧,至今已成為主流。
JVM不斷的向多語(yǔ)言方向發(fā)展,每種語(yǔ)言都可以針對(duì)自己擅長(zhǎng)的方面更好的解決問(wèn)題;日趨復(fù)雜的軟件需求也使得混合編程的應(yīng)用場(chǎng)景更加的頻繁。在不遠(yuǎn)的未來(lái)我們將會(huì)看到,我們的項(xiàng)目中,并行進(jìn)程用Clojure編寫(xiě),展示層使用Jruby/Rails,中間層用的是Java編寫(xiě)。
總 結(jié)
多年來(lái),在JVM上運(yùn)行的語(yǔ)言越來(lái)越多。而動(dòng)態(tài)語(yǔ)言、跨平臺(tái)性、混合編程的特性對(duì)開(kāi)發(fā)者是非常具有吸引力的。隨著JVM平臺(tái)開(kāi)發(fā)的流行,Java開(kāi)發(fā)者也跟著發(fā)生了一些改變,因?yàn)樗麄儾粌H僅只限于Java一種編程語(yǔ)言。因此,51CTO還針對(duì)JVM平臺(tái)的9種編程語(yǔ)言出了個(gè)專題,開(kāi)發(fā)者可以進(jìn)入詳細(xì)了解有關(guān)JVM平臺(tái)的編程語(yǔ)言。
【編輯推薦】