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