我的目标是要成为一名企业级架构师,想成为一名合格的架构师,要学习的东西还是非常多的。Now最近就在学习关于Java虚拟机方面的知识。如果说Java的各种主流框架是招式的话,那么深入了解Java虚拟机就是所谓的内在修为,即内功。武侠小说中内力是非常有用的。首先以两个问题开始吧,大家也可以思考一下:
1.为什么安装JDK后会出现两套JRE呢?(什么?你不知道,你out了)
2.系统中有两个jre,由谁来决定到底使用哪一套jre?
这两个问题很多初学者都不是很清楚,包括一些做了几年有点开发经验的人。下面我来解释一下:
1.为什么安装JDK后会出现两套JRE呢?(下图是我安装好jdk6.0后的目录结构)
-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虚拟机架构白皮书。
转载来源www.boobooke.com/bbs->J2EE专区->蓝山作品—Java背后的秘密(汇总)