如果硬件支持是虛擬化的必要條件,那麼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. Java可以在沒有Java虛擬機的情況下運行嗎?
- 5. 虛擬機如何工作?
- 6. VirtualBox虛擬 - 虛擬化已啓用,但沒有工作
- 7. Bluemix上的虛擬主機支持 - CloudAMQP
- 8. VMWare快照如何在不復制所有虛擬機文件的情況下「保存」虛擬機的狀態?
- 9. 如何在沒有webapp的情況下設置tomcat虛擬主機?
- 10. 如何在沒有虛擬主機的情況下運行Symfony項目?
- 11. 使用虛擬單核虛擬化guest虛擬機上的所有cpu核心
- 12. JMeter在虛擬機上工作
- 13. 爲什麼虛擬表只有在虛擬功能的情況下才需要?
- 14. apache虛擬主機在Mint虛擬機上不起作用
- 15. 虛擬linux系統
- 16. KVM(Kilo虛擬機)如何與JVM(Java虛擬機)不同?
- 17. 虛擬機優化
- 18. 使用Vagrant在沒有VirtualBox的情況下使用KVM/qemu設置虛擬機
- 19. 如何訪問安裝在虛擬機之外的Azure虛擬機(虛擬機角色)上的sql server?
- 20. 使用虛擬化的系統聚合
- 21. 虛擬機支持多顯示器
- 22. 虛擬機規模集支持
- 23. 不需要操作系統的Java虛擬機?
- 24. 安卓虛擬機在ubuntu系統下運行時的錯誤
- 25. 如何在沒有實現的情況下測試純虛擬類?
- 26. 最簡單的操作系統支持VirtualBox等虛擬化應用程序?
- 27. 虛擬主機不在tomcat6中工作
- 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