JDK 与 JRE的区别(转)

 

JDK JRE 的区别

简单的说 JDK 是面向开发人员使用的 SDK ,它提供了 Java 的开发环境和运行环境。 SDK Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JDK
就是 Java Development Kit
JRE
Java Runtime Enviroment 是指 Java 的运行环境,是面向 Java 程序的使用者,而不是开发者。

如果安装了 JDK ,会发同你的电脑有两套 JRE ,一套位于 /jre 另外一套位于 C:/Program Files/Java/j2re1.4.1_01 目录下,后面这套比前面那套少了 Server 端的 Java 虚拟机,不过直接将前面那套的 Server Java 虚拟机复制过来就行了。而且在安装 JDK 以选择是否安装这个位于 C:/Program Files/Java 目录下的 JRE 。如果你只安装 JRE ,而不是 JDK ,那么只会在 C:/Program Files/Java 目录下安装唯一的一套 JRE

JRE
的地位就象一台 PC 机一样,我们写好的 Win32 应用程序需要操作系统帮我们运行,同样的,我们编写的 Java 程序也必须要 JRE 才能运行。所以当你装完 JDK 后,如果分别在硬盘上的两个不同 地方安装了两套 JRE ,那么你可以想象你的电脑有两台虚拟的 Java PC 机,都具有运行 Java 程序的功能。所以我们可以说,只要你的电脑安装了 JRE ,就可以正确运行 Jav a 应用程序。

1
、为什么 Sun 要让 JDK 安装两套相同的 JRE ?这是因为 JDK 里面有很多用 Java 所编写的开发工具(如 javac.exe jar.exe 等),而 且都放置在 /lib/tools.jar 里。从下面例子可以看出,先将 tools.jar 改名为 tools1.jar ,然后运行 javac.exe ,显示如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入 javac.exe 与输入 java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明 javac.exe 只是一个包装器( Wrapper ),而制作的目的是为了让开发者免于输入太长的指命。 而且可以发现 /lib 目录下的程序都很小,不大于 2 9K ,从这里我们可以得出一个结论。就是 JDK 里的工具几乎是用 Java 所编写,所以也是 Java 应用程序,因此要使用 JDK 所附的工具来开发 Java 程序,也必须要自行附一套 JRE 才行,所以位于 C:/Program Files/Java 目录下的那套 JRE 就是用来运行一般 Java 程序用的。

2
、如果一台电脑安装两套以上的 JRE ,谁来决定呢?这个重大任务就落在 java.exe 身上。 Java.exe 的工作就是找到合适的 JRE 来运行 Java 程序。 Java.exe 依照底下的顺序来查找 JRE :自己的目录下有没有 JRE ;父目录有没有 JRE ;查询注册表: [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment] 所以 java.exe 的运行结果与你的电脑里面哪个 JRE 被执行有很大的关系。

3
、介绍 JVM JRE 目录下的 Bin 目录有两个目录: server client 。这就是真正的 jvm.dll 所在。 jvm.dll 无法单独工作,当 jvm.dll 启动后,会使用 explicit 的方法(就是使用 Win32 API 之中的 LoadLibrary() GetProcAddress() 来载入辅助用的动态链接库),而这些辅助用的动态链接库( .dll )都必须位 jvm.dll 所在目录的父目录之中。因此想使用哪个 JVM ,只需要设置 PATH ,指向 JRE 所在目录底下的 jvm.dll

 

参考资料:http://iask.sina.com.cn/b/5580306.html?from=related

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值