天天看點

JRE和JDK1,什麼是JRE,JDK?

1,什麼是JRE,JDK?

JRE和JDK1,什麼是JRE,JDK?

簡單了解:

JRE:JVM+Java library(類庫)

JDK:JRE+Tool(開發工具)

其包含關系如下圖:

JRE和JDK1,什麼是JRE,JDK?

2,為什麼JDK中包含一個JRE呢?

其一,開發完的程式,要運作一下看看效果。

其二,也是最重要的,JDK中的開發工具其實都是java語言編寫的應用程式,為了友善使用才打包成exe檔案,

如果沒有JRE,那麼這些工具是運作不了的。

3,Java中JDK和JRE的差別和作用是什麼?

JDK是Java的開發工具,它不僅提供了Java程式運作所需的JRE,還提供了一系列的編譯,運作等工具,如javac,java,javaw等。JRE隻是Java程式的運作環境,它最核心的内容就是JVM(Java虛拟機)及核心類庫。

ADD:(小結)

1.JVM -- java virtual machine

JVM就是我們常說的java虛拟機,它是整個java實作跨平台的最核心的部分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛拟機上執行,也就是說class并不直接與機器的作業系統相對應,而是經過虛拟機間接與作業系統互動,由虛拟機将程式解釋給本地系統執行。

2.JRE -- java runtime environment

JRE 是指java運作環境。光有JVM還不能成class的執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。在JDK的安裝目錄裡你 可以找到jre目錄,裡面有兩個檔案夾bin和lib,在這裡可以認為bin裡的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和lib和起 來就稱為jre。是以,在你寫完java程式編譯成.class之後,你可以把這個.class檔案和jre一起打包發給朋友,這樣你的朋友就可以運作你 寫程式了。(jre裡有運作.class的java.exe)

3.JDK -- java development kit

JDK是 java開發工具包,基本上每個學java的人都會先在機器上裝一個JDK,那他都包含哪幾部分呢?讓我們看一下JDK的安裝目錄。在目錄下面有六個檔案夾、一個src類庫源碼壓縮包、和其他幾個聲明檔案。其中,真正在運作java時起作用的是以下四個檔案夾:bin、include、lib、jre。現 在我們可以看出這樣一個關系,JDK包含JRE,而JRE包含JVM。

bin:最主要的是編譯器(javac.exe)

include:java和JVM互動用的頭檔案

lib:類庫

jre:java運作環境

(注意:這裡的bin、lib檔案夾和jre裡的bin、lib是不同的)總的來說JDK是用于java程式的開發,而jre則是隻能運作class而沒有編譯的功能。

eclipse、idea等其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,是以在安裝時你會發現他們隻要求你選中jre路徑就ok了。

如果機子裡安裝了多個版本的jdk,如下:

BEA Weblogic Server 7.0 自帶一套 JDK1.3.1_02 

下載下傳了一套最新的JDK1.4.1_02 

JBuilder9自帶一套JKD1.4.1_02 

Oracle 8.1.7自帶一套JRE1.1.7 

Ration Rose自帶一套JDK1.3 

DreamWeaver自帶一套JDK1.3

6套JRE,每套JRE都被各自安裝到不同的目錄,不會互相影響。當在控制台執行java.exe, 作業系統 尋找JRE的方式如下:

先找目前目錄下有沒有JRE 

再找父目錄下有沒有JRE 

接着在PATH路徑中找JRE 

系統資料庫HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment/ 檢視CurrentVersion的鍵值指向哪個JRE

      最常用的是在PATH路徑中找JRE,一般情況下,自己的程式運作之前都會先在批處理檔案裡面臨時設定PATH,把自己用的JRE放到PATH路徑最前面,是以肯定會運作自己帶的JRE,不會造成版本混亂。

-------------------------------------------------------------------------------------

    JAR(Java Archive,Java 歸檔檔案)是與平台無關的檔案格式,它允許将許多檔案組合成一個壓縮檔案。為 J2EE 應用程式建立的 JAR 檔案是 EAR 檔案(企業 JAR 檔案)。

可執行的JAR

 一個可執行的 jar 檔案是一個自包含的 Java 應用程式,它存儲在特别配置的JAR 檔案中,可以由 JVM 直接執行它而無需事先提取檔案或者設定類路徑。要運作存儲在非可執行的 JAR 中的應用程式,必須将它加入到您的類路徑中,并用名字調用應用程式的主類。但是使用可執行的 JAR 檔案,我們可以不用提取它或者知道主要入口點就可以運作一個應用程式。可執行 JAR 有助于友善釋出和執行 Java 應用程式。

建立可執行 JAR

  建立一個可執行 JAR 很容易。首先将所有應用程式代碼放到一個目錄中。假設應用程式中的主類是 com.mycompany.myapp.Sample 。您要建立一個包含應用程式代碼的 JAR 檔案并辨別出主類。為此,在某個位置(不是在應用程式目錄中)建立一個名為 manifest 的檔案,并在其中加入以下一行:

  Main-Class: com.mycompany.myapp.Sample

  然後,像這樣建立 JAR 檔案:

  jar cmf manifest ExecutableJar.jar application-dir

  所要做的就是這些了 -- 現在可以用 java -jar 執行這個 JAR 檔案 ExecutableJar.jar。

  一個可執行的 JAR 必須通過 menifest 檔案的頭引用它所需要的所有其他從屬 JAR。如果使用了 -jar 選項,那麼環境變量 CLASSPATH 和在指令行中指定的所有類路徑都被 JVM 所忽略。

啟動可執行 JAR

  既然我們已經将自己的應用程式打包到了一個名為 ExecutableJar.jar 的可執行 JAR 中了,那麼我們就可以用下面的指令直接從檔案啟動這個應用程式:

  java -jar ExecutableJar.jar

  

META-INF 目錄

  大多數 JAR 檔案包含一個 META-INF 目錄,它用于存儲包和擴充的配置資料,如安全性和版本資訊。Java 2 平台識别并解釋 META-INF 目錄中的下述檔案和目錄,以便配置應用程式、擴充和類裝載器:  MANIFEST.MF。這個 manifest 檔案定義了與擴充和包相關的資料。 

  INDEX.LIST。 這個檔案由 jar 工具的新選項 -i 生成,它包含在應用程式或者擴充中定義的包的位置資訊。它是 JarIndex 實作的一部分,并由類裝載器用于加速類裝載過程。 

  xxx.SF。 這是 JAR 檔案的簽名檔案。占位符 xxx辨別了簽名者。 

  xxx.DSA。 與簽名檔案相關聯的簽名程式塊檔案,它存儲了用于簽名 JAR 檔案的公共簽名

轉載文章:點選打開連結http://blog.csdn.net/wym19830218/article/details/5399401