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