JDK,JRE,JVM区别与联系

2019-03-12 23:19|来源: 终点

今天在CSDN看到一篇文章,感觉还不错,转载过来有助于大家理解JDK,JRE,JVM这三者的联系与区别


很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的。

今天特写此文,来整理下三者的关系。


JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

   最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为了在某些方面得到一些提高,以适应自己的需求,比如IBM的JDK据说运行效率就比SUN的JDK高的多。但不管怎么说,我们还是需要先把基础的Sun JDK掌握好。

JDK有以下三种版本:

   J2SE,standard edition,标准版,是我们通常用的一个版本J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序

   我们常常用JDK来代指Java API,Java API是Java的应用程序接口,其实就是前辈们写好的一些java Class,包括一些重要的语言结构以及基本图形,网络和文件I/O等等 ,我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。


JRE:Java Runtime Enviromental(java运行时环境)。也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。


JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

下图很好的表面了JDK,JRE,JVM三者间的关系:


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


本文链接:JDK,JRE,JVM区别与联系,本文转自:http://blog.csdn.net/zhangerqing/article/details/7712521

相关问答

更多
  • 下载一个JDK安装好,然后配置好环境变量就可以了。
  • JRE: Java Runtime Environment JDK:Java Development Kit JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jcon ...
  • Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。
  • jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。起内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等
  • 一、 详细介绍 1、JVM -- java virtual machine JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。 JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行 时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构 ...
  • jre与jdk的区别。[2023-08-14]

    jdk(java development kit),就是java的开发工具集,顾名思义就是做开发用的,其中包括javac,也就是java compiler等。 jre(java runtime environment),就是java程序的运行环境。所写的java程序在经过javac编译后会形成字符行文件,这个java的中间文件,计算机是看不懂的,而这个文件是给jvm(java的虚拟机)用的,由jvm进行解释后形成机器语言给计算机。而这个jvm就在jre中,也就是说java程序的运行要有jre来担当。 所以j ...
  • JVM -- java virtual machine JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。 JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行 时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构,提供了一种与平台无 ...
  • JVM Java虚拟机 (JVM)是运行Java字节码的虚拟机。 JVM不了解Java源代码,这就是为什么编译*.java文件来获取包含JVM了解的字节码的*.class文件。 它也是允许Java成为“便携式语言”( 写入一次,在任何地方运行 )的实体。 实际上,针对不同系统(Windows,Linux,MacOS, 见维基百科列表 )的JVM有特定的实现方式,目的是使用相同的字节码,它们都得到相同的结果。 JDK和JRE 要解释JDK和JRE之间的区别,最好是阅读Oracle文档并参考图: Java运行时 ...
  • JRE :Java运行时环境。 它基本上是您的Java程序运行的Java虚拟机。 它还包括用于Applet执行的浏览器插件。 JDK :它是用于Java的全功能软件开发工具包,包括JRE ,以及编译器和工具(如JavaDoc和Java Debugger)来创建和编译程序。 通常,当您只关心在浏览器或计算机上运行Java程序时,您将只安装JRE 。 这是你需要的 另一方面,如果你打算做一些Java编程,你也需要JDK 。 有时,即使您不打算在计算机上执行任何Java Development,您仍然需要安装JD ...
  • JVM是虚拟的,您可以将其视为其机器代码为Java字节码的虚拟计算机。 它不是一台真正的计算机,而是一个可以执行Java字节码指令的虚拟计算机。 JRE是JVM实现。 这个实现是特定于操作系统的(当然),但它提供了与操作系统无关的外部接口(也就是说,例如,您可以在Windows JRE和Linux JRE上运行相同的Java代码)。 这是从90年代末期开始的“一次写即用”的事情。 JDK是编译器,JRE,其他工具以及编写Java代码所需的所有Java API。 我不想将Android及其Dalvik虚拟机添 ...