JDK即Java Development Kit是面向开发人员使用的SDK,它提供了Java的开发环境,运行环境和Java基础类库。SDK是Software Development Kit即软件开发工具包。广义上指辅助开发某一软件的相关文档、范例和工具的集合。
JRE是Java Runtime Enviroment的缩写,是指Java的运行环境,是面向Java程序的使用者的。
在安装JDK的同时会安装JRE,默认位于C:/Program Files/Java文件夹下,一套是jdk1.6.0_version即JDK开发端,另一套为jre6即JRE应用端,JRE比JDK少了Server端的Java虚拟机。JRE是运行Java程序所必须的环境的集合,包含JVM标准实现和Java核心类库以及支持文件,我们编写的java程序必须要JRE才能运行。就是说只要你的电脑安装了JRE,就可以正确运行Java程序。
在安装JDK的时候为什么要安装两套JRE?这是因为JDK里面有很多用Java编写的开发工具(如javac.exe、jar.exe等),而且都放在
/lib/tools.jar里。从下面的例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果(设置好JDK变量后测试):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目录下的程序都很小,就是说JDK的工具几乎是用Java编写的,所以也是java应用程序,因此要使用JDK所附带的工具开开发Java程序,也需要自行附带一套JRE才行,所以位于C:/Program FIiles/Java目录下的那套JRE就是用来运行一般Java程序的。
如果一台电脑上安装两套以上的JRE,谁来决定运行哪个?
这个任务由java.exe决定,java.exe的工作就是找到合适的JRE来运行java程序。Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表 [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。
AAD:
JVM--java virtual machine
JVM是一个虚构出来的计算机,通过在实际计算机上仿真模拟各种计算机功能来实现的。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的字节码(.class)就可以在多种平台上不加修改的运行。Java虚拟机在执行字节码的时候,实际上还把字节码转换成具体平台上的机器指令来执行的。也就是说Java字节码并不直接与操作系统相交互,而是经过JVM间接与操作系统交互,解释给本地系统执行。
参考: http://iask.sina.com.cn/b/5580306.html?from=related
JDK环境变量设置
设置Path变量是指定java编译时需要调用的程序的搜索路径,
设置classpath是指定类搜索路径,JVM就是通过classpath来寻找字节码文件的。
JAVA_HOE=C:/Program Files/Java/jdk1.6.0_version
在PATH中加入%JAVA_HOME%/bin与前面的之间用;隔开
CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;