关于JDK与JRE的区别

JDK安装路径下的JRE与独立安装的JRE区别:

在JDK安装目录下的子文件下,已经默认安装了一个jre。且与独立安装的JRE6所包含的文件几乎完全一样。

       JDK里面内置的JRE和独立的JRE是有一点差别的:
 在JDK安装文件中包含了一个完整的独立版本的JRE,他会在JDK安装过程中自动被执行。 

     JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.8.x/目录下的JRE。而C:/Program Files/Java/目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由C:/Program Files/Java/jdk1.8.x/目录下的JRE来执行。

一个是java开发包(java develop kit),一个是java运行时环境(java runtime environment)


JDK JRE区别 

       JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.8.x/目录下的JRE。而C:/Program Files/Java/目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序, 但是JDK里面的工具只能由C:/Program Files/Java/jdk1.8.x/目录下的JRE来执行。


       jdk(java development kit)是开发工具包,相当于是一个编译器。
       jre(java runtime environment)是运行环境,相当于jvm虚拟机。jdk开发出来的java程序必须在jvm中运行,jre就提供了这么一个环境。


       JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

       SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

       JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。


1、为什么Sun要让JDK安装两套相同的JRE?

       这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在/lib/tools.jar里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: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目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:/Program Files/Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑安装两套以上的JRE,谁来决定呢?

       这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。


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。

posted @ 2023-05-16 22:30  MXT16  阅读(69)  评论(0编辑  收藏  举报