幾個概念
一、
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。
三、
細節一、
安裝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裏的這三個程序刪除纔可以保證修改的環境變量有效。