一、 jre jdk 有什么区别 ??? 为什么安装 jdk 后会有两套 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

自己的理解:

问: jre jdk 有什么区别 ?

答:

JRE 提供了 JAVA 程序运行的必要环境平台;

jdk 提供了 java 的编程环境,它包含编译调试的环境功能,包含 JRE

 

如果只安装了 jre ,那么 cmd 命令行中只能执行 java 指令,不能执行 javac

安装好 jdk 后才能执行 javac ,因为 jre 中不包含用于开发的编译环境;

 

问:

为什么安装 jdk 后会有两套 jre

答:

l         之所以需要两套 jre ,是因为可以分担工作;当用户只需要执行 java 的程序时,那

l c:\program files\java\jre 下的 jre ok !当用户是 java 程序员,需要 java 开发环境,那么开发时,系统就会优先去找“ java javac ”这些命令本身的目录或者他们的父目录的 jre ;这样开发时一般运行的是 jdk 下的 jre ;而运行外部程序时,一般运行的是

l c:\program files\ 下的 jre ,实现了分工,不同的 jre 负责各自范围的内容;

 

l         详细的解释和学习,参看王森的 <<java 深度历险 >> 的第二章“深入 java 2 SDK

l ,讲得非常明白到位!

相关内容摘录如下:(图略)

您所執行的是哪一個 java.exe ?

既然您的電腦裡頭至少有兩套 JRE ,那麼誰來決定用哪一套 JRE ? 這個重

責大任就落在 java.exe 的身上。

當我們在命令列輸入

java XXX

的時候, java.exe 的工作就是找到合適的 JRE 來執行類 檔。 java.exe 依照底

下邏輯來尋找 JRE:

1. 自己的目錄下有 JRE 目錄。 ( 這個部分這樣 並不是非常精確,原因

請詳見 JDK 原始碼,這此不特 別說 )

2. 父目錄底下 JRE 子目錄。

3. 查詢 Windows

Registry( HKEY_LOCAL_MACHINE\Software\JavaSoft\Java

Runtime Environment\ )

所以, java.exe 的執行結果和您電腦裡面哪一個 java.exe 被執行,然後哪一

JRE 被拿來執行 Java 應用程式有莫大的關係。

 

l         另外,在实际的项目开发中,我们发现很多时候 eclipse 老报错,提示 java 虚拟机

l 内存不足,但是机器的内存是 2G 的,怎么可能内存不足呢?后来发现是 jvm 所支持

l 的内存最高只能设置为 64M 的缘故,这时我们把一套 jre 拷贝到 eclipse 的目录下,让 eclipse 单独跑一套 jre ,多个 jvm 分管工作, jvm 内存不足的问题就解决了。

 

 

二、 jdk 下的 lib jre 下的 lib 有何区别?

自己的理解:

jdk 下的 lib 包括 java 开发环境的 jar 包, jre 下的 lib 只是运行 java 程序的 jar 包;