jvm蝌借、jre昔瞧、jdk的關(guān)系

寫這篇文章主要解決以下幾個問題:

1.為什么我配置了Android SDk 還要配置JDK呢?這兩者到底是什么關(guān)系菩佑?

2.JVM是java程序的運行環(huán)境自晰, Dalvik 是android程序的運行環(huán)境,而android是用java語言編寫的稍坯,那么 JVM 與Dalvik是什么關(guān)系呢酬荞?

3.為什么我下載的JDK有兩個文件夾,一個是jdk瞧哟,一個是jre混巧。而jdk文件中其實已經(jīng)包含了jre,為什么有兩個呢勤揩?

4.為什么我不配置jdk的環(huán)境變量打不開eclipse咧党,配置了之后,可以進入了陨亡,不過進入了eclipse之后還要配置jdk的路徑呢傍衡?

5.Android打包過程中,產(chǎn)生的65536錯誤的原因是什么负蠕?

下面我聽我娓娓道來聪舒,到最后上邊幾個問題就都解決了。

我們從官網(wǎng)下載JDK虐急,解壓后是下邊的這個文件夾箱残。


圖片.png

很明顯,這個文件夾中既有JDK,又有JRE被辑。而且燎悍,打開jdk的文件夾,可以看到:


圖片.png

這里面也有一個jre的文件夾盼理,而且它們的大小都差不多谈山,里面的內(nèi)容也都差不多。

這時候我們需要在環(huán)境變量中加入jdk的路徑宏怔,如果不加入的話會發(fā)現(xiàn)打不開eclipse奏路,這是為什么呢臊诊?

大家都知道鸽粉,jre是java的運行環(huán)境,也就是說配置好jre以后抓艳,java程序就可以運行了触机。jdk是java程序的開發(fā)編譯運行所需的。

而eclipse是用java編寫的玷或,所以他需要jre才可以運行儡首。所以如果不加入的話會發(fā)現(xiàn)打不開eclipse。電腦中的其他用java編寫的程序沒有jre也是不能運行的偏友。

所以上邊jdk外邊的這個jre就是做這個用的蔬胯。而jdk里面的jre,是在ide(集成開發(fā)環(huán)境位他,如eclipse)里面編譯運行java程序用的氛濒。

JDK除了jre之外,主要還包括類庫(lib文件夾中棱诱,封裝了java常用類)和工具(bin文件夾中泼橘,如java文件到class文件的編譯程序)。

打開eclipse->Preferebces->java->Installed JREs,會發(fā)現(xiàn)Location為jdk的目錄迈勋,如下圖:


圖片.png

說明eclipse的編譯開發(fā)環(huán)境用的是jdk文件夾下的jre炬灭。

好,弄清楚這個問題靡菇,我們接續(xù)探究jre與jdk邏輯關(guān)系呢重归?這邊這張圖可以很清楚的說明問題。


圖片.png

上圖是從整體上闡述了jre和jdk的關(guān)系厦凤,那么jre作為java的運行環(huán)境鼻吮,他究竟是怎么工作的呢?這就不得不說說jdk的組成较鼓,它由基本的類庫椎木,工具和jre組成(當然還包括其他的违柏,這里不過多討論),類庫就是java封裝好的一系列類(都繼承于Object)香椎。.java文件首先要編譯成.class文件漱竖,才能放到JVM中運行,那JVM和JRE又是什么關(guān)系呢畜伐?我們來看下邊這張圖:


圖片.png

從圖中我們可以清晰的看到JVM實際上是JRE的一部分馍惹,jre除了JVM之外還包括JVM運行時所需要的類庫(lib文件夾下),打開jre的文件夾玛界,如下圖:


圖片.png

我們可以清晰的看到它包括兩個文件夾:bin和lib万矾,bin里面放的是可執(zhí)行文件,可以理解為JVM慎框,lib里面放的是JVM依賴的類庫良狈。

