j2sdk(Software Development Kit for Java 2) ,简称JDK.它包括了JDK(Java Development Kit),JRE(Java Runtime Enviroment),Java Plug-in.我们通常所说的JDK以及下载并安装的JDK就是指它了.
JDK(Java Development Kit), Java开发工具包.JDK是一组API,也可以说是一些java Class。JDK是一切java应用程序的基础,所有的java应用程序是构建在这个之上的。他位于"Java安装目录\jdk1.5.0_07".
JRE(Java Runtime Environment),Java运行环境.
细心的人可能会发现在Java安装目录有两套JRE,一套位于"Java安装目录\jdk1.5.0_07\jre",一套位于"Java安装目录\jre1.5.0_07",为什么会有两套JRE呢?因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 <JDK安装目录>\lib\tools.jar 里,它们本身运行的时候也需要一套 JRE,也就是前者。而后者的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由"Java安装目录\jdk1.5.x\"目录下的JRE来执行。
既然在我们的电脑里面至少有两套JRE,那么由谁来决定使用哪一套JRE呢?这个重担就落在java.exe的身上。
当我们在命令行输入:java xxx的时候,java.exe的任务就是在我们电脑上众多的JRE中找到合适的JRE来执行xxx。java.exe依据以下顺序来寻找JRE:
(1)自己的目录下有没有JRE目录;
(2)父目录下有没有JRE目录;
(3)查询注册表HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\
所以java.exe的执行结果与我们电脑里哪一个java.exe(搜索一下就会发现我们电脑里面也不止一个java.exe)被执行以及哪套JRE来执行JVA程序有很大的关系。
另外,java.exe在找到合适的JRE以后,还有一个验证版本的程序,也就是java.exe与JRE的版本一致才可以执行。如果出现版本不一致的问题,一定要记得两件事情:
(1)哪一个java.exe被执行;
(2)java.exe找到哪一套JRE。
只要这两件事情确定了,我们就抓住了问题的来龙去脉,解决起来也就轻而易举了。
JVM是一个虚拟的计算机,能模拟各种计算机的功能,它有处理器、堆栈、寄存器等虚拟的硬件架构,同时还有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,从而实现Java程序的跨平台特性。JRE目录下的Bin目录有两个目录:server与client。这就是真正的jvm.dll所在。jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。
因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。