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

[转载]SDK、JDK、JRE和JVM的关系总结

JDK 
阅读更多

一、SDK、JDK、JRE和JVM的关系

 

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是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具和Java基础的类库(rt.jar)。

  JRE(Java Runtime Environment), Java运行环境 所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

  JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机 ,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

  下图清晰地展示了JDK(Java SDK)、JRE和JVM之间的关系:

 

可进一步了解 JDK和JRE目录的文件结构

 

二、为什么安装JDK后可能会出现两套相同的JRE?

jdk安装目录下会有一套JRE。

另一套JRE:C:\Program Files\Java\jre6(用户选择的安装目录)---安装jdk后可以选择安装jre

根本原因就是:jdk提供了很多开发工具,本身就是用java编写的,运行这些工具的时候,就需要jre。

 

很容易证明这点:

JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 <JDK安装目录>\lib\tools.jar 里。

① 命令行执行javac命令,可以看到输出javac命令提示

② 重命名jdk安装目录下的\lib\tools.jar为tools1.jar,然后执行javac,就会报错java.lang.ClassNotFoundException。

③ 执行java -classpath ..\lib\tools1.jar com.sun.tools.javac.Main 又正确了。

本质上javac.exe只是一个包装器(wrapper),底层调的是com.sun.tools.javac.Main,目的是为了让开发者免於输入太长的指令。既然com.sun.tools.javac.Main是用java编写的,那么运行时就需要jre。

 

 

三、如果一台电脑在安装JDK后有两套以上的JRE,谁来决定使用哪套JRE呢?

这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。

执行java.exe时,一定要记得两件事: 
1. 那一个java.exe被执行:先搜索当前目录,然后搜索path指定的目录。
2. java.exe找到哪一套JRE搜索顺序如下:    

① 自己的目录下有没有jre目录。

② 父目录底下jre子目录。

③ 查询Windows:Registry( HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\ )。

 

[参考]

 

SDK、JDK、JRE和JVM的关系总结: http://javaeyes.iteye.com/blog/30667

 

  • 大小: 13.6 KB
分享到:
评论

相关推荐

    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程序的弹性与安全性两项重大任务,您不能不了解它...

    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 开发环境 Java SE Development Kit (JDK) 16.0.1 x64 免费下载.zip

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

    深入Java 2 SDK

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

    JAVA深度历险

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

    corejava基础重要知识点总结

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

    JDK的下载与安装视频

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