好了到這里 JDK、JRE鲤脏、JVM的關(guān)系清楚了吧们颜?那么我們接著來探究Andriod SDK 與前三者是什么關(guān)系呢吕朵?為什么配置Andriod SDK之前必須配置好JDK呢猎醇?

原因其實很簡單,因為Andriod是用java語言開發(fā)的努溃,所以其依賴的類庫是在JDK中硫嘶,最終編寫好的.java文件還要通過JDK中的工具編譯成.class文件。唯一不同的是編譯成

.class文件之后梧税,它不是放在JVM中運行沦疾,而是通過打包工具ant,打包成DEX格式的文件在Android的的虛擬機Dalvik中運行第队。

這里可能還有一個疑問哮塞?android最終不是打包成了APK了嘛?這里怎么又出現(xiàn)了DEX凳谦?

APK其實只是個壓縮文件忆畅,安裝用的,安裝好之后Dalvik其實還是解析的APK解壓出的DEX文件尸执,來加載里面的.class文件來執(zhí)行家凯。

為了便于理解,請見下圖:


圖片.png

至于JVM 與Dalvik的差別如失,從上述的討論中很明顯的看出:

JVM解釋運行的是.class文件绊诲,而Dalvik解釋運行的是.dex文件(其實dex就是class的打包形式,最終還是解釋運行的還是dex中的class)褪贵。

再有其他的不同就是:

JVM是基于棧作為存儲空間的掂之,而Dalvik是基于寄存器的,而且每個安卓應(yīng)用都有自己的Dalvik虛擬機,而JVM所以應(yīng)用只有一個世舰。

具體還有其他的不同橄镜,讀者可以參考網(wǎng)上的其他文章,講的都很詳細冯乘,不在本文的討論范圍固不多贅述了洽胶。

PS:由于Dalvik是基于寄存器的,而寄存器的數(shù)量有65536個裆馒,所以我們會發(fā)現(xiàn)當dex太大的時候姊氓,會報65536的錯誤,這時候就明白了為什么大型的APP需要分包處理了喷好。

至此JDK JRE Android SDk JVM Dalvik 的關(guān)系是不是都清楚了翔横。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梗搅,隨后出現(xiàn)的幾起案子禾唁,更是在濱河造成了極大的恐慌,老刑警劉巖无切,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荡短,死亡現(xiàn)場離奇詭異,居然都是意外死亡哆键,警方通過查閱死者的電腦和手機掘托,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來籍嘹,“玉大人闪盔,你說我怎么就攤上這事∪枋浚” “怎么了泪掀?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颂碘。 經(jīng)常有香客問我异赫,道長,這世上最難降的妖魔是什么凭涂? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任祝辣,我火速辦了婚禮,結(jié)果婚禮上切油,老公的妹妹穿的比我還像新娘蝙斜。我一直安慰自己,他們只是感情好澎胡,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布孕荠。 她就那樣靜靜地躺著娩鹉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稚伍。 梳的紋絲不亂的頭發(fā)上弯予,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音个曙,去河邊找鬼锈嫩。 笑死,一個胖子當著我的面吹牛垦搬,可吹牛的內(nèi)容都是我干的呼寸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼猴贰,長吁一口氣:“原來是場噩夢啊……” “哼对雪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起米绕,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瑟捣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后栅干,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迈套,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年非驮,在試婚紗的時候發(fā)現(xiàn)自己被綠了交汤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏赦。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劫笙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出星岗,到底是詐尸還是另有隱情填大,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布俏橘,位于F島的核電站允华,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寥掐。R本人自食惡果不足惜靴寂,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望召耘。 院中可真熱鬧百炬,春花似錦、人聲如沸污它。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至德澈,卻和暖如春歇攻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梆造。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工缴守, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镇辉。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓斧散,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摊聋。 傳聞我的和親對象是個殘疾皇子鸡捐,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容