java两个jre_为什么会有两个jre?060925(原创)
一、
jre
和
jdk
有什么區(qū)別
???
為什么安裝
jdk
后會(huì)有兩套
jre
?(一套一般在
c:\program files\java\jre
下,一套自己選擇的
jdk
安裝路徑下,一般為
d:\jdk1.5\jre
;)
答:
1.1
以下是
java.sun.com
上的官方解釋:
Question: Why would anyone want the JRE if the Java 2 SDK has
everything in the JRE and more?
Answer: The JRE is smaller and therefore easier to download or
distribute with software than the Java 2 SDK. Most users of Java
technology are people who just want to run applets and applications
developed by others. They're not interested in developing any
applications themselves. The relatively small Java RE is made for such
end users. They can download the Java RE themselves from the web, or
software vendors can include it in their own products. The typical end
-user doesn't need the bulkier Java 2 SDK with its development tools.
1.2
自己的理解:
問(wèn):
jre
和
jdk
有什么區(qū)別
?
答:
JRE
提供了
JAVA
程序運(yùn)行的必要環(huán)境平臺(tái);
jdk
提供了
java
的編程環(huán)境,它包含編譯調(diào)試的環(huán)境功能,包含
JRE
;
如果只安裝了
jre
,那么
cmd
命令行中只能執(zhí)行
java
指令,不能執(zhí)行
javac
;
安裝好
jdk
后才能執(zhí)行
javac
,因?yàn)?/p>
jre
中不包含用于開(kāi)發(fā)的編譯環(huán)境;
問(wèn):
為什么安裝
jdk
后會(huì)有兩套
jre
?
答:
l
之所以需要兩套
jre
,是因?yàn)榭梢苑謸?dān)工作;當(dāng)用戶只需要執(zhí)行
java
的程序時(shí),那
l
么
c:\program files\java\jre
下的
jre
就
ok
!當(dāng)用戶是
java
程序員,需要
java
開(kāi)發(fā)環(huán)境,那么開(kāi)發(fā)時(shí),系統(tǒng)就會(huì)優(yōu)先去找“
java
、
javac
”這些命令本身的目錄或者他們的父目錄的
jre
;這樣開(kāi)發(fā)時(shí)一般運(yùn)行的是
jdk
下的
jre
;而運(yùn)行外部程序時(shí),一般運(yùn)行的是
l
c:\program files\
下的
jre
,實(shí)現(xiàn)了分工,不同的
jre
負(fù)責(zé)各自范圍的內(nèi)容;
l
詳細(xì)的解釋和學(xué)習(xí),參看王森的
<
深度歷險(xiǎn)
>>
的第二章“深入
java 2 SDK
”
l
,講得非常明白到位!
相關(guān)內(nèi)容摘錄如下:(圖略)
您所執(zhí)行的是哪一個(gè)
java.exe ?
既然您的電腦裡頭至少有兩套
JRE
,那麼誰(shuí)來(lái)決定用哪一套
JRE
呢
?
這個(gè)重
責(zé)大任就落在
java.exe
的身上。
當(dāng)我們?cè)诿盍休斎?/p>
java XXX
的時(shí)候,
java.exe
的工作就是找到合適的
JRE
來(lái)執(zhí)行類
別
檔。
java.exe
依照底
下邏輯來(lái)尋找
JRE:
1.
自己的目錄下有
沒(méi)
有
JRE
目錄。
(
這個(gè)部分這樣
說(shuō)
並不是非常精確,原因
請(qǐng)?jiān)斠?jiàn)
JDK
原始碼,這此不特
別說(shuō)
明
)
2.
父目錄底下
JRE
子目錄。
3.
查詢
Windows
Registry(
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java
Runtime Environment\
)
。
所以,
java.exe
的執(zhí)行結(jié)果和您電腦裡面哪一個(gè)
java.exe
被執(zhí)行,然後哪一
套
JRE
被拿來(lái)執(zhí)行
Java
應(yīng)用程式有莫大的關(guān)係。
l
另外,在實(shí)際的項(xiàng)目開(kāi)發(fā)中,我們發(fā)現(xiàn)很多時(shí)候
eclipse
老報(bào)錯(cuò),提示
java
虛擬機(jī)
l
內(nèi)存不足,但是機(jī)器的內(nèi)存是
2G
的,怎么可能內(nèi)存不足呢?后來(lái)發(fā)現(xiàn)是
jvm
所支持
l
的內(nèi)存最高只能設(shè)置為
64M
的緣故,這時(shí)我們把一套
jre
拷貝到
eclipse
的目錄下,讓
eclipse
單獨(dú)跑一套
jre
,多個(gè)
jvm
分管工作,
jvm
內(nèi)存不足的問(wèn)題就解決了。
二、
jdk
下的
lib
與
jre
下的
lib
有何區(qū)別?
自己的理解:
jdk
下的
lib
包括
java
開(kāi)發(fā)環(huán)境的
jar
包,
jre
下的
lib
只是運(yùn)行
java
程序的
jar
包;
總結(jié)
以上是生活随笔為你收集整理的java两个jre_为什么会有两个jre?060925(原创)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: docker如何移除所有的mysql_d
- 下一篇: java 报文长度计算_从TcpClie