JVM,JDK,JRE和OpenJDK有什么区别?

JVMJDKJREOpenJDK有什么区别?

我在Java编程,遇到这些短语,它们之间有什么区别?

JVM

Java虚拟机 (JVM)是​​运行Java字节码的虚拟机。 JVM不理解Java源代码,这就是为什么编译*.java文件以获取包含由JVM理解的字节码的*.class文件的原因。 它也是允许Java成为“便携式语言”的实体(只写一次,随处运行 )。 事实上,对于不同的系统(Windows,Linux,MacOS, 请参阅维基百科列表 ),JVM有特定的实现方式,目标是在相同的字节码上它们都得到相同的结果。

JDK和JRE

为了解释JDK和JRE之间的区别,最好的方法是阅读Oracle文档并查看图表:

Java运行时环境(JRE)

Java运行时环境(JRE)提供库,Java虚拟机和其他组件来运行用Java编程语言编写的applet和应用程序。 另外,两个关键的部署技术是JRE的一部分:Java Plug-in,它使小程序可以在stream行的浏览器中运行; 以及通过networking部署独立应用程序的Java Web Start。 它也是Java 2 Platform,Enterprise Edition(J2EE)中用于企业软件开发和部署的技术的基础。 JRE不包含用于开发小应用程序和应用程序的工具和实用程序,例如编译器或debugging器。


Java开发工具包(JDK)

JDK是JRE的超集,包含JRE中的所有内容,以及用于开发小应用程序和应用程序所需的编译器和debugging器等工具。

请注意,Oracle不是唯一提供JDK的人。

OpenJDK的

OpenJDK是Java SE 7 JSR( JSR 336 )的开源实现。 现在Oracle JDK和OpenJDK几乎没有区别。 去年,Oracle做出了这个决定: 转向OpenJDK,作为官方的Java SE 7参考实现

这个博客中有不同之处:

问:在OpenJDK存储库中find的源代码与用于构buildOracle JDK的代码有什么区别?

答:非常接近 – Oracle JDK发行版的构build过程是在OpenJDK 7上构build的,只是增加了一些部分,如部署代码(包括Oracle的Java插件和Java WebStart的实现)以及一些封闭的源代码第三第三方组件像graphics光栅,一些开放源码的第三方组件,比如Rhino,还有一些零碎的东西,比如附加的文档或者第三方的字体。 outlook未来,我们的目标是开源Oracle JDK的所有部分,除了那些我们认为是商用function的产品,例如JRockit Mission Control(Oracle JDK尚未提供),并且用开源替代品替代设防的第三方组件以实现更接近的奇偶校验在代码库之间。

根据使用的版本,虚拟机可能会有所不同: Sun / Oracle JDK,OpenJDK和HotSpot VM版本之间的对应关系

  • JVM是Java虚拟机 – JVM实际上运行Java字节码。
  • JDK是Java开发工具包 – JDK是编译Java源代码所需的。
  • JRE是Java运行时环境 – 是运行Java程序所需的,包含JVM等等。

OpenJDK是一个特定的JDK实现。

JDK(Java开发工具包)

Java Developer Kit包含开发Java程序所需的工具,以及运行程序的JRE。 该工具包括编译器(javac.exe),Java应用程序启动器(java.exe),Appletviewer等…

编译器将java代码转换为字节码。 Java应用程序启动器打开JRE,加载类并调用其主要方法。

你需要JDK,如果你想编写自己的程序,并编译它们。 对于运行Java程序,JRE就足够了。

JRE是执行Java文件的目标

JRE = JVM + Java包类(如util,math,lang,awt,swing等)+运行时库。

JDK主要针对Java开发。 也就是说,您可以创build一个Java文件(借助于Java包),编译一个Java文件并运行一个java文件。

JRE(Java运行时环境)

Java运行时环境包含JVM,类库和其他支持文件。 它不包含任何开发工具,如编译器,debugging器等。实际上,JVM运行程序,它使用JRE中提供的类库和其他支持文件。 如果你想运行任何Java程序,你需要在系统中安装JRE

Java虚拟机提供了执行代码的平台无关的方式; 这意味着在任何机器上编译一次,并在任何地方运行(任何机器)。

JVM(Java虚拟机)

正如我们都知道,当我们编译一个Java文件,输出不是一个“exe”,但它是一个“.class”文件。 '.class'文件由JVM可理解的Java字节代码组成。 Java虚拟机根据底层操作系统和硬件组合将字节码解释为机器码。 它负责所有的事情,如垃圾收集,数组边界检查等… JVM是平台相关的。

