private JRE与public JRE

 

l           private JRE

jdk1.6.0_18目录下面有一个子目录jre,这就是private JRE所在的目录。所谓私有JRE,即JDK中的工具包需要用到的JRE。这个jre目录名称是固定的,不能更改。为什么JDK中的工具包需要用到JRE呢?比如javac.exe,这是JDK工具包中的编译器,用来将JAVA源文件编译为.class文件,这个编译器实际上是用Java语言编写的,它的主要执行类位于Program Files\Java\jdk1.6.0_18\lib\tools.jar下面,这时候javac.exe就会使用私有JRE来运行tools.jar这个包里面编译器类,来对JAVA源文件进行编译。实际上,在JDK安装目录下面的bin目录中的大部分.exe文件,都仅仅只是一个外壳(包装器)而已。

l           public JRE

公共JRE在安装过程中可以选择为别的位置。它包括各种浏览器的插件,以便于能够在浏览器中执行JAVA小应用程序(Applet)。公共JRE在安装过程中,会把一部分动态链接库(DLL文件)和java.exe拷贝到c:/windows/system32目录下面。此目的是为了方便客户在安装完JRE之后,无需改动PATH环境变量(搜索路径)即可运行JAVA程序。那么,如果我们在安装完JRE之后(无论是单独安装JRE,还是在安装JDK的同时选择安装公共JRE都是一样的),不作任何环境变量的配置,直接打开控制台,运行java命令,会如何呢?控制台将会执行在c:/windows/system32目录下的java.exe外壳程序,它将会找到公共JRE中的jvm.dll(这才是真正的JAVA虚拟机)以及其它需要的动态链接库,运行Java虚拟机,Java虚拟机会自动加载公共JRE下面的一个rt.jar包,它是Java核心类库所在。

c:/windows/system32/目录下的java.exe程序是如何得知公共JRE所在的位置的呢?这主要通过注册表。

 

注册表信息:

 

 

点开Java Development Kit下面的1.6,可以看到有JavaHome的定义(指向jdk1.6.0_18目录):



 

 

点开Java Runtim Environment下面的1.6可以看到JavaHome(指向了jre6目录)



 

 

由上可知,java.exe通过注册表(通过CurrentVersion得到当前版本号,通过版本号找到JavaHome)找到了公共JRE所在,也就找到了JAVA虚拟机的所在。

 

所以,我们首先要搞清楚哪个java.exe被执行了,其次要搞清楚java.exe找到了哪个JRE!这两件事情弄清楚了,很多其它的问题,也就有答案了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值