JDK和JRE的关系

作者:王博
链接:https://www.zhihu.com/question/20317448/answer/14737358
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

JRE: Java Runtime Environment
JDK:Java Development Kit
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,ORACLE等)有很多版本,最常用的是Oracle公司收购SUN公司的JRE版本。如果你想查看更官方的解释,可以前往Oracle官网:http://www.oracle.com/cn/technologies/java/overview/index.html

再说说java的跨平台吧:
  java源程序先经过javac编译器编译成二进制的.class字节码文件(java的跨平台指的就是.class字节码文件的跨平台,.class字节码文件是与平台无关的),.class文件再运行在jvm上,java解释器(jvm的一部分)会将其解释成对应平台的机器码执行,所以java所谓的跨平台就是在不同平台上安装了不同的jvm,而在不同平台上生成的.class文件都是一样的,而.class文件再由对应平台的jvm解释成对应平台的机器码执行

最后解释下机器码和字节码的区别: 
 一,机器码,完全依附硬件而存在,并且不同硬件由于内嵌指令集不同,即使相同的0 1代码,意思也可能是不同的,换句话说,根本不存在跨平台性。比如:不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果

二,我们知道JAVA是跨平台的,为什么呢?因为他有一个jvm,不论那种硬件,只要你装有jvm,那么他就认识这个JAVA字节码,至于底层的机器码,咱不用管,有jvm搞定,他会把字节码再翻译成所在机器认识的机器码

时间: 2024-10-07 06:09:27

JDK和JRE的关系的相关文章

【java学习】JDK、JRE、JVM的关系

目录结构: contents structure [-] 什么是JDK,JRE,JVM 安装JDK的时候为什么有两个jre 专用JRE 共用JRE 共用JRE和专用JRE的对比 java的跨平台特性 JDK各个文件的作用 参考文章 1,什么是JDK,JRE,JVM. JDK:java development toolskit,包含java开发工具和jre. JRE:java runtime enviroment,包含java运行环境和jvm. JVM:java virtual machine,j

JDK、JRE、JVM之间的关系

   JDK.JRE.JVM之间的关系 1.JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.JDK.JRE.JVM之间有什么关系? JDK.JRE.JVM之间是一种包含关系,范围是从大到小依次为 JDK>JRE>JVM,即JDK中包含JRE,JRE包含JVM. 3.两个JRE,都有什么作用? 第一个JRE安装路径:C:\Program Files\Java

jvm内存模型和内存分配以及jdk、jre、jvm是什么关系

1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域.(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行. 2.jdk.jre.jvm是什么关系?(1)JRE(Java

JDK、JRE、javac和JVM的关系

.java为Java的源文件后缀,编写的代码需要写在.java文件中. Javac编译器,用于读取Java源代码,并将其编译成字节代码.经过javac编译后形成.class,是字节码文件. Java虚拟机(JVM)运行.class文件从而实现程序的运行. 1.JVM——java virtual machine,就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器

jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)

1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域.(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行. 2.jdk.jre.jvm是什么关系?(1)JRE(Java

JDK与JRE、JVM三者间的关系及JDK的安装部署

一.JDK与JRE.JVM三者间的关系 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序. JDK是J

JDK、JRE、JVM三者关系

一.JDK.JRE.JVM三者的关系 JDK包含了JRE和JVM,JRE包含了JVM,其中JRE中没有javac 附一张官网的详细图: 二.RIA RIA(富客户端):能完成浏览器无法完成的功能,它是借于服务端与客户端之间的功能. JDK中的RIA:JAVAFX,內似于swing,运行于服务端 原文地址:https://www.cnblogs.com/daijiting/p/9912108.html

JDK 、 JRE 、 JVM 关系

一.什么是JDK . JRE . JVM 1.JDK(J ava D evelopment K it Java 开发工具包 JDK是提供给 Java 开发人员使用的,其中包含了 java 的开发工具(编写java程序时需要),也包括了JRE(运行java程序时需要) .所以安装了 JDK ,就不用在单独安装 JRE 了.其中的开发工具:编译工具 (javac.exe) 打包工具 (jar. 等) 2.JRE(J ava R untime E nvironment Java 运行环境 ) 包括Ja

JDK、JRE、JVM三者间的关系

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序. 在计算机开发语言的历史中,从来没有哪种语言象Jav