??? 開始接觸Java的時(shí)候覺得Java虛擬機(jī)很麻煩,不明白JRE與JDK的區(qū)別是什么?后來搞清楚JRE是個(gè)運(yùn)行環(huán)境,JDK是個(gè)開發(fā)環(huán)境。因此寫Java程序的時(shí)候需要JDK,而運(yùn)行Java程序的時(shí)候就需要JRE。而JDK里面已經(jīng)包含了JRE,因此對JAVA_HOME設(shè)置為JDK的路徑時(shí)也可以正常運(yùn)行Java程序,但是JDK比較大包括了許多與運(yùn)行無關(guān)的內(nèi)容,因此運(yùn)行普通的Java程序無須安裝JDK。
??? 但是用了Eclipse又有了疑問,為什么這個(gè)開發(fā)環(huán)境JRE就可以正常運(yùn)行呢?其實(shí)在Eclipse中內(nèi)嵌了Java編譯器,并且與JDK中的javac完全相容,因此無須使用JDK也可以直接編譯Java程序。
??? 學(xué)習(xí)J2EE的時(shí)候又開始不明白,為什么Tomcat和Apusic用JRE就可以啟動(dòng),Weblogic用JDK才能啟動(dòng)呢?原因是Tomcat和Apusic 4都已經(jīng)包括了一個(gè)源代碼編譯器,而Weblogic沒有包括這個(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編譯器,而是通過用戶安裝的JDK來完成JSP的編譯工作,這個(gè)也就是為什么Apusic 5.0必須通過JDK啟動(dòng)的原因。