日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JDK、SDK、JRE、JVM概念詳解

 

JDK、SDK、JRE、JVM概念的認(rèn)識(shí)我們可以通過(guò)HelloWorld來(lái)理解這幾個(gè)縮寫(xiě)詞的具體含義:

 
 
 
 
  1. public class HelloWorld {  
  2.   public static void main(String[] args) {   
  3.    System.out.println("helloworld");   
  4.   }  

編譯之后, 我們得到了HelloWorld.class(圖中的"Your program's class files")

在HelloWorld里面, 我們調(diào)用了 JAVA API中的 java.lang.System這個(gè)類的靜態(tài)成員對(duì)象 out, out 的靜態(tài)方法: public static void println(String string);

然后我們讓虛擬機(jī)器來(lái)執(zhí)行這個(gè)HelloWorld。

1. 虛擬機(jī)會(huì)在classpath中找到HelloWorld.class。

2. 虛擬機(jī)中的解釋器(interpret)會(huì)把HelloWorld.class解釋成字節(jié)碼。

3. 把解釋后的字節(jié)碼交由execution engin執(zhí)行。

4. execution engin會(huì)調(diào)用native method(即平臺(tái)相關(guān)的字節(jié)碼)來(lái)在host system的stdout(顯示器)的指定部分打印出指定的字符串。

5. 這樣, 我們就看到"helloworld"字樣了。

有了這個(gè)流程后, 我們就好理解上面幾個(gè)術(shù)語(yǔ)了:

◆JDK: Java develop kit (Java 開(kāi)發(fā)包)

◆SDK: software develop kit, 以前JDK 叫做Java software develop kit, 后來(lái)出了1.2版本后, 就改名叫JDK了, 省時(shí)省力, 節(jié)約成本。

◆JRE. Java runtime environment 我們的helloworld必須在JRE(Java運(yùn)行環(huán)境,Java運(yùn)行環(huán)境又叫Java平臺(tái))里面, 才能跑起來(lái)。 所以, 顯然地, JRE其實(shí)就是JDK + JVM

◆JVM Java virtual machine. 簡(jiǎn)單地講, 就是把class文件變成字節(jié)碼, 然后送到excution engin中執(zhí)行。 而為什么叫虛擬機(jī), 而不叫真實(shí)機(jī)呢? 因?yàn)镴VM本身是又不能運(yùn)算, 又不能讓顯示器顯示"helloworld"的, 它只能再調(diào)用host system的API, 比如在w32里面就會(huì)調(diào)c++的API, 來(lái)讓CPU幫他做做算術(shù)運(yùn)算, 來(lái)調(diào)用c++里面的API來(lái)控制顯示器顯示顯示字符串。 而這些API不是JDK里面有的,我們平時(shí)又看不見(jiàn)的,所以我們就叫它native api了

◆解釋平臺(tái)無(wú)關(guān)。 有人會(huì)說(shuō), 在linux的里面調(diào)用native api與w32里面調(diào)用的api肯定不一樣吧? 那為什么說(shuō)Java是平臺(tái)無(wú)關(guān)的呢?
其實(shí)是這樣的, 君不見(jiàn)java.sun.com里面又有jdk-for-w32又有jdk-for-linux下載嗎? 剛才不是說(shuō)了嗎? native api, native api, 就是我們平時(shí)看不見(jiàn)的api嗎! 調(diào)用native這些煩瑣的活兒都讓jdk去做了。 所以我們調(diào)用的時(shí)候只用知道jdk(Java api) 里面的java.io.*能提供磁盤(pán)訪問(wèn)功能, java.awt.* 能畫(huà)個(gè)框框畫(huà)個(gè)圓圓就行了嗎。 至于JDK又是怎么調(diào)用的, 在LINXU上更圓呢? 還是在W32上更圓,這個(gè)就是JDK個(gè)人的事情了。(理論上講是一樣圓的, 當(dāng)然這又和顯示器是否純平相關(guān)了)

同時(shí), 這里就引申出了另一個(gè)話題。 既如何編寫(xiě)平臺(tái)無(wú)關(guān)的Java程序。 其中關(guān)鍵的一條, 就是調(diào)用且只調(diào)用jdk中的API, 而不要私自調(diào)用native api。 原因很簡(jiǎn)單啊, JDK-for-linux和JDK-for-w32表面都是一樣的, 所以我在w32里面調(diào)用JDK寫(xiě)的Java程序,在linux里面也會(huì)一樣的寫(xiě)法啊, 所以就可以移植來(lái)移植去都沒(méi)問(wèn)題。但是如果我在w32里面調(diào)用了 一個(gè)圖形顯示的native api, 當(dāng)我移植到linux去的時(shí)候, 誰(shuí)又能保證里面也有相同名稱, 相同參數(shù),相同返回值, 相同功能的native api供我調(diào)用呢!

以上就是JDK、SDK、JRE、JVM概念詳解的介紹,其中的含義還需要慢慢琢磨... ...


當(dāng)前標(biāo)題:JDK、SDK、JRE、JVM概念詳解
網(wǎng)頁(yè)地址:http://m.5511xx.com/article/djsosdh.html