简介:
SDK:是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JDK:是Java Development Kit,JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。
JRE:是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。
如果安装了JDK,会发现有两套JRE,一套位于安装目录/jre,另外一套位于安装目录/jdk1.6/jre ,前面那套少了Server端的Java虚拟机(jdk1.6/jre/bin多了个server文件夹)。
安装JDK可以选择是否只安装JRE,而不是JDK,那么只会在安装目录下安装唯一的一套JRE。
1.为什么Sun要让JDK安装两套相同的JRE?
JDK里的工具有些是用Java所编写,因此要使用JDK所附的工具来开发Java程序,也必须要附一套JRE才行,(如javac.exe、jar.exe等)。
javac.exe与输入 java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main 是一样的,可以认为javac.exe只是一个包装器(Wrapper),目的是简写指令。
另外一套JRE就是专门用来运行开发好的Java程序用的。
2、安装两套以上的JRE,执行谁?
Java.exe依照顺序来查找JRE:
自己的目录下有没有JRE;
父目录有没有JRE;
查询注册表(环境变量):[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]
3、JDK1.6/JRE目录下的Bin目录有两个目录:server与client。
该文件夹下就是真正的jvm所在。
jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),
而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。
因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。