一、java程序的生命周期
二盼铁、JVM
- JVM是實(shí)現(xiàn)java語音與平臺(tái)無關(guān)性的關(guān)鍵
- JVM負(fù)責(zé)與操作系統(tǒng)的交互,用來屏蔽不同的操作系統(tǒng)環(huán)境,提供一個(gè)完整的Java運(yùn)行環(huán)境粗蔚,使得java語言編譯程序只需要生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行饶火。
- Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí)鹏控,把字節(jié)碼解釋成具體平臺(tái)上的(機(jī)器指令)執(zhí)行。這就是Java的能夠“一次編譯肤寝,到處運(yùn)行”的原因当辐。
- JVM是Java程序運(yùn)行的容器,但是他同時(shí)也是操作系統(tǒng)的一個(gè)進(jìn)程,因此他也有他自己的運(yùn)行的生命周期,也有自己的代碼和數(shù)據(jù)空間。
- JVM是JRE的一部分鲤看。
三缘揪、JDK(Java Development Kit (java開發(fā)工具包))
- JDK是 Java語言的軟件開發(fā)工具包。
- JDK是整個(gè)java開發(fā)的核心刨摩,它包含了JAVA的運(yùn)行環(huán)境(JVM+Java API)和JAVA工具(javac /java/jdb等)寺晌。
*****JDK包含的基本組件*****
-
javac
— 編譯器,將源程序轉(zhuǎn)成字節(jié)碼 -
jar
— 打包工具澡刹,將相關(guān)的類文件打包成一個(gè)文件 -
javadoc
— 文檔生成器呻征, 從源碼注釋中提取文檔 -
jdb
— debugger ,查錯(cuò)工具 -
java
— 運(yùn)行編譯后的java程序(.class文件) -
appletviewer
— 小程序?yàn)g覽器罢浇,一種執(zhí)行HTML上的java小程序的Java瀏覽器 -
javah
— 產(chǎn)生可以調(diào)用Java過程的C過程陆赋,或建立能被Java程序調(diào)用的C過程的頭文件 -
javap
— Java反匯編器沐祷,顯示編譯類文件中的可以訪問功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義 -
jconsole
— Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具
三攒岛、JRE:Java Runtime Environment (java 運(yùn)行時(shí)環(huán)境)
也就是我們說的java平臺(tái)赖临,所有java程序都要在JRE下才能運(yùn)行。包括JVM和JAVA核心類庫和支持文件灾锯。與JDK相比他不包含開發(fā)工具(編譯器兢榨、調(diào)試器和其他工具)。
四顺饮、JVM吵聪、JDK、JRE之間的關(guān)系
我們開發(fā)的實(shí)際情況是:我們利用JDK(調(diào)用JAVA API)開發(fā)了屬于我們自己的JAVA程序后兼雄,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節(jié)碼吟逝,在JRE上運(yùn)行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼赦肋,映射到CPU指令集或OS的系統(tǒng)調(diào)用块攒。