[转] j2sdk jdk jre jvm的联系与区别

参考一:

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。

 

参考二:

 1、.JVM -- java virtual machine
       JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
2.、JRE -- java runtime environment
       JRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)
3、.JDK -- java development kit
       JDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
       bin:最主要的是编译器(javac.exe)
       include:java和JVM交互用的头文件
       lib:类库
       jre:java运行环境

      (注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

       eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

你可能感兴趣的:(jvm)