如果硬件支持是虛擬化的必要條件,那麼Java虛擬機如何在不支持虛擬化的機器上運行?或者JVM不是虛擬機?Java虛擬機如何在沒有虛擬化支持的情況下在系統上工作?
回答
JVM與VirtualBox或VMWare虛擬機的意義不同。它是一個實現Java字節碼的「機器」,而不是實際硬件的虛擬化版本。
術語的最先進的「虛擬機」是創造了一個很長的時間以前對於以下情形:
- 彌補了一臺電腦,像Knuth的MIX。
- 編寫一個實現化妝計算機的計算機程序。
- 運行程序
當這個虛擬機上運行,這是一個完全的普通程序,在用戶模式下運行完全。它不需要硬件或操作系統的特殊幫助就能很好地工作。 JVM尤其如此,因爲Java字節碼不涉及低級硬件I/O或其他難以模擬的事物。從歷史上看,(選擇特定實例)IBM發明了VM/370。 VM/370使用術語「虛擬機」的另一種含義。在此後的意義上,硬件和操作系統協作以允許單個物理機器託管多個(或多或少)相同的虛擬實例,其中整個操作系統的多個副本被寫入,就好像它們正在運行一樣在更多或更少的裸機上。後來,X86的功能設計便於實現。
所以,是的,任何虛擬機都在使用一些物理硬件,除非你在桌子周圍傳遞紙張(速度約翰·塞爾)。但是當虛擬機與運行的機器不相似時,則不需要操作系統和硬件的特殊幫助,也不需要像VM/370或VMware那樣複雜的任何東西。
JVM是一個虛擬機,但它不需要操作系統的任何額外支持。它不是爲特定的CPU虛擬化指令,而是執行java字節碼。
JVM是運行Java的虛擬機,換句話說,它模擬了一臺能夠運行java的機器。這是一個令人困惑的名稱選擇,但它來自「機器」的一般含義,而不是來自更常見的虛擬機的含義。
JVM與常規VM一樣模擬指令的執行,但在JVM中,被仿真的指令是Java指令,而在VM的情況下,它們是硬件指令,將由OS執行運行在相同的硬件上。
是的,JVM不會訪問硬件,但這就是您安裝MAC或WINDOWS JVM的原因,因爲這些指令由JVM翻譯並根據JVM的安裝進行操作,例如,在mac上打開文件對話框打開mac對話框和windows JVM打開窗口對話框。
所以它沒有被系統虛擬化,但字節碼正在被您安裝的JVM虛擬化。它基本上就像一個應用程序,它讀取一些東西(字節碼)並執行某些操作(訪問硬件或其他東西)。
如果硬件支持虛擬化是必須的,...
讓我阻止你在那裏:-)
有一個在JVM(軟件虛擬化)之間的概念差別和(例如)VMWare VM(硬件輔助虛擬化)。
JVM(以及其他基於軟件的VMM,例如允許在Solaris硬件上模擬x86的應用程序 - 我認爲Bochs和可能的DosBox屬於此類別)與任何其他應用程序一樣運行,使用操作系統獲得訪問硬件或純粹用軟件模擬自己的硬件。
VMWare和爲速度優化的其他VMM依賴於硬件支持。換句話說,他們在硬件上運行,就好像他們可以完全訪問硬件一樣,只有當他們試圖做某些事情時,他們不應該讓操作系統捕獲這些企圖並僞造它。
這就是爲什麼VMWare比純軟件模擬器運行速度快得多的原因。這是因爲在絕大多數時候,它實際上是在真正的硬件上運行的。
應該指出的是,沒有任何規定JVM確實需要而不是(必須)具有硬件虛擬化訪問權限。有一些值得注意的例外,但回答的海報暗示了其中的幾個CP,它們本身就運行Java字節碼。也許有一天,一個Java字節碼HAL或TIMI將常見於將JVM放入與正式硬件虛擬化相同的類中?
- 1. 如何在沒有連接到虛擬機的情況下在Azure虛擬機上執行sql代理作業
- 2. 在沒有虛擬化的情況下,OS X可以在WPF中工作嗎?
- 3. 在Azure虛擬機不工作的情況下訪問Openfire
- 4. 如何在PC中沒有任何操作系統的情況下安裝KVM(核心虛擬機)?
- 5. Java可以在沒有Java虛擬機的情況下運行嗎?
- 6. 虛擬機如何工作?
- 7. 虛擬化支持x86 debugctl
- 8. VirtualBox虛擬 - 虛擬化已啓用,但沒有工作
- 9. Bluemix上的虛擬主機支持 - CloudAMQP
- 10. Java創建KeyPair掛在虛擬機上,但在物理系統上工作
- 11. VMWare快照如何在不復制所有虛擬機文件的情況下「保存」虛擬機的狀態?
- 12. 在沒有外部工具的情況下安裝新的Azure虛擬機
- 13. 在虛擬機上
- 14. 如何在沒有虛擬主機的情況下運行Symfony項目?
- 15. 如何在沒有webapp的情況下設置tomcat虛擬主機?
- 16. 如何在沒有密碼的情況下SSH另一臺虛擬機
- 17. 使用虛擬單核虛擬化guest虛擬機上的所有cpu核心
- 18. 爲什麼虛擬表只有在虛擬功能的情況下才需要?
- 19. JMeter在虛擬機上工作
- 20. apache虛擬主機在Mint虛擬機上不起作用
- 21. 虛擬linux系統
- 22. 在沒有虛擬主機的情況下,zend項目在localhost上工作的可能性有多大?
- 23. Gentoo VirtualBox guest虛擬機沒有硬件虛擬化引導
- 24. 如何在Macbook Pro上啓用對CPU虛擬化的支持?
- 25. 使用Vagrant創建沒有操作系統的虛擬機
- 26. 虛擬機箱guest添加僅取決於guest虛擬機操作系統?
- 27. KVM(Kilo虛擬機)如何與JVM(Java虛擬機)不同?
- 28. 虛擬機優化
- 29. 虛擬主機不工作
- 30. 虛擬主機不工作
但是我們可以從Java訪問硬件,所以JVM必須虛擬化硬件 – Xinus 2009-12-30 03:05:18
不,JVM能夠訪問硬件,因爲JVM運行的操作系統允許它。 – paxdiablo 2009-12-30 03:11:38
紙和表是硬件= P – naiad 2011-06-07 16:54:29