JDK、JRE、JVM

以下内容转载自JDK、JRE和JVM三者之间关系_geyouchao的博客-CSDN博客 侵删,谢谢

JDK:Java Development Kit (Java开发工具包)

JRE: Java Runtime Environment(Java运行时环境)

JVM: Java Virtual Machine(Java虚拟机)

三者关系

JDK是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

JRE是运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JVM是Java虚拟机的缩写,是整个Java实现扩平台的最核心的部分,能够运行以Java语言写作的软件程序。

三者详细介绍

JDK

JDK是java开发工具包,在其安装目录下有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、jre这四个文件夹起作用,demo、sample是一些例子。JDK包含JRE,而JRE包含JVM。

bin:最主要的是编译器(javac.exe) include:java和JVM交互用的头文件 lib:类库 jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的) 总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。 JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。 其中的开发工具包括编译工具(javac.exe)打包工具(jar.exe)等

JRE

JRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JVM

JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。 可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体平台如window运行这些Java程序。

简单而言:使用JDK开发完成的java程序,交给JRE去运行。

三者之间关系

JVM:将字节码文件转成具体系统平台的机器指令。 JRE:JVM+Java语言的核心类库。 JDK:JRE+Java的开发工具。

我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

JDK、JRE、JVM三者之间的关系的更多相关文章

  1. jdk jre jvm 三者之间关系

    JDK JDK是java开发工具包,是Sun公司针对Java开发员的产品.     JDK 中包含JRE,在JDK安装的目录下有一个叫jre的目录,里面有两个文件夹,bin/和lib,其中bin就是j ...

  2. 浅谈 JVM 结构体系、类加载、JDK JRE JVM 三者的关系

    一.java类,创建.编译.到运行的工程: 1.随便建一个Java类,保存后就是一个.java文件, 2.然后我们使用 javac命令编译 .java文件,生产 .class文件. 3.再然后使用 j ...

  3. JDK,JRE,JVM三者之间的关系和作用

    1,定义: JDK: Java Develpment Kit java 开发工具 bin:最主要的是编译器(javac.exe) include:java和JVM交互用的头文件 lib:类库 JRE: ...

  4. jdk,jre.jvm三者的关系

    jdk>jre>jvm jdk=jre+java的开发工具(包括java.exe,javac.exe.javadoc.exe) jre=jvm+java核心类库

  5. JDK,JRE,JVM三者关系

    已上图,如有疏漏错误请在下面评论区指出,感激不尽!

  6. JDK,JRE,JVM的作用及关系

    1.作用 JVM:Java虚拟机,保证Java语言跨平台 JRE:Java程序的运行环境 JDK:Java程序的开发环境 2.关系 JRE:JVM+类库 JDK:JRE+工具

  7. JDK JRE JVM的区别与关系

    JDK JAVA开发工具包    他包含了JRE   JAVA运行环境   JVM JAVA虚拟机他是跨平台的核心主件   他将Java源文件编译成 .class结尾字节码文件交由不同计算机执行    ...

  8. jdk jre jvm 关系

    很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...

  9. JDK,JRE,JVM区别与联系(ZZ)

    http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...

  10. JDK,JRE,JVM区别与联系-理解与概括

    我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...

随机推荐

  1. 一行代码实现shell if else逻辑

    前言 前几天学习 shell 脚本,发现这种好用的写法,简单记录一下. if else 一行实现 if [ 1=1 ] ;then echo "条件成立";else echo &q ...

  2. 解决sox报错sox FAIL formats: no handler for given file type `mp3

    sudo apt-get install libsox-fmt-mp3

  3. HTTP2 协议长文详解

    一.HTTP2 简介 HTTP2 是一个超文本传输协议,它是 HTTP 协议的第二个版本.HTTP2 主要是基于 google 的 SPDY 协议,SPDY 的关键技术被 HTTP2 采纳了,因此 S ...

  4. 天坑,这样一个lambda随机取数据也有Bug

    前几天,一位网友跟我说他编写的一段很简单的代码遇到了奇怪的Bug,他要达到的效果是从一个List中随机取出来一条数据,代码如下: 1 var random = new Random(); 2 var ...

  5. C# 操作IIS加强版(添加,删除,启动,暂停网站,默认页,绑定信息)

    C# 操作IIS加强版(添加,删除,启动,暂停网站,默认页,绑定信息) 主要功能如下 在本机的IIS创建Web网站 删除网站包括应用程序池 删除应用程序池 添加默认文档 删除默认文档 添加虚拟目录 删 ...

  6. Django ValueError: HTTP status code must be an integer from 100 to 599.

    程序执行后一直提示ValueError: HTTP status code must be an integer from 100 to 599. 遍历代码一切正常,然后开始调试代码,找出获取数据有问 ...

  7. 精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)

    Sentinel是什么?不要概念混淆啊! 注意:本Sentinel与Redis服务Sentinel是两回事,压根不是一个概念,请大家不要混肴. Alibaba的Sentinel Sentinel是由阿 ...

  8. 【转载】EXCEL VBA 工作簿(表)合并拆分

    一.合并工作簿 Sub 合并工作簿()    Application.ScreenUpdating = False     myfile = Dir(ThisWorkbook.Path & & ...

  9. LeetCode-01 两数之和(Two Sum)

    题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数, 你可以假设每个输入只对应一个答案,且同样的元素不能被重复利用. 示例 给定数组 nums = [2, 7, 11, 15], t ...

  10. WebGoat-8.2.2靶场之不安全的反序列化漏洞

    前言 序列化是将变量或对象转换成字符串的过程 反序列化就是把一个对象变成可以传输的字符串,目的就是为了方便传输 而反序列化漏洞就是,假设,我们写了一个class,这个class里面存有一些变量.当这个 ...