`
andy136566
  • 浏览: 290592 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDK、JRE、JVM之间的关系

阅读更多

http://www.cjsdn.net/post/view?bid=1&id=9965&sty=1&tpg=1&age=0

 

如果安装了JDK,会发同你的电脑有两套JRE,
一套位于 <JDK安装目录>\jre
另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下
后面这套比前面那套少了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等),而且都放置在 <JDK安装目录>\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),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现<JDK安装目录>\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被执行有很大的关系。

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

jdk ,是java的开发工具。
jre ,为java提供运行环境。

分享到:
评论

相关推荐

    jdk、jre、jvm的区别

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

    Java零基础 - JDK JRE JVM三者关系.md

    通过以上介绍,我们可以清晰地看到JDK、JRE和JVM之间的关系: 1. **JDK** 包含了JRE,并增加了开发工具,如编译器、调试器等,主要用于开发Java应用程序。 2. **JRE** 包含了JVM和核心类库,主要用于运行已编译的...

    一张图看懂JVM、JRE、JDK

    一张图看懂JVM、JRE、JDK

    详解Java中的JDK、JRE、JVM

    Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础。理解这三个术语以及它们之间的关系是每个Java开发者必备的知识。 JDK(Java Development Kit)是Java开发工具包,它是Java开发...

    我们必须明白JDK,JRE和JVM之间的差异.mp4

    我们必须明白JDK,JRE和JVM之间的差异.mp4

    Java中JDKJRE和JVM解析.doc

    #### 五、JDK、JRE与JVM之间的关系 1. **JDK vs JRE**: - **JDK**:包含JRE以及开发工具(如编译器、调试器等),适用于Java开发人员。 - **JRE**:仅包含运行Java程序所需的组件,适用于仅需要运行Java应用的...

    JDK JRE与JVM1

    Java 技术体系的核心组成部分包括 JDK (Java Development Kit),JRE (Java Runtime Environment) 和 JVM (Java Virtual Machine)。理解这三个概念对于Java开发者至关重要。 首先,JDK是Java开发工具包,它是Java...

    JDK_JRE_JVM关系简示图.png

    简示JDK_JRE_JVM的大小关系

    JDK、JRE、JVM是什么?

    JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...

    jdk与jre的区别

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

    【Java基础】JDK、JRE、JVM之间的关系

    3.JDK、JRE、JVM的区别 3.1 Java为什么能跨平台,实现一次编写,多处运行? 1.编译器、调试器 JAVA编译器(javac.exe) JAVA编译器的作用是将(.java文件)编译成字节码文件,是最基本的开发工具。编译时首先读入java...

    详解JDK,JRE,JVM.md

    详解JDK,JRE,JVM.md

    29.027.JAVA基础教程_Java语言概述-JDK、JRE、JVM的关系(29).rar

    了解Java的核心组件,如JDK、JRE和JVM之间的关系对于任何Java开发者来说至关重要。在这个基础教程中,我们将深入探讨这些概念。 首先,我们来解析标题中的关键术语: 1. **JDK(Java Development Kit)**:它是...

    大数据必学Java基础(九):JDK,JRE,JVM的区别

    本文主要讲解JDK、JRE和JVM之间的区别。 一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。...

    Java中的数据类型及JDK, JRE, 和 JVM解释及关系.zip

    JDK、JRE和JVM之间的关系可以这样理解:JDK是开发Java程序的工具集,包含JRE;JRE是运行Java程序的环境,包括JVM和其他运行时所需的库;而JVM是JRE的核心部分,负责解释和执行Java字节码。在实际开发过程中,开发者...

    JDK,JRE,JVM区别与联系.pdf

    总的来说,JDK、JRE和JVM之间的关系可以总结为:JDK是开发Java程序的全套工具,包含JRE;JRE是运行Java程序所必需的环境,它包括JVM和Java核心类库;而JVM则是负责解释执行Java字节码的虚拟计算机。理解这三个概念...

Global site tag (gtag.js) - Google Analytics