JVM被称为“虚拟”,因为它提供了一个不依赖于底层操作系统和机器硬件体系结构的机器接口。 这种独立于硬件和操作系统的独立性是Java程序的一次写入运行任意值的基石。

有不同的JVM实现。 这些可能会在性能,可靠性,速度等方面有所不同。在Java规范没有提到如何实现这些特性的领域,这些实现将会有所不同,比如垃圾收集过程如何工作,取决于JVM,Java规范定义任何具体的方式来做到这一点。

Java虚拟机(JVM)是一个可以执行Java字节码的虚拟机。 它是Java软件平台的代码执行组件。

Java Development Kit(JDK)是面向Java开发人员的Oracle Corporation产品。 自Java引入以来,它一直是使用最广泛的Java软件开发工具包(SDK)。

Java运行时环境 ,也被称为Java运行时运行时环境

OpenJDK(开放Java开发工具包)是Java编程语言的免费开源实现。 这是Sun Microsystems公司于2006年开始的努力的结果。该实施是根据GNU通用公共许可证(GPL)进行许可的,并有一个链接例外。

只是:

JDK (Java开发工具包):

  • 包含开发Java程序所需的工具。
  • 你需要JDK,如果你想编写自己的程序,并编译它们。
  • JDK主要针对Java开发。

JRE (Java运行时环境)

Java运行时环境包含JVM,类库和其他支持文件。 JRE是执行Java文件的目标。

JVM (Java虚拟机)

JVM根据底层操作系统和硬件组合将字节码解释为机器码 。 它负责所有的事情,如垃圾收集,数组边界检查等… Java虚拟机提供了一个平台无关的方式执行代码。

JVM是Java代码在其上执行的虚拟机

JRE是运行Java应用程序所需的环境(标准库和JVM)

JDK是带有开发工具和文档的JRE

OpenJDK是JDK的开源版本,与Oracle拥有的常见JDK不同

Java虚拟机(JVM)

当您下载JRE并安装到您的机器上时,您将获得创buildJVM所需的全部代码。 使用java命令运行Java程序(例如java HelloWorld)时会创buildJava虚拟机。 JVM负责将字节码转换为特定于机器的代码,这就是为什么在Windows,Linux或Solaris上有不同的JVM,但是一个JAR可以在所有的操作系​​统上运行。 Java虚拟机是Java编程语言的核心,为Java程序员提供了几个function,包括内存pipe理和垃圾收集,安全和其他系统级别的服务。 可以定制Java虚拟机,例如,我们可以指定在JVM创build时位于JVM内部的起始内存或堆大小的最大内存。 如果我们向java命令提供了无效的参数,那么可以通过说“创buildJava虚拟机失败:无效参数”来拒绝创buildJava虚拟机。 总之,Java虚拟机或JVM是为Java提供平台独立性的人。

Java开发工具包(JDK)

JDK也被粗略地称为JRE,但它比JRE更多,它提供了编译debugging和执行Java程序所需的所有工具和可执行文件。 就像JRE一样,JDK也是特定于平台的,您需要使用单独的安装程序来在Linux和Windows上安装JDK。 JDK的当前版本是1.7,也被称为Java7,它包含基于Java7和Java的编程规则的javac(java编译器),它可以执行java7代码,具有Switch,fork-join框架或自动资源pipe理中的String的新function。 安装JDK时,安装文件夹通常被称为JAVA_HOME。 所有的二进制文件都位于JAVA_HOME / bin中,其中包括javac,java和其他二进制文件,它们必须位于系统PATH中才能编译和执行Java程序。 有关Path的详细信息,请参阅如何在Windows和UNIX中为Java设置PATH。

Java运行时环境(JRE)

Java在浏览器,移动设备,电视机或机顶盒中的每一个地方,如果你使用的是Java编程语言,那么你知道JAR(Java归档)文件中捆绑的Java代码需要Java虚拟机JVM来执行它。 现在JVM是像其他程序一样的可执行程序或程序,您可以将其安装到您的机器中。 您已经看到浏览器经常build议下载JRE以运行从Internet上下载的Java Applet。 JRE的各种版本都可以在java.oracle.com中find,而大多数用户只是想在浏览器内部执行Java程序或者单独下载JRE。 所有浏览器,包括Internet Explorer,Firefox和Chrome都可以使用JRE。

