`
hejiajunsh
  • 浏览: 410026 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

JDK与JRE的区别&JDK安装后为什么有两套JRE

阅读更多

很多程序员已经干了一段时间java了依然不明白jdk与jre的区别,比如说,东哥...etc.

 

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

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

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

 

JDK安装后为什么有两套JRE :直白的说是为了开发平台的需要:JAVA的编译工具大部分是用JAVA开发的,故需要一套JRE .而应用程序则需要另一种JAR。具体见下文:

 

如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

 

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行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目录下的程序都很小,不大于29K,从这里我们可以得出一个结论。就是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被执行有很大的关系。

 

SUMMARY:(小小结)

1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

 

2.JRE -- java runtime environmentJRE是指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 kitJDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、 jre。

 

4.现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe)。include:java和JVM交互用的头文件。lib:类库jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)

 

5.总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

 

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

 

 

 

 

 

分享到:
评论

相关推荐

    jdk与jre的区别

    在安装 JDK 之后,在安装目录中会有两个版本的 JRE 文件:专用 JRE 和公用 JRE。 * 专用 JRE:安装在 JDK 内部,提供了 JDK 中包含的工具的运行环境。 * 公用 JRE:安装在 JDK 外部,提供了 Java 程序的运行环境,...

    jdk与jre的区别.

    ### JDK与JRE的区别 #### 一、JDK与JRE的基本概念 ##### JDK(Java Development Kit) JDK,即Java开发工具包,是面向开发人员使用的软件开发工具包(SDK)。它包含了编译、调试和运行Java应用程序所需的所有工具...

    jdk和jre的区别

    ### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...

    jdk与jre的不同

    ### JDK与JRE的不同 #### 一、JDK(Java Development Kit)简介 JDK,全称为Java Development Kit,是Sun Microsystems(后被Oracle收购)为Java开发者提供的一套全面的开发工具集。它包含了编写、编译、调试、...

    jdk、jre、jvm的区别

    ### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...

    AIX JDK1.8 JRE1.8 32位

    标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...

    JDK和JRE文件的区别

    在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间的区别之前,我们先来定义一下这两个概念。JDK是Java开发工具包,它包含了编译、运行和调试Java应用程序所需的所有工具;而JRE则是Java...

    jdk-7u10-windows-i586安装后jdk中jre文件

    **Java开发工具包(JDK)与Java运行环境(JRE)详解** 在Java编程领域,JDK(Java Development Kit)和JRE(Java Runtime Environment)是两个至关重要的组件。JDK是Java开发者用于编写、编译和调试Java应用程序的...

    安装JDK有两套JRE的原因

    安装JDK时产生的两个JRE的原因,一套位于<JDK安装目录>\jre目录,\Java\jre1.6.0_02目录下。

    JDK及JRE安装配置是否成功

    JDK 及 JRE 安装配置是否成功 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java programming language 的核心组件,安装和配置它们是 Java 开发的第一步。本文将详细讲解 JDK 和 JRE 的安装...

    JRE与JDK的区别

    Java开发和运行环境中,JRE(Java Runtime Environment)与JDK(Java Development Kit)是两个至关重要的组件。它们之间的主要区别在于用途和包含的内容。 JRE是Java运行环境,它是运行Java应用程序所必需的。它...

    JDK和jre正确安装的截图

    JRE的安装过程与JDK类似,只是安装包和安装选项略有不同。在Oracle官网下载JRE后,按照同样的步骤进行安装,但不需要配置环境变量。 **三、JDK和JRE的关联** JDK包含了JRE,所以在安装JDK后,系统已经具备了运行...

    jdk-6u26-windows-i586安装后jdk中jre文件

    在给定的标题"jdk-6u26-windows-i586安装后jdk中jre文件"中,我们讨论的是JDK的第6个更新版本(Update 26),专为32位Windows操作系统设计。 JRE,全称为Java Runtime Environment,是Java应用程序的运行时环境。它...

    java1.8jdk/jre.rar

    在安装JDK后,你需要配置环境变量`JAVA_HOME`,指向JDK的安装目录,以便编译器和解释器可以找到。同时,还需将`PATH`环境变量更新,包含`JAVA_HOME/bin`目录,这样系统命令行就能识别`javac`和`java`命令。 4. ...

    jdk8,64位安装后的jre文件

    在这里,我们关注的是"jdk8,64位安装后的jre文件",这意味着我们将讨论在64位操作系统上安装JDK8后,JRE部分的内容和相关知识点。 首先,JDK8的64位版本是在64位处理器架构上运行的Java开发和执行环境。与32位版本...

    JDK JRE 的作用与区别

    ### JDK与JRE的作用及区别 #### 一、概述 在深入探讨JDK与JRE的具体差异之前,我们首先需要了解这两个概念的基本定义及其在Java开发环境中的地位。 #### 二、JDK(Java Development Kit) JDK是Java开发工具包的...

Global site tag (gtag.js) - Google Analytics