`
liuwei_blog
  • 浏览: 94295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SDK、JDK、JRE和JVM的关系

    博客分类:
  • java
阅读更多
摘自:
2007年09月22日 星期六 16:14

简单的说就是:

JRE = Java 运行时环境,有了它就能运行Java程序,可以理解为java虚拟机。
JDK = Java 开发环境,除能运行Java程序外,有Java 标准API类库,可以在此基础上开发Java程序。

        jdk是java的开发包,其中包括jre;jre仅仅是java的运行时环境;而JDK包括了同版本的JRE,此外还包括有编译器和其它工具。

     JDK是java开发工具包(java Development Kit)的缩写。它是一种构建在java平台上发布的应用程序、apple和组件的开发环境。JDK是一切java应用程序的基础,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。要成为一个Java程序员,JDK是必不可少的最基本的工具。

     JRE是Java运行环境(Java Runtime Enviroment)的缩写。它基本上就和Java虚拟机是同一个概念。一般来说,在谈论一个具体的产品的时候,可以说“JRE”,而说到理论中的一个模型的时候,我们常用的是“Java虚拟机”。要使用Java程序,JRE是必不可少的环境。

如果机子里安装了多个版本的jdk,如下:

BEA Weblogic Server 7.0 自带一套 JDK1.3.1_02
下载了一套最新的JDK1.4.1_02
JBuilder9自带一套JKD1.4.1_02
Oracle 8.1.7自带一套JRE1.1.7
Ration Rose自带一套JDK1.3
DreamWeaver自带一套JDK1.3

       6套JRE,每套JRE都被各自安装到不同的目录,不会互相影响。当在控制台执行java.exe, 操作系统 寻找JRE的方式如下:

先找当前目录下有没有JRE
再找父目录下有没有JRE
接着在PATH路径中找JRE
注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的键值指向哪个JRE

       最常用的是在PATH路径中找JRE,一般情况下,自己的程序运行之前都会先在批处理文件里面临时设置PATH,把自己用的JRE放到PATH路径最前面,所以肯定会运行自己带的JRE,不会造成版本混乱。

SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。

Java SDK最早叫Java Software Develop Kit,后来改名为JDK,即Java Develop Kit。

JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet 和组件等。

 

根据图上显示的关系,JDK包含JRE,JRE包含JVM。

1、为什么Sun要让JDK安装两套相同的JRE?这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为to ols1.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所编写,所以也是Jav a应用程序,因此要使用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与jre的区别

    虽然JDK和JRE都有各自的职责,但它们之间存在着密切的关系。实际上,JRE是JDK的一个子集,也就是说,JDK包含了所有JRE的功能,同时还添加了更多的开发工具和资源。这意味着如果你安装了JDK,你就同时拥有JRE的功能,...

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

    ### JDK、JRE、J2SDK与Eclipse SDK之间的关系 #### 1. JDK与JRE的关系 **JRE(Java Runtime Environment)**,即Java运行时环境,它包含了运行Java程序所需的基本组件,如Java虚拟机(JVM)、核心类库等。简单来说...

    AIX JDK1.8 JRE1.8 32位

    压缩包子文件的文件名"Java8.jre.tar"和"Java8.sdk.tar"分别代表JRE和SDK的打包文件,".tar"是一种常见的归档文件格式,通常用于Linux和UNIX系统中,用于将多个文件或目录打包成一个单一的文件以便传输和存储。...

    jdk与jre的区别.

    3. **JVM、JRE和JDK的关系** - **JVM**(Java虚拟机)是JRE的核心部分,负责执行Java字节码。 - **JRE** 包含了JVM以及运行Java程序所需的基本类库和其他资源。 - **JDK** 包含了JRE的所有组件,并增加了用于...

    jdk1.8-java_sdk_jre

    它不仅包含了Java编译器、Java运行时环境(JRE),还提供了许多开发工具,如JavaDoc、Java虚拟机(JVM)、Java调试器(JDB)等。这个版本主要的新增功能包括: 1. **Lambda表达式**:这是Java 8最大的亮点之一,它...

    AIX-JDK8-JRE8_64位.rar

    标题"AIX-JDK8-JRE8_64位.rar"所指的是一款针对AIX操作系统的Java Development Kit(JDK)和Java Runtime Environment(JRE)的64位版本安装包。AIX,全称Advanced Interactive eXecutive,是由IBM开发的一种强大的...

    apache-maven-3.6.3; jre1.8.0-361; jdk1.8.0-131

    Maven的POM文件描述了项目的配置、依赖关系和构建指令,使得团队协作和项目维护变得更加简单。 在实际开发中,开发者通常会设置Maven的本地仓库路径以缓存下载的依赖,减少网络请求。此外,Maven还支持插件机制,...

    深入Java 2 SDK

    深入理解Java 2 SDK,尤其是JDK、JRE和JVM之间的关系,对每一个Java开发者来说都是必修课。从技术角度看,它们是构建和运行Java应用程序的基石;从学习角度看,探索其内部机制有助于提升编程技能和解决问题的能力。...

    安卓SDK安装包(附JRE安装包)

    1. **下载和安装JRE**:首先,你需要安装JRE(Java运行环境),因为Android SDK的许多工具依赖于Java环境。JRE提供了运行Java应用程序所需的环境,包括Java虚拟机(JVM)。 2. **下载Android SDK**:从官方的...

    Java sdk深度历险

    本书特色有:说明JDK,JRE与JVM三者的关系:探讨Java应用程序的执行流程,让您以后不会再为JDK与JRE的版本问题苦恼;讲解类别载入器的运作机制:类别载入器兼具Java程序的弹性与安全性两项重大任务,您不能不了解它...

    JDK大全 JDK1.6 JDK1.7 JDK1.8 JDK1.9 JDK10 JDK11 JDK12 JAVA SDK

    Java Development Kit(JDK)是Java编程语言的核心组件,它包含了一个Java运行环境(JRE)、编译器(javac)、各种工具(如jar、javadoc等)以及Java类库,使得开发者能够编写、编译、调试和运行Java程序。JDK的不同...

    AIX JDK1.8 64位

    IBM的JDK1.8 64位版本包含了Java运行环境(JRE)和Java开发工具集(SDK)。其中,JRE使得用户能够在AIX系统上执行Java程序,而SDK则提供了编译、调试和性能分析等开发所需工具。 在提供的压缩包文件中,有两个重要...

    jdk与jre的区别 很形象,很清晰,通俗易懂

    关于JDK和JRE的关系,一个常见的误解是它们可以单独使用。实际上,对于开发人员而言,安装了JDK就无需单独安装JRE,因为JDK自带了JRE组件。而如果是普通用户,只需要运行Java程序,则只需要安装JRE。 在JDK中,\lib...

    jdk-8u231最新32位和64位版本下载

    对于Java开发者来说,JDK是必不可少的,因为它包含了Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境(JRE)、Java文档生成器(javadoc)以及各种实用工具,如jar打包工具等。JDK 8u231是Oracle公司发布的...

    jdk-8u401-windows-x64.exe

    JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(JavaSE),standard edition,标准版,是我们通常用的一个...

    jdk1.8.0_66.zip

    JVM是JRE的核心,它负责解析和执行Java字节码,使得Java应用程序具有跨平台的特性。 在安装或配置JDK时,通常需要设置两个重要的环境变量:JAVA_HOME和PATH。JAVA_HOME环境变量应该指向JDK的安装目录,例如解压后的...

    jdk1.8.0版本安装包

    由于底层结构和JVM的改变,使得JDK1.8的速度提高。 2、代码更少(增加了新的语法 Lambda 表达式) 增加新特性Lambda表达式的内部类改造,使得代码在书写上变得更加简洁 3、强大的 Stream API 增加了核心功能,...

Global site tag (gtag.js) - Google Analytics