`
xinklabi
  • 浏览: 1591798 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

JDK与JRE

    博客分类:
  • Java
 
阅读更多

JDKJRE的联系与区别

 

JDK(Java Development Kit)面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDKSoftware Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

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

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

 

 

如果安装了JDK,会发现你的电脑有两套JRE,一套位于Java\jdk\jre ,另外一套位于 Java\jre目录下,后面这套比前面那套少了Server端的Java虚拟机。jdkbin下有各种java程序需要用到的命令,与jre下的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已,与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvmserver性质的 jvm而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

 

 

JRE的地位就像一台PC机一样,我们写好的 Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

 

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

这是因为JDK里面有很多用Java所编写的开发工具(如javac.exejar.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才行,所以位于Java目录下的那套JRE就是用来运行一般Java程序用的,Java\jdk\jre是用来开发程序的。

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

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

3.介绍JVM JRE目录下的Bin目录有两个目录:serverclient,这就是真正的jvm.dll所在。 jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll.

分享到:
评论

相关推荐

    jdk与jre的区别

    JDK 与 JRE 的区别 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK...

    jdk与jre的不同

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

    jdk与jre的区别.

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

    jdk、jre、jvm的区别

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

    jdk和jre的区别

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

    JDK和JRE文件的区别

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

    编程选择题40道:Java开发环境:JDK与JRE的安装与配置.Tex.docx

    编程选择题40道:Java开发环境:JDK与JRE的安装与配置.Tex.docx

    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-6u26-windows-i586安装后jdk中jre文件

    **Java开发工具包(JDK)与Java运行环境(JRE)** JDK,全称为Java Development Kit,是Oracle公司提供的用于开发Java应用程序的软件包。它包含了编译、调试和部署Java应用所需的所有工具,如Java编译器(javac)、...

    官网下载java JDK或JRE的历史版本说明

    在软件开发领域,Java作为一种广泛使用的编程语言,其运行环境(JRE)与开发工具包(JDK)的重要性不言而喻。随着时间的发展,不同的Java版本适应了不同应用场景的需求。本文将详细介绍如何在Oracle官网上下载特定的...

    JDK JRE 的作用与区别

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

    JDK&JRE-8u181-windows-x64.rar

    **Java开发与运行环境:JDK与JRE详解** 在软件开发领域,Java是一种广泛应用的高级编程语言,尤其在企业级应用和分布式系统中占据重要地位。为了编写、编译和运行Java程序,我们需要Java Development Kit (JDK) 和 ...

    JDK&JRE-8u181-windows-i586.rar

    **JDK与JRE的关系** JDK是JRE的扩展,包含了开发和调试Java程序所需的额外工具。JRE是运行Java应用程序所必需的,但不包括编译或调试工具。换句话说,JRE是给终端用户安装的,让他们能够运行Java应用程序,而JDK则是...

    jdk、jre的安装及配置细节

    **Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 安装与配置详解** 在计算机编程领域,Java是一种广泛使用的跨平台编程语言。为了运行和开发Java应用程序,我们需要安装JDK(Java Development Kit...

    JDK与JRE的关系

    **JDK与JRE的关系** Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 是Java编程语言中两个至关重要的组件,它们之间的关系对于理解Java的生态系统至关重要。 **JDK**,全称为Java开发工具包,是...

    JDK,JRE,J2SDK,eclipse SDK之间的关系

    在Eclipse中,JRE与JDK的关系主要体现在以下几个方面: - **运行时JRE**:Eclipse本身作为一个Java应用程序,需要一个JRE作为运行环境。如果未安装JRE或JDK,启动Eclipse时会提示找不到JRE。 - **项目级别的JRE**:...

Global site tag (gtag.js) - Google Analytics