细说JVM系列:JVM存在的目的和意义是什么?
JVM存在的目的和意義是什么?
一句話,實現跨平臺。
代碼編譯的結果從本地機器碼轉變為字節碼,是存儲格式發展的一小步,確是編程語言發展的一大步。
記得在第一節計算機程序設計課上我的老師講過:計算機只認識0和1,所以我們寫的程序需要經過編譯器編譯成由0和1構成的二進制格式才能有計算機執行。多年過去了,今天的計算機仍然只能識別0和1,但由于虛擬機和大量建立在虛擬機上的程序語言如雨后春筍出現并蓬勃發展,將我們編寫的程序編譯成二進制本地機器碼已不再是唯一的選擇,越來越多的程序語言選擇了與操作系統和機器指令集無關的、平臺中立的格式作為程序編譯后的存儲格式。
#無關性的基石
因為操作系統的多樣:linux、mac、windows、unix等等,他們在實現上都有多少的差異,在java之前,程序移植到不同平臺總會有很多問題,甚至我們要為多個平臺編寫不同的實現。與平臺無關的理想最終實現在操作系統的應用層上:sun公司以及其他虛擬機提供商發布了許多可以運行在各種平臺上的虛擬機,這些虛擬機都可以載入和執行一種平臺無關性的字節碼,從而實現了程序的”一次編寫,到處運行“。
各種不同平臺的虛擬機與所有平臺都統一使用的程序存儲格式——字節碼是構成平臺無關性的基石。
jvm在設計之初就明確了不僅僅為java服務的可能性,時至今日,商業機構和開源機構已經在java語言之外發展出一批在java虛擬機之上運行的語言,如Clojure\Groovy\JRuby\Jython\Scala等。這里面scala在大數據領域運行較為廣泛,spark的實現語言就是scala。
實現語言無關性的基礎仍然是虛擬機和字節碼存儲格式。jvm不和包括java在內的任何語言綁定,它只在class文件這種特定的二進制文件格式所關聯,class文件中包含了java虛擬機指令集和符號表以及若干輔助信息,任何一門功能性語言都可以表示為一個能被java虛擬機所接受的有效的class文件。如下圖所示;
總結
以上是生活随笔為你收集整理的细说JVM系列:JVM存在的目的和意义是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arcgis使用教程(十一)ARCGIS
- 下一篇: 微信小程序设置横竖屏