一、java程序的生命周期

image.png

image.png
二、JVM
- JVM是實現(xiàn)java語音與平臺無關(guān)性的關(guān)鍵
- JVM負責與操作系統(tǒng)的交互,用來屏蔽不同的操作系統(tǒng)環(huán)境,提供一個完整的Java運行環(huán)境,使得java語言編譯程序只需要生成在Java虛擬機上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。
- Java虛擬機在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上的(機器指令)執(zhí)行。這就是Java的能夠“一次編譯,到處運行”的原因。
- JVM是Java程序運行的容器,但是他同時也是操作系統(tǒng)的一個進程,因此他也有他自己的運行的生命周期,也有自己的代碼和數(shù)據(jù)空間。
- JVM是JRE的一部分。
三、JDK(Java Development Kit (java開發(fā)工具包))
- JDK是 Java語言的軟件開發(fā)工具包。
- JDK是整個java開發(fā)的核心,它包含了JAVA的運行環(huán)境(JVM+Java API)和JAVA工具(javac /java/jdb等)。
*****JDK包含的基本組件*****
-
javac— 編譯器,將源程序轉(zhuǎn)成字節(jié)碼 -
jar— 打包工具,將相關(guān)的類文件打包成一個文件 -
javadoc— 文檔生成器, 從源碼注釋中提取文檔 -
jdb— debugger ,查錯工具 -
java— 運行編譯后的java程序(.class文件) -
appletviewer— 小程序瀏覽器,一種執(zhí)行HTML上的java小程序的Java瀏覽器 -
javah— 產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件 -
javap— Java反匯編器,顯示編譯類文件中的可以訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義 -
jconsole— Java進行系統(tǒng)調(diào)試和監(jiān)控的工具
三、JRE:Java Runtime Environment (java 運行時環(huán)境)
也就是我們說的java平臺,所有java程序都要在JRE下才能運行。包括JVM和JAVA核心類庫和支持文件。與JDK相比他不包含開發(fā)工具(編譯器、調(diào)試器和其他工具)。
四、JVM、JDK、JRE之間的關(guān)系

image.png
我們開發(fā)的實際情況是:我們利用JDK(調(diào)用JAVA API)開發(fā)了屬于我們自己的JAVA程序后,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節(jié)碼,在JRE上運行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼,映射到CPU指令集或OS的系統(tǒng)調(diào)用。