官方介紹
JRE為Java Runtime Environment免費(fèi)版的簡(jiǎn)稱,Java SE Runtime Environment安裝版(包括Java Plug-in)是Sun的產(chǎn)品,包括兩部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上運(yùn)行、測(cè)試和傳輸應(yīng)用程序的Java平臺(tái)。它包括Java虛擬機(jī)(jvm)、Java核心類庫(kù)和支持文件。它不包含開發(fā)工具(JDK)--編譯器、調(diào)試器和其它工具。JRE需要輔助軟件--Java Plug-in--以便在瀏覽器中運(yùn)行applet。
Java Plug-in軟件允許Java Applet和JavaBean組件在使用Sun的Java Runtime Environment(JRE)的瀏覽器中運(yùn)行,而不是在使用缺省的Java運(yùn)行環(huán)境的瀏覽器中運(yùn)行。Java Plug-in可用于Netscape Navigator和Microsoft Internet Explorer。
J2RE是Java2 Runtime Environment,即Java運(yùn)行環(huán)境,只是強(qiáng)調(diào)其匹配Java2平臺(tái),有時(shí)簡(jiǎn)稱JRE。如果你只需要運(yùn)行Java程序或Applet,下載并安裝它即可。如果你要自行開發(fā) Java軟件,請(qǐng)下載JDK(JRE和JDK的區(qū)別)。在JDK中附帶有JRE。注意由于Microsoft對(duì)Java的支持不完全,請(qǐng)不要使用IE自帶的虛擬機(jī)來運(yùn)行 Applet,務(wù)必安裝一個(gè)JRE或JDK。
查找方法
JRE中由ClassLoader負(fù)責(zé)查找和加載程序引用到的類庫(kù),基礎(chǔ)類庫(kù)ClassLoader會(huì)到rt.jar中自動(dòng)加載,其它的類庫(kù),ClassLoader在環(huán)境變量CLASSPATH指定的路徑中搜索,按照先來先到的原則,放在CLASSPATH前面的類庫(kù)先被搜到,Java程序啟動(dòng)之前建議先把PATH和CLASSPATH環(huán)境變量設(shè)好,OS通過PATH來找JRE,確定基礎(chǔ)類庫(kù)rt.jar的位置,JRE的ClassLoader通過CLASSPATH找其它類庫(kù)。但有時(shí)候會(huì)出現(xiàn)這樣的情況,希望替換基礎(chǔ)類庫(kù)中的類庫(kù),那么也可以簡(jiǎn)單的通過-Djava.endrosed.path=...參數(shù)傳遞給java.exe,于是ClassLoader會(huì)先于基礎(chǔ)類庫(kù)使用java.endrosed.path參數(shù)指定路徑的類庫(kù)。因此Java的版本管理是非常簡(jiǎn)單有效的,也許很原始,不過很好用,簡(jiǎn)單就不容易出錯(cuò)。(所以我很奇怪Eric Ramond為什么批評(píng)Java的類庫(kù)管理機(jī)制,他還居然批評(píng)Java的接口,令人懷疑他對(duì)Java的了解程度)
注意事項(xiàng)
1、共享類庫(kù)需要在GAC(Global Assembly Cache)中注冊(cè),注冊(cè)過程比較復(fù)雜,首先要用工具生成公開/私有密鑰對(duì),然后結(jié)合密鑰和類庫(kù)版本號(hào)連編,最后使用工具注冊(cè)到GAC中好以后,會(huì)被放在"C:Winntassemblygac類庫(kù)的名稱空間版本號(hào)"目錄下,不同的類庫(kù)版本在注冊(cè)的時(shí)候會(huì)按照版本號(hào)分開放置:
·某類庫(kù)1.0版本 C:Winntassemblygac名稱1.0名稱.dll
·某類庫(kù)1.1版本 C:Winntassemblygac名稱1.1名稱.dll
2、可以同時(shí)存在一個(gè)類庫(kù)的n個(gè)版本,至于在程序中用哪個(gè)版本,在程序的配置文件中聲明,CLR會(huì)根據(jù)聲明來調(diào)用相應(yīng)的版本的類庫(kù)。我覺得.Net實(shí)現(xiàn)方法未免太復(fù)雜了一些,將所有共享類庫(kù)都塞到一個(gè)系統(tǒng)目錄下,并且同一個(gè)類庫(kù)還有n個(gè)版本,將來.Net第三方開發(fā)的類庫(kù)逐漸豐富起來以后,.Net類庫(kù)的GAC也會(huì)越來越龐大,會(huì)不會(huì)也搞得和Windows注冊(cè)表一樣難以維護(hù)?軟件發(fā)布到服務(wù)器上的時(shí)候,類庫(kù)要再注冊(cè)一次,服務(wù)器會(huì)逐漸形成一個(gè)龐大的樹狀的GAC,GAC里面存放著組件的n個(gè)版本。試想經(jīng)過一段時(shí)間之后,C:Winntassemblygac目錄會(huì)越來越龐大,有的組件甚至有n個(gè)版本都放在那里,你又不敢隨便刪除,不知道是不是有程序需要使用,我不明白MS為什么要把這么簡(jiǎn)單的事情搞到這么復(fù)雜?
討論:全局程序集緩存不會(huì)是無限大的,所以“將來.Net第三方開發(fā)的類庫(kù)逐漸豐富起來以后,.Net類庫(kù)的GAC也會(huì)越來越龐大,會(huì)不會(huì)也搞得和Windows注冊(cè)表一樣難以維護(hù)?”這是杞人憂天。原因如下:第一是操作系統(tǒng)的生命周期一般不會(huì)是無限長(zhǎng)的,而且越來越短,Windows為證,同時(shí).Net Framework也在不斷更迭,在十年左右的時(shí)間里,全球的程序產(chǎn)量是有限的,高質(zhì)量的第三方開發(fā)的類庫(kù)更是有限,需要注冊(cè)到GAC的就更少了。
主要特性
Lambda表達(dá)式,一種新的語言特性,能夠使功能作為方法參數(shù)或?qū)⒋a作為數(shù)據(jù)。
顯著增加和完善Java語言特性,增添標(biāo)準(zhǔn)庫(kù),包括默認(rèn)方法,新的java.util.stream包及 Date-Time API。
Compact Profiles包含 Java SE平臺(tái)預(yù)定義子集,使程序員無需部署在整個(gè)平臺(tái),可運(yùn)行在小型設(shè)備上。
安全性包括更新可Java加密體系架構(gòu);限制doPrivileged;SSL/TLS Server Name Indication (SNI) Extension以及增強(qiáng)密鑰庫(kù)。
JavaFX更新文檔
新的JavaScript引擎Nashorn