`
ttlz
  • 浏览: 96235 次
  • 性别: 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
Oracle8.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。

分享到:
评论
1 楼 ddppfamily 2008-01-06  

原来是这样的啊
终于懂了

相关推荐

    Java sdk深度历险

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

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

    简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JDK就是Java Development Kit JRE是Java Runtime ...

    InsideJava(Java深度历险)

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

    深入Java 2 SDK

    JDK、JRE、以及JVM 及初学配置 非常清晰的PDF

    jdk-13.0.2_windows-x64_bin.zip

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

    jdk-8u201-windows-i586.exe

    JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

    JAVA深度历险

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

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64 免费下载.zip

    您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及类库和支持文件,以实现您的应用程序。 JDK 使用 Java 基础类(包括 Swing 和 Java Platform Debugger Architecture)打包了说明性源代码和特定 API。它还以各种 ...

    JDK的下载与安装视频

    JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

    corejava基础重要知识点总结

    JDK和JRE之间的区别? 1:分别表示的含义不同 jdk:java软件开发工具包 jre:java运行环境 2:作用不同 jdk:当一个电脑上面安装jdk之后 会自动的安装jre 所以既可以编写程序 又可以运行程序 jre:当一个电脑...

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64.zip

    您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及类库和支持文件,以实现您的应用程序。 JDK 使用 Java 基础类(包括 Swing 和 Java Platform Debugger Architecture)打包了说明性源代码和特定 API。它还以各种 ...

    java高效学习之路-过来人经验

    Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。

    毕业设计订餐系统源码-JavaLearn:javaSE演示

    在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 1.1jdk JDK(Java Development Kit) 是整个JAVA的核心,...

    Java 9 Revealed: For Early Adoption and Migration

    Preview the new Java 9 modules, SDK, JDK, JVM and more in this comprehensive early adopter title. This book covers what’s new in Java 9 and how to use these new features. Java 9 Revealed is for ...

    1.java基础数据结构 2.java基础算法 3.java设计模式.rar

    Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。其基本思想是使用对象、类、继承、...1.3 JVM、JRE和JDK的关系是什么? JDK是(Java Development Kit)的缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥

    graalvm-ce-deb:graalvm社区版的debian软件包

    VERSION=20.0.0 ./build安装sudo dpkg -i {graalvm-deb-path}将GraalVM安装到主要JRE / JDK对于包含.jinfo文件的安装,您可以在已安装的替代方法中设置主要的jre / sdk安装。此命令设置所有与jre / jdk相关的二进制...

    java版斗地主源码-interview:面试

    java版斗地主源码 ...它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟

    八字java源码-tyb.github.io:TahaYavuzBodur博客

    来使用和存储我的所有数据的任务和注意事项: 第一天: 为了在 Linux 上更快,我首先想通过 Eclipse 和 STS(Spring 工具套件)。 但我放弃并继续使用 IDEA 社区版。 我在这里需要一些 Linux 命令。 设置 $PATH 和 $...

    新版Android开发教程.rar

    o JDK 5 or JDK 6 (JRE alone is not sufficient) o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: ...

Global site tag (gtag.js) - Google Analytics