
文章插圖
概述因?yàn)閷?duì)JDK,JRE,JVM這三者的聯(lián)系與區(qū)別,一直都是模模糊糊的,所以今天特寫(xiě)此文,來(lái)整理下三者的關(guān)系 。捋一捋思路~
一、JDK(Java Development ToolKit)Java開(kāi)發(fā)工具JDK包含了jre,它除了包含jre之外還包含了一些javac的工具類(lèi),把java源文件編譯成class文件,java文件是用來(lái)運(yùn)行這個(gè)程序的 。除此之外,里邊還包含了java源生的API等 。
JDK常用的包:
java.lang:這個(gè)是系統(tǒng)的基礎(chǔ)類(lèi),比如:String,Math,Integer,system,thread提供常用的功能 。
Java.io這里面是所用輸入輸出有關(guān)的類(lèi),比如:文件操作 。
java.net:這里面是與網(wǎng)絡(luò)有關(guān)的類(lèi),比如URL,URLVonnection等 。
Java.util:這個(gè)是系統(tǒng)輔助類(lèi),特別是集合類(lèi)conllection,list,map等 。
Java.sql:這個(gè)是數(shù)據(jù)操作的類(lèi),connection,statememt,resultset等 。
JDK有以下三種版本:
J2SE,standard edition,標(biāo)準(zhǔn)版;J2EE,enterpsise edtion,企業(yè)版;J2ME,micro edtion,主要用于移動(dòng)設(shè)備上的java應(yīng)用程序
總之,JDK是整個(gè)JAVA的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基礎(chǔ)的類(lèi)庫(kù)(即Java API 包括rt.jar) 。
二、JRE(Java Runtime Enviroment)Java運(yùn)行環(huán)境 JRE包含JVM
JRE,是為了保證java程序能夠運(yùn)行時(shí),所必備的一基礎(chǔ)環(huán)境,也就是它只是保證java程序運(yùn)行的,不能用來(lái)開(kāi)發(fā),而jdk才是用來(lái)開(kāi)發(fā)的,而想要開(kāi)發(fā)Java,必須包含能夠運(yùn)行的環(huán)境,因此,JDK是包含JVM的 。并且所有的Java程序都要在JRE下才能運(yùn)行 。
JDK包括JVM和JAVA核心類(lèi)庫(kù)和支持文件 。與JDK相比,它不包含開(kāi)發(fā)工具——編譯器、調(diào)試器和其它工具 。
三、JVM(Java Virtual Mechine)Java虛擬機(jī) JRE是Java運(yùn)行時(shí)環(huán)境,Java運(yùn)行靠的就是底層的依賴(lài)于JVM,即java虛擬機(jī),Java虛擬機(jī)用來(lái)加載類(lèi)文件,Java中之所以有跨平臺(tái)的作用,JVM是按照不同的平臺(tái)所寫(xiě)的,因此,Java具有跨平臺(tái)性,但是JVM確實(shí)依賴(lài)于平臺(tái)的 。
JVM是JRE的一部分,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的 。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng) 。JVM 的主要工作是解釋自己的指令集(即字節(jié)碼)并映射到本地的 CPU 的指令集或 OS 的系統(tǒng)調(diào)用 。Java語(yǔ)言是跨平臺(tái)運(yùn)行的,其實(shí)就是不同的操作系統(tǒng),使用不同的JVM映射規(guī)則,讓其與操作系統(tǒng)無(wú)關(guān),完成了跨平臺(tái)性 。JVM 對(duì)上層的 Java 源文件是不關(guān)心的,它的只是由源文件生成的類(lèi)文件( class file) 。類(lèi)文件的組成包括 JVM 指令集,符號(hào)表以及一些補(bǔ)助信息 。
JDK,JRE,JVM三者間的關(guān)系 其實(shí)在JDK的安裝目錄下有一個(gè)名為jre的目錄,里面有兩個(gè)文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類(lèi)庫(kù) 。
總之,開(kāi)發(fā)利用JDK(調(diào)用JAVA API)開(kāi)發(fā)了JAVA程序后,通過(guò)JDK中的編譯程序(javac)將文本java文件編譯成JAVA字節(jié)碼,在JRE上運(yùn)行這些JAVA字節(jié)碼,JVM解析這些字節(jié)碼,映射到CPU指令集或OS的系統(tǒng)調(diào)用 。
后面會(huì)分享一些devops和DBA方面內(nèi)容,感興趣的朋友可以下!!
【jre是什么 jdk和jre和jvm的關(guān)系】
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 類(lèi)風(fēng)濕關(guān)節(jié)炎都是什么 類(lèi)風(fēng)濕關(guān)節(jié)炎
- 什么是糖皮質(zhì)激素 糖皮質(zhì)激素是什么藥
- Gucci品牌簡(jiǎn)介 gucci是什么牌子
- 腎虛的癥狀都是什么 腎虛的表現(xiàn)癥狀有哪些
- 酚氨咖敏片的功效作用都是什么 酚氨咖敏片的功效作用
- gucci是古馳品牌 gucci是什么牌子
- 馬來(lái)酸氯苯那敏片的作用與功效都是什么 馬來(lái)酸氯苯那敏片的作用與功效
- 骶髂關(guān)節(jié)炎都是什么 骶髂關(guān)節(jié)炎
- 烏龍茶是什么茶 巖茶屬于什么茶
- 判斷痛風(fēng)最簡(jiǎn)單方法都是什么 判斷痛風(fēng)最簡(jiǎn)單方法
