JDK/JRE/SERVER/CLIENT/JAVA/JAVAC/JAVAW等等

幾個概念


一、

SDK是Software Development Kit 一般指軟件開發包,可以包括函數庫、編譯程序等。

JDK是Java Development Kit.簡單的說JDK是面向開發人員使用的SDK,它提供了Java的開發環境和運行環境。

JRE是Java Runtime Enviroment是指Java的運行環境,是面向Java程序的使用者,而不是開發者。


二、

JVM Server模式與client模式啓動,最主要的差別在於:-Server模式啓動時,速度較慢,但是一旦運行起來後,性能將會有很大的提升。

原因是:當虛擬機運行在-client模式的時候,使用的是一個代號爲C1的輕量級編譯器, 而-server模式啓動的虛擬機採用相對重量級,代號爲C2的編譯器。C2比C1編譯器編譯的相對徹底,,服務起來之後,性能更高。java -version 可以直接查看出你使用的是client還是server。

java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode)

兩種模式的切換可以通過更改jvm.cfg配置文件來實現或者在啓動參數後面加上-server或者-client:

32位的虛擬機在目錄JAVA_HOME/jre/lib/i386/jvm.cfg,

64位的在JAVA_HOME/jre/lib/amd64/jvm.cfg, 目前64位只支持server模式,  配置內容大致如下

32位                                                           64位
-server KNOWN                                                  -server KNOWN
-client KNOWN                                                  -client IGNORE
-hotspot ALIASED_TO -client                                    -hotspot ALIASED_TO -server
-classic WARN                                                  -classic WARN
-native ERROR                                                  -native ERROR
-green ERROR                                                   -green ERROR

一般只要變更 -server KNOWN 與 -client KNOWN 兩個配置位置先後順序即可,前提是JAVA_HOME/jre/bin 目錄下同時存在 server 與client兩個文件夾,分別對應着各自的jvm。


三、

java:執行java字節碼文件,通過控制檯運行,關閉控制檯也會關閉java程序。
javaw:和java的功能一樣,但是不通過控制檯啓動,也就不關聯控制檯,一般用來啓動gui程序。
javac:用來編譯java源文件。


細節一、


安裝JDK時一定會在其子目錄下面安裝一個JRE,同時在安裝的過程也會詢問你是否要安裝一個外部的JRE。如果我們選擇安裝,則就同時擁有了兩個jre。這兩個JRE其實本質上是沒有任何分別的。最主要的區別在於:JDK目錄裏面的JRE主要是設計用來運行JDK自帶的那些工具的(Bin目錄下)。而外部的JRE在安裝的時候會自動拷貝到操作系統的某個路徑下面,一般是:C:\Windows\system32文件夾下,該文件夾下包含:java.exe、javaw.exe、javaws.exe 三個文件。因此我們只要安裝了外部的JRE,即使JDK沒有安裝,環境變量沒有配置,則運行Java程序時都是用的外部JRE的java.exe程序來運行的。這是因爲,默認情況下,system32這個path寫在我們自己配置的path前面,當然這個順序我們可以手動修改。

所以,這裏要注意的是,如果在沒有修改path的順序的情況下,C:\Windows\system32裏有這三個程序,那麼單單修改我們的java環境變量是不夠的,還要把C:\Windows\system32裏的這三個程序刪除纔可以保證修改的環境變量有效。


細節二、

現在的jdk不需要配置classpath了,默認會去找javac等目錄的上級目錄下的jre裏面的jar包。
發佈了40 篇原創文章 · 獲贊 36 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章