簡介
Java虛擬機是指解釋和執行Java位元組碼的程式,其中Java位元組碼由Java編譯器生成。在計算機科學中的體系結構里,是指一種特殊的軟體,他可以在計算機平台和終端用戶之間建立一種環境,而終端用戶則是基於這個軟體所建立的環境來操作軟體。在計算機科學中,虛擬機是指可以像真實機器一樣運行程式的計算機的軟體實現。
Java Virtual Machine(Java虛擬機),它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機有自己完善的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。JVM禁止了與具體作業系統平台相關的信息,使得Java程式只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,實際上最終還是把位元組碼解釋成具體平台上的機器指令執行。
JVM(Java虛擬機)一種用於計算設備的規範,可用不同的方式(軟體或硬體)加以實現。編譯虛擬機的指令集與編譯微處理器的指令集非常類似。Java虛擬機包括一套位元組碼指令集、一組暫存器、一個棧、一個垃圾回收堆和一個存儲方法域。
Java虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上,就能保證經過編譯的任何Java代碼能夠在該系統上運行。
Java虛擬機是一個想像中的機器,在實際的計算機上通過軟體模擬來實現。Java虛擬機有自己想像中的硬體,如處理器、堆疊、暫存器等,還具有相應的指令系統。
技術
硬體的仿真
基於這種虛擬機,用戶可以運行任何作業系統,比如可以在他們“個人的”虛擬電腦上運行兩個不同的作業系統(也被稱為“訪客(guests)”)。這樣的話,新版的實驗性作業系統就可以與舊版的較穩定版本一同在單獨的虛擬機上運行。這個過程甚至可以重複(recursive);IBM就在運行於舊版的虛擬機上的虛擬機上調試它新版的虛擬機作業系統,VM。
這個概念的一個早期使用者就是IBM的VM/CMS time-sharing產品,該產品使用的互動式計算單用戶作業系統,CMS,相對來說比較簡單,運行於VM上。通過這種方式,CMS編寫起來就比較簡單,就好像只有它一個在運行一樣,VM作業系統就在幕後提供多任務以及資源管理服務。
當然,不是每個VM用戶都必須運行CMS;有些用戶選擇在一個或者多個虛擬機上運行某種OS/360(或者MVS),來提供傳統上的批處理服務。今天,IBM大型機還在使用VM,許多虛擬機上運行的是Linux作業系統。
VMware、twoOStwo以及SVISTA軟體包在現代PC上都在處理類似截獲硬體訪問,模擬除了處理器以外的任何主機板上的器件的事情。
plex86屬於另外一種情況,它使用特定的打過補丁的核心,只能運行於Linux下,而且只能在其之上運行Linux。因此,它不是仿真處理器,它利用bochs來仿真主機板設備。
現代PC使用的x86處理器架構其實並不能滿足Popek和Goldberg虛擬化要求。很明顯,這種架構缺少所有特權機器指令都會產生異常的模式,而這種模式可以做到單指令的虛擬化。這導致VMware或類似的x86虛擬軟體必須動態地重新編譯特權模式代碼。這種虛擬技術和運行於如IBM System/370、Motorola MC68020的原生態可虛擬架構上的VM相比,就會多出一些性能上的開銷。Intel和AMD都聲稱計畫給未來的x86處理器加入x86虛擬化能力。