另一个值得一提的方面是:

JDK(java开发工具包)

您将需要它像名称所示的开发目的。

例如:一家软件公司将在他们的计算机上安装JDK,因为他们需要开发新的软件,这个软件也需要编译和运行他们的Java程序。

所以我们可以说JDK = JRE + JVM。

JRE(java运行环境)

需要运行Java程序。 你不能用它编译Java程序。

例如:想要运行一些在线游戏的普通计算机用户需要在他的系统中运行Java程序。

JVM(Java虚拟机)

正如你可能知道它运行的字节码。 它使Java平台独立,因为它执行在编译Java程序后得到的.class文件,无论您是在Windows,Mac或Linux上编译它。

打开JDK

那么,就像我上面所说的那样。 现在JDK由不同的公司生产,其中一个恰好是开源的,免费供公众使用的是OpenJDK,另一些是Oracle公司的JRockit JDK或IBM JDK。

但是,它们对普通用户来说可能都是一样的。

结论

如果你是一个Java程序员,你将需要在你的系统中使用JDK,这个包也包含JRE和JVM,但是如果你是喜欢玩在线游戏的普通用户,那么你只需要JRE,这个包就不会有JDK。 。

换句话说,JDK是祖父JRE是父亲,JVM是他们的儿子。

Java是语言,包括严格和强types的语法,你现在应该非常熟悉。

Java 2平台标准版(也称为J2SE)引用了该平台,其中包括java.lang和java.io包中的类。 这是Java应用程序构build的基石。

Java虚拟机(JVM)是​​运行已编译的Java代码的软件虚拟机。 因为编译的Java代码只是字节码,JVM负责在运行之前将该字节码编译为机器码。 (这通常称为即时编译器或JIT编译器。)JVM还负责内存pipe理,以便应用程序代码不必这样做。

Java开发工具包(JDK)一直是Java开发人员用来创buildJava应用程序的软件。 它包含一个Java语言编译器,一个文档生成器,用于处理本地代码的工具,以及(通常)用于平台的Java源代码以启用debugging平台类。

Java运行时环境(JRE)一直是最终用户下载的软件,可以运行编译的Java应用程序。 它包含一个JVM,但不包含任何捆绑在JDK中的开发工具。 但是,JDK确实包含JRE。

JDK – 将java编译为字节码。 包括debugging器,编译器等

 javac file.java // Is executed using JDK 

JVM – 执行字节码。 JVM是独立于Java平台的。 但JVM因平台而异

JRE – JRE包含JVM以及用于执行Java程序的Java运行时库。

JVM :这实际上意味着字节码解释器。它是依赖于平台的。 例如:在Windows平台中,“ java.exe ”或“ javaw.exe ”进程是jvm进程。

JDK :是一个工具包,包含必要的库和实用程序来开发和执行Java程序/应用程序

JRE :是一个java application.ie的执行环境,它只支持包括jvm在内的运行时依赖项。 如果我们想编译一个java程序,我们需要jdk。

JVM

JVM(Java虚拟机)是一个抽象机器。 这是一个规范,它提供了可以执行java字节码的运行时环境。 JVM可用于许多硬件和软件平台。

JRE

JRE是Java Runtime Environment的缩写,用于提供运行时环境,它是JVM的实现,它在物理上是存在的。它包含一组JVM在运行时使用的库+其他文件。

JDK

JDK是Java开发工具包的首字母缩写,它在物理上存在。它包含JRE +开发工具。

链接: – http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

JVM:java的虚拟机。 告诉机器如何处理Java代码。 您无法按原样下载JVM。 它包装在其他一些组件中。

JRE:上面提到的其他组件是JRE。 JVM +其他的jar来创build运行环境

JDK:包含JRE(其中又包含JVM)。 一旦你获得了JDK,你就不需要单独安装JRE和JVM。 它包含编译器,它将.java文件编译为.class文件

JRE – 代表Java运行时,它需要运行Java应用程序。

JDK – 代表Java开发工具包,并提供开发Java程序的工具,例如Java编译器。 它还包含JRE。

JVM – 代表Java虚拟机,它负责运行Java应用程序。

JIT – 代表即时编译,通过将Java字节码转换为本地代码,有助于提高Java应用程序的性能。

JVM Java虚拟机,实际上执行java字节码。 它是JAVA平台上的执行块。 它将字节码转换为机器码。

