java-JDK、JRE、JVM的关系

 1. JVM(java virtual machine)

       JVM即java的虚拟机,是运行java程序的工具。所有的java程序首先会被编译成.class类文件,然后.class文件才可以在JVM虚拟机上运行。由于JVM执行的是与平台无关(即与特殊的实现方 法、主机硬件、主机操作系统无关)的字节码文件,所以可以实现“一次编译,到处运行”。不同的操作系统有着不同的JVM,JVM成就了java跨平台性。

1.1 JVM内存模型

       经典的JVM内存模型如下图所示:

      JVM的内存模型的不同区域的作用如下:

不同区域作用
线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象
方法区线程共享。存储类信息、常量、静态变量、即时编译器编译后的代码
虚拟机栈线程私有。存储局部变量表、操作栈、动态链接、方法出口,对象指针
本地方法栈线程私有。为虚拟机使用到的Native 方法服务。如Java使用c或者c++编写的接口服务时,代码在此区运行
程序技术器线程私有。有些文章也翻译成PC寄存器(PC Register),同一个东西。它可以看作是当前线程所执行的字节码的行号指示器。指向下一条要执行的指令

2 JRE(java runtime environment)

       JRE是java的运行环境,不包含任何开发工具,但JRE却是运行java程序必不可少的部分。在JRE目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是JVM,JVM不能单独搞定class的执行,解释class的时候需要调用解释所需要的类库lib。

3JDK(java development kit)

       JDK是java开发工具包,在学java的时候首先都会安装JDK,安装完JDK之后我们打开安装目录就会看到以下的内容:

       从JDK的安装目录里面我们可以看到,JDK里面包含有五个文件夹和src类源码库以及一些声明文件,由此我们也可以知道JDK是包含JRE的。JDK的目录里面对Java程序运行起到真正作用的是bin、include、jre、lib文件夹,它们各自的作用如下:

文件夹作用
bin编译器
includejava和JVM交互用的头文件
jrejava运行的环境
lib类库

       综上,JDK是java的核心,包含了JRE和一些java开发工具以及一些java基础的类库。JRE是java的运行环境,主要包括JVM和类库lib。而JVM是java运行程序的工具。三者的关系如下图所示:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值