一,java虛擬機的疑問
對于 java 虛擬機我們并不陌生暑始,但是不知道有多人對于java虛擬機的基本概念很清楚搭独,到底什么是java虛擬機? 為什么虛擬機有那么多種? java虛擬機和jdk之間有什么關系?java運行與平臺無關的原因與jvm 有關 又是為什么呢廊镜?好吧牙肝,我對于這些問題一直處于模糊的狀態(tài),現(xiàn)在就來整理一下嗤朴。
二配椭,百度解答
虛擬機是一種抽象化的計算機,通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的雹姊。Java虛擬機有自己完善的硬體架構股缸,如處理器、堆棧吱雏、寄存器等乓序,還具有相應的指令系統(tǒng)。Java虛擬機屏蔽了與具體操作系統(tǒng)平臺相關的信息坎背,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節(jié)碼)替劈,就可以在多種平臺上不加修改地運行。
概念很難以理解得滤。
三陨献,我的回答
- 首先,理解一下JDK懂更,JDK是用于支持java應用開發(fā)的最小環(huán)境眨业。JVM 就是JDK的一部分急膀。
- JVM通俗來說就是一個程序,操作系統(tǒng)角度來看龄捡,當它運行起來就是一個進程卓嫂。我們通常 用命令 java 來啟動一個程序,當它運行起來后就是一個進程聘殖,然而更準確的說就是 一個JVM進程晨雳。總結奸腺,我們平時所說的 啟動一個java程序餐禁,其本質就是一個 java虛擬機進程。
- JVM是執(zhí)行字節(jié)碼文件(.class)的虛擬進程
四突照,總結
我的一些問題:
- JVM 和 JDK 和 JRE 的關系
JDK 包括 JRE, JRE 包括 JVM - 為什么java被稱為平臺無關的編程語言
不同平臺會裝有不同的虛擬機帮非,它們能夠將相同的.class文件,解釋成不同平臺所需要的機器碼讹蘑。正是因為有JVM的存在末盔,java被稱為平臺無關的編程語言。 - 為什么虛擬機的種類有那么多種
JAVA虛擬機規(guī)范是一種對JAVA虛擬機實現(xiàn)的規(guī)范要求座慰,是由oracle制定的庄岖,而我們平時常說的JAVA虛擬機一般是指的一種具體的JAVA虛擬機規(guī)范的實現(xiàn)。比如我們最經(jīng)常使用的JAVA虛擬機hotspot角骤,其實JAVA虛擬機還有很多種實現(xiàn),甚至如果你對JAVA虛擬機規(guī)范有了深入的了解而且對此有興趣的話心剥,可以寫一個自己的JAVA虛擬機