Java背地的秘密之深入Java虚拟机初探01

Java背后的秘密之深入Java虚拟机初探01

我的目标是要成为一名企业级架构师,想成为一名合格的架构师,要学习的东西还是非常多的。Now最近就在学习关于Java虚拟机方面的知识。如果说Java的各种主流框架是招式的话,那么深入了解Java虚拟机就是所谓的内在修为,即内功。武侠小说中内力是非常有用的。首先以两个问题开始吧,大家也可以思考一下:
1.为什么安装JDK后会出现两套JRE呢?(什么?你不知道,你out了)
2.系统中有两个jre,由谁来决定到底使用哪一套jre?



这两个问题很多初学者都不是很清楚,包括一些做了几年有点开发经验的人。下面我来解释一下:
1.为什么安装JDK后会出现两套JRE呢?(下图是我安装好jdk6.0后的目录结构)

-Java
        -jdk1.6.0_23
                bin
                +demo
                +include
                +jre
                +lib
                +sample
         +jre6

看见没有,有两个红色的jre,第一个jre提供运行Java程序的一个环境,第二个jre支持Java开发工具运行的环境,如javac、java命令,这些都是用Java语言编写的。如果只有第一个jre那就只能支持Java程序的运行而不能支持开发,所以第一个jre的bin目录下是没有javac.exe命令的。简单点说,想要进行程序开发,必须要有两个jre。

2.系统中有两个jre,由谁来决定到底使用哪一套jre?
这个艰巨的任务落在了java.exe身上,当输入java.exe命令执行一个java程序时,它会按照下面的方式来
寻找合适的jre。(什么,我怎么会知道的?哈哈,我也是听人讲的。《Java深度历险》这本书里面有说,推荐一下。

1、首先查找自己的目录是否有jre(windows中jvm.dll就是Java虚拟机)
2、查看父目录下是否有jre
3、查询系统配置(查看注册表项)

因此可以看到,通过改变程序使用的jre,就能够控制程序的能力和行为。

参考书籍《Java深度历险》、IBM\SUN虚拟机架构白皮书。



本文出自 “火 山 哥” 的博客,谢绝转载!