java跨平臺的真相
- 虛擬機做中介
- 所謂虛擬機,就是一臺虛擬的計算機。它是一款軟件,用來執行一系列虛擬計算機指令。
- 大體上,虛擬機可以分爲系統虛擬機和程序虛擬機。
- 系統虛擬機:如Visual Box、VMware等,它們完全是對計算機的仿真,提供一個可運行完整操作系統的軟件平臺。
- 程序虛擬機:典型代表就是Java虛擬機,它專門爲執行單個計算機程序而設計,在Java虛擬機中執行的指令我們稱之爲Java字節碼指令。
- 系統虛擬機和程序虛擬機對其上運行的軟件都限制於虛擬機提供的資源。
- java虛擬機的種類
- Classic虛擬機:Sun公司初期使用的虛擬機,JDK1.4後被淘汰,全面使用Hotspot虛擬機
- Hotspot虛擬機:Sun公司收購公司Longview Technologies,獲得Hotspot虛擬機。其是目前使用最廣泛的虛擬機,佔有絕對的市場地位。之後Sun被Oracle收購,有與JRockit整合的趨勢。
- Jrockit虛擬機:Oracle收購BEA獲得JRockit虛擬機
- J9虛擬機:是在IBM內部使用的虛擬機,廣泛用於IBM的各大產品
- Apache Harmony虛擬機:Apache推出的開源軟件,受OpenJDK的壓制,2011年退役,其對Android有着積極的影響
- KVM和CDC/CLDC Hotspot虛擬機:主要用在嵌入式領域,IOS和Android前也用於手機平臺
- java虛擬機的原理
代碼運行過程如下:
java文件 --> 編譯 --> class字節碼 --> jvm可執行文件
圖:簡單原理
圖:JAVA + OS
所以,最終,java程序是通過JVM的接口轉換,調用系統底層的資源,使程序可以再系統上正常運行。