JRE Java运行时环境,提供执行Java应用程序的最低要求; 它由Java虚拟机(JVM),核心类和支持文件组成。

JDK Java开发工具包,它具有开发应用程序软件的所有工具。 它是作为JRE + JVM

打开JDK是Java平台的免费开源实现。

通俗地说: – JDK = JRE +开发/debugging工具 ,其中JDK是我们完整的Java工作包,从创build编译直到运行它。另一方面,JRE只是运行代码(字节代码)。

注意:无论我们安装的是JDK还是JRE,JVM都会与这两个软件包捆绑在一起,而JVM是JIT编译器将字节码转换为机器特定代码的一部分。

只要阅读关于JDK,JRE,JVM和JIT的文章

简而言之:

JVM:描述运行Java程序的方式/资源的规范。 实际上是执行字节码,使java平台独立。 这样做,不同的平台是不同的。 用于Windows的JVM不能用作UNIX的JVM。

JRE:JVM的实现。 (JVM +运行时库)

JDK:JRE + java编译器等基本工具从头开始构build一个java程序

JDK :您需要编写和运行Java代码的完整软件包

OpenJDK :JDK的独立实现,使其更好

JVM :将Java代码转换为字节码,并提供规范说明Java代码如何编译,加载,validation,检查错误并执行。

JRE :使用一些Java库来运行程序的JVM的实现

JRE执行应用程序,但JVM逐行读取指令,所以它是解释器。

JDK = JRE +开发工具

JRE = JVM +库类

Java运行时环境(JRE)
Java在浏览器,移动设备,电视机或机顶盒中的每一个地方,如果你使用的是Java编程语言,那么你知道JAR(Java归档)文件中捆绑的Java代码需要Java虚拟机JVM来执行它。 现在JVM是像其他程序一样的可执行程序或程序,您可以将其安装到您的机器中。 您已经看到浏览器经常build议下载JRE以运行从Internet上下载的Java Applet。 JRE的各种版本都可以在java.oracle.com中find,而大多数用户只是想在浏览器内部执行Java程序或者单独下载JRE。 所有浏览器,包括Internet Explorer,Firefox和Chrome都可以使用JRE。

Java虚拟机(JVM)
当您下载JRE并安装到您的机器上时,您将获得创buildJVM所需的全部代码。 使用java命令运行Java程序(例如java HelloWorld)时会创buildJava虚拟机。 JVM负责将字节码转换为特定于机器的代码,这就是为什么在Windows,Linux或Solaris上有不同的JVM,但是一个JAR可以在所有的操作系​​统上运行。 Java虚拟机是Java编程语言的核心,为Java程序员提供了几个function,包括内存pipe理和垃圾收集,安全和其他系统级别的服务。 可以定制Java虚拟机,例如,我们可以指定在JVM创build时位于JVM内部的起始内存或堆大小的最大内存。 如果我们向java命令提供了无效的参数,那么可以通过说“创buildJava虚拟机失败:无效参数”来拒绝创buildJava虚拟机。 简而言之,Java虚拟机或JVM是为Java提供平台独立性的人。

Java开发工具包(JDK)
JDK也被粗略地称为JRE,但它比JRE更多,它提供了编译debugging和执行Java程序所需的所有工具和可执行文件。 就像JRE一样,JDK也是特定于平台的,您需要使用单独的安装程序来在Linux和Windows上安装JDK。 JDK的当前版本是1.7,也被称为Java7,它包含基于Java7和Java的编程规则的javac(java编译器),它可以执行java7代码,具有Switch,fork-join框架或自动资源pipe理中的String的新function。 安装JDK时,安装文件夹通常被称为JAVA_HOME。 所有的二进制文件都位于JAVA_HOME / bin中,其中包括javac,java和其他二进制文件,它们必须位于系统PATH中才能编译和执行Java程序。 有关Path的详细信息,请参阅如何在Windows和UNIX中为Java设置PATH。

JRE,JDK和JVM之间的区别
简而言之,JRE,JDK和JVM之间几乎没有什么区别:

1)JRE和JDK作为安装程序,而JVM与它们捆绑在一起。
2)JRE只包含执行java程序的环境,但不包含编译java程序的其他工具。
3)JVM随JDK和JRE一起提供,并通过提供“java”命令执行Java程序时创build。

浏览此链接以查看关于此说明的评论