開(kāi)始接觸Java的時(shí)候覺(jué)得Java虛擬機(jī)很麻煩,不明白JRE與JDK的區(qū)別是什么?后來(lái)搞清楚JRE是個(gè)運(yùn)行環(huán)境,JDK是個(gè)開(kāi)發(fā)環(huán)境。
因此寫(xiě)Java程序的時(shí)候需要JDK,而運(yùn)行Java程序的時(shí)候就需要JRE。而JDK里面已經(jīng)包含了JRE,因此對(duì)JAVA_HOME設(shè)置為JDK的路徑時(shí)也可以正常運(yùn)行Java程序,但是JDK比較大包括了許多與運(yùn)行無(wú)關(guān)的內(nèi)容,因此運(yùn)行普通的Java程序無(wú)須安裝JDK。
但是用了Eclipse又有了疑問(wèn),為什么這個(gè)開(kāi)發(fā)環(huán)境JRE就可以正常運(yùn)行呢?其實(shí)在Eclipse中內(nèi)嵌了Java編譯器,并且與JDK中的javac完全相容,因此無(wú)須使用JDK也可以直接編譯Java程序。
學(xué)習(xí)J2EE的時(shí)候又開(kāi)始不明白,為什么Tomcat和Apusic用JRE就可以啟動(dòng),Weblogic用JDK才能啟動(dòng)呢?原因是Tomcat和Apusic 4都已經(jīng)包括了一個(gè)源代碼編譯器,而Weblogic沒(méi)有包括這個(gè)編譯器包。
那么為什么需要編譯器呢?因?yàn)樵赪EB應(yīng)用中JSP文件是需要轉(zhuǎn)換成Servlet,這個(gè)Servlet文件還需要編譯成可以在JRE上執(zhí)行的class文件,因此必須提供有編譯能力的JDK,將JAVA_HOME設(shè)置為JDK的路徑就可以了。
那么新出現(xiàn)的Apusic 5.0呢?這個(gè)版本為了使大家可以靈活調(diào)整JVM的版本,因此不再提供自帶的Java編譯器,而是通過(guò)用戶安裝的JDK來(lái)完成JSP的編譯工作,這個(gè)也就是為什么Apusic 5.0必須通過(guò)JDK啟動(dòng)的原因。