• 【java】JDK、JRE、JVM的关系


    目录结构:

    contents structure [-]

    JDK最开始叫做Java SDK(java software develop kit,java软件开发工具包),SDK是为了更好的推广产品而设计出来的帮助程序员使用该产品的工具。比如微软为了推广自己的Window系统,于是把一些系统底层的“方法、实例,源代码····”封装好,起名为Windows SDK,然后发布出来,有了这些封装好的开发工具,才会吸引更多的程序员对Windows开发。

    1,什么是JDK,JRE,JVM。

    JDK:java development toolskit,包含java开发工具和jre。

    JRE:java runtime enviroment,包含java运行环境和jvm。

    JVM:java virtual machine,java虚拟机,用于保证java的跨平台。

    三者的关系图:

    2,安装JDK为什么会出现两个JRE

    我们在安装JDK的时候会出现两个JRE,一个JRE在JDK的外部,一个JRE在JDK的内部,这就是所谓的共用JRE和专用JRE。

    2.1专用JRE

    专用JRE位于JDK的内部,是专门用于运行JDK中包含的工具。专用JRE没有注册表的设置,通常位于(C:Program Filesjdk1.7.0jre)中。

    配置JDK的时候,我们配置了环境变量path和classpath,其中classpath里配置了tools.jar包(java开发的基础包)。这时候我们将tools.jar包更改成另一个名字,会出现如下的错误:

    出现这种错误的原因就是我们更改了tools.jar的名字,java程序运行的过程中找不到tools.jar包了,所以报出错误。再查看jdk安装目录下的工具,几乎都是字节码(class文件),也就是说因此要使用JDK所附的工具来开发Java程序,所以自身需要附一套JRE才能运行。

    2.2共用JRE

    公共 JRE 可由其他 Java 应用程序使用,并且包含在 JDK 外部(通常位于 C:Program FilesJavajre1.7.0)。公共 JRE 会注册到 Windows 注册表(位于 HKEY_LOCAL_MACHINESOFTWAREJavaSoft)中。

    2.3公共JRE和专用JRE对比

    当我们只需要运行别人已经开发好的java程序,这时候用公用jre就可以了。但是如果我们需要开发JAVA程序,那么就必须安装JDK,JDK中包含专用JRE和开发工具,这些开发工具需要专用JRE才能够使用,也就说专用JRE是为我们开发JAVA程序准备的。还有两者的jre文件是有区别的,因此不能随便互相调换。

    3,java跨平台的特点

    从图片中我们开出,java语言具有跨平台的特性,但是jvm不具有跨平台。

    当我们在用javac命令编译java文件时,生成了jvm可以识别的字节码文件,这个过程不在jre里实现。当我们用java命令运行class文件的时,这个过程就是在jre里调用jvm来实现的。换句话说jre不具有编译功能。

    4,jdk安装目录下各个文件的作用

    bin  --  JDK中所包含的开发工具的可执行文件,PATH环境变量应该包含一个指向此目录的项。书中是这样说的:一些命令行工具,包括Java编译器的启动命令。bin目录下所有可执行文件的作用可以参考JDK/bin目录下的不同exe文件的用途文档

    db  --   jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。

    include   --   java和JVM交互用的头文件;

    lib  --   常用类库

    jre  --  java运行环境

    src --  部分源代码的压缩文件

    javafx-src  --  图形和媒体包的源码压缩文件

    5,参考文章

    1,JDK/bin目录下的不同exe文件的用途

    2,JDK各文件夹作用。

    3,安装JDK的时候为什么会有两个jre文件

    4,Java中JDK,JRE和JVM之间的关系

  • 相关阅读:
    初学者--bootstrap(六)组件中的字体图标----在路上(9)
    clearfix的最佳方案----在路上(22)
    css的五种属性值----在路上(21)
    float---浮动带来的影响与清除浮动带来的影响方法----在路上(20)
    form表单 ----在路上(15)
    css中常见的属性-----在路上(14)
    Linux | 管道、重定向命令
    C++ | from_string函数的写法
    C++/C | 关于char* char[] char = new char[n]
    C++内存管理 | 01 C++ memory primitives
  • 原文地址:https://www.cnblogs.com/HDK2016/p/6715035.html
Copyright © 2020-2023  润新知