關於JVM平台開發語言一直是Java開發者茶余飯後的一個熱門話題
JVM作為一種機制用以提供Java應用在不同的環境
其他平台以及不同硬件上的可移植性
而基於JVM平台的編程語言也是不斷的在增加
從動態語言如Groovy
JRuby
Jython到靜態型Scala語言
JVM也正成為一個多元化的平台
開發人員可以充分利用不同語言來滿足各自不同的需求
從本月的編程語言排行榜上我們可以看出
本次最受歡迎的
種編程語言中
種就屬基於JVM平台開發的編程語言
這也意味著開發者對JVM平台開發語言的關注
使用也不斷的增加
為什麼JVM的編程語言會如此受到開發者的青瞇?下面我們從JVM平台的
點特性進行分析
動態語言支持
從SE
開始就是對動態語言的支持
動態語言逐漸成為許多Java開發者應用開發日常工作的一部分
並常常用於原型開發或用來提高開發速度
為了快速得到更大規模的Java應用程序
人們一直在使用動態語言膠合程序部件
事實上
任何可以使用有效class 文件表述的功能性語言
都可以運行在JVM上
動態語言的靈活性
尤其是腳本語言
對於實驗性
原型應用程序以及需頻繁更新的程序
都具有獨特的吸引力
Java開發人員也可以使用動態語言進行部分編程
然後將這部分代碼轉換成Java
或繼續用Java來開發程序中更為健壯
生命力更強的部分
其他代碼則可以通過更加動態的語言來進行開發
動態類型固有的靈活性與JVM的執行效率
合二為一
很明顯
這就是它能夠吸引動態編程語言創建者以及使用這些語言構建應用程序的開發者的原因
跨平台性
如果單單說JVM支持動態語言編程就能夠吸引更多的開發者那是不可能的
曾有這麼一句話
一次編程
到處運行
這句話說的就是JVM的跨平台性
指即不依賴於操作系統
也不信賴硬件環境
那麼JVM是如何跨平台的呢?下面提供張JVM的結構圖
JVM跨平台的四種執行引擎部分說明
解釋器
簡單
一次性解釋字節碼
易於實現但是執行緩慢
即時編譯器
將第一次執行的字節碼編譯為本地機器代碼
編譯出的本地機器代碼會被緩存
第二次調用的時候可以重用
執行速度快
但是消耗更多內存(與解釋器相比)
自適應優化器
虛擬機開始的時候是解釋字節碼
但是他會監視運行中的程序
並記錄下使用最頻繁的代碼段
程序運行的時候
將最頻繁的代碼編譯成本地代碼
其他使用不頻繁的代碼
繼續保持為字節碼
硬件芯片
用本地方法執行字節碼
java通過編譯器後生成class文件
為字節碼
通過虛擬機編譯後形成機器碼
電腦上只能運行機器碼
字節碼是可以運行在任何支持java虛擬機的硬件平台和操作系統上的二進制文件
(摘自
bobiy
的博客)
混合編程
JVM平台能夠受到開發者的青瞇還有一點就是能夠進行多語言混合編程
也就是說在JVM平台上不僅Java一種編程語言可以使用
事出於單一的Java開發已經無法滿足當前軟件復雜的需求
而混合編程也受到了開發者的熱捧
至今已成為主流
JVM不斷的向多語言方向發展
每種語言都可以針對自己擅長的方面更好的解決問題
日趨復雜的軟件需求也使得混合編程的應用場景更加的頻繁
在不遠的未來我們將會看到
我們的項目中
並行進程用Clojure編寫
展示層使用Jruby/Rails
中間層用的是Java編寫
總 結
多年來
在JVM上運行的語言越來越多
而動態語言
跨平台性
混合編程的特性對開發者是非常具有吸引力的
隨著JVM平台開發的流行
Java開發者也跟著發生了一些改變
因為他們不僅僅只限於Java一種編程語言
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26418.html