我在用Java编程时遇到了这些短语,它们之间有什么区别?
#1 楼
JVMJava虚拟机(JVM)是运行Java字节码的虚拟机。 JVM不理解Java源代码;这就是为什么需要编译
*.java
文件以获得包含JVM可以理解的字节码的*.class
文件的原因。它也是使Java成为一种“便携式语言”(一次编写,可以在任何地方运行)的实体。确实,JVM针对不同的系统(Windows,Linux,macOS,请参见Wikipedia列表)有特定的实现,其目的是使用相同的字节码,它们都可以提供相同的结果。JDK和JRE
要解释JDK和JRE之间的区别,最好是阅读Oracle文档并参考下图:
Java Runtime Environment(JRE)
Java Runtime Environment(JRE)提供了库,Java虚拟机和其他组件,以运行用Java编程语言编写的小程序和应用程序。另外,JRE包含两种关键的部署技术:Java插件,它使applet可以在流行的浏览器中运行; Java Web Start,它通过网络部署独立的应用程序。它也是Java 2平台企业版(J2EE)中用于企业软件开发和部署的技术的基础。 JRE不包含用于开发applet和应用程序的工具和实用程序,例如编译器或调试器。
Java Development Kit(JDK)
JDK是JRE的超集,并且包含JRE中的所有内容。 ,以及开发applet和应用程序所必需的工具,例如编译器和调试器。
请注意,Oracle并不是唯一提供JDK的工具。
OpenJDK
OpenJDK是开放的JDK的源实现以及Oracle JDK的基础。 Oracle JDK和OpenJDK之间几乎没有区别。
此博客中阐明了区别:
问:OpenJDK存储库中的源代码与用于构建Oracle JDK的代码之间有什么区别?
A:非常接近-我们针对Oracle JDK的构建过程基于OpenJDK 7构建,由仅添加了几部分,例如部署代码,其中包括Oracle对Java Plugin和Java WebStart的实现,以及一些开源第三方组件(如图形光栅化程序),一些开源第三方组件(如Rhino)和到处都是一些零碎的内容,例如其他文档或第三方字体。展望未来,我们的意图是将Oracle JDK的所有部分开源,但那些我们认为具有商业功能的部分(例如JRockit Mission Control(Oracle JDK中尚不可用)),并用开源替代品替代受害的第三方组件,以实现更紧密的比价JDK 11的更新-唐纳德·史密斯(Donald Smith)的一篇文章试图消除Oracle JDK与Oracle OpenJDK之间的区别:https://blogs.oracle.com/java-platform-group / oracle-jdk-releases-for-java-11-及更高版本
评论
@ alain.janinm,那么您会选择OracleJDK还是OpenJDK进行开发?
–起搏器
2014年8月15日在16:45
@Pacerier我曾经在工作中使用OracleJDK,但我对OpenJDK却一无所知:)实际上,我从未偶然发现过让我在它们之间进行选择的具体差异。如果您更喜欢开放源代码并且不需要使用专有许可证,则可以使用OpenJDK。
–alain.janinm
2014年8月18日15:52
请告诉我我是否对以下情况正确:基本上,没有JRE,就无法运行真正的Java应用程序。因此,所有下载内容(也许除了一些对开发人员而言非常奇怪的东西)都包含JVM和JRE(如果不是超集JDK)?
– Mads Skjern
15年2月8日在8:33
@MadsSkjern是的,您需要一个JRE来运行Java应用程序。但是,当您下载Java应用程序时,它并不随JRE一起提供,它希望您已在计算机上安装了一个Java应用程序。
–alain.janinm
15年2月8日在15:13
#2 楼
JVM是Java虚拟机-它实际上运行Java ByteCode。JRE是Java Runtime Environment-它包含JVM等,这是运行Java程序所需要的。 />
JDK是Java开发工具包–它是JRE,但添加了javac(这是编译Java源代码所需的工具)和其他编程工具。
OpenJDK是一个特定的JDK实现。
评论
可能是因为您没有提及JVM中包含的其他内容。这些是什么 ?本文是否完全回答了这个问题-javabeat.net/jrejvm-and-jdk-what-is-the-difference-between
– Erran Morad
2014年6月8日20:25
OpenJDK包含JVM,它是JVM规范的实现之一。 Oracle JDK包含JVM规范的另一种实现
–Akh
18年11月6日在6:23
#3 楼
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开发。即您可以创建Java文件(借助Java软件包),编译Java文件并运行Java文件。
JRE(Java运行时环境)
Java Runtime Environment包含JVM,类库和其他支持文件。它不包含任何开发工具,例如编译器,调试器等。实际上,JVM运行该程序,并且使用类库以及JRE中提供的其他支持文件。如果要运行任何Java程序,则需要在系统中安装JRE。
Java虚拟机提供了一种独立于平台的执行代码的方式;
这意味着可以任意编译一次机器并在任何地方运行它(任何机器)。
JVM(Java虚拟机)
众所周知,当我们编译Java文件时,输出不是'exe ”,但这是一个“ .class”文件。 “ .class”文件由JVM可以理解的Java字节码组成。 Java虚拟机根据底层操作系统和硬件组合将字节码解释为机器码。它负责所有事情,例如垃圾收集,数组边界检查等。JVM依赖于平台。
JVM之所以称为“虚拟”,是因为它提供的机器接口不依赖于底层操作系统和机器硬件体系结构。这种与硬件和操作系统的独立性是Java程序一次写入无处不在的价值的基石。
那里有不同的JVM实现。这些可能在性能,可靠性,速度等方面有所不同。这些实现在Java规范未提及如何实现功能的那些领域将有所不同,例如垃圾收集过程的工作方式取决于JVM,Java规范则不定义执行此操作的任何特定方法。
#4 楼
Java虚拟机(JVM)是可以执行Java ByteCode的虚拟机。它是Java软件平台的代码执行组件。Java Development Kit(JDK)是面向Java开发人员的Oracle Corporation产品。自从Java引入以来,它一直是使用最广泛的Java软件开发工具包(SDK)。
Java Runtime Environment,也称为Java Runtime,运行时环境
OpenJDK(开放Java开发工具包)是Java编程语言的免费开源实现。这是Sun Microsystems于2006年开始的努力的结果。该实现已获得GNU通用公共许可证(GPL)的许可,但有链接例外。
评论
好的答案,但有一个澄清。除了Oracle以外,其他公司都生产JDK,例如IBM用于AIX和z / OS,HP用于HP-UX等。
–特伦特·格雷·唐纳德(Trent Gray-Donald)
2012年7月19日在16:27
#5 楼
JVM是在Java代码上执行的虚拟机JRE是运行Java应用程序所需的环境(标准库和JVM)
JDK是具有开发人员工具和文档的JRE
OpenJDK是JDK的开源版本,与Oracle拥有的通用JDK不同。
#6 楼
JDK(Java开发工具包):包含开发Java程序所需的工具。
如果要编写自己的程序并进行编译,则需要JDK。他们。
JDK主要针对Java开发。
JRE(Java运行时环境)
Java Runtime Environment包含JVM,类库和其他支持文件。
/> JRE的目标是执行Java文件。
JVM(Java虚拟机)
JVM根据底层操作系统和操作系统将字节代码解释为机器代码。硬件组合。它负责诸如垃圾收集,数组边界检查等所有工作。Java虚拟机提供了一种独立于平台的执行代码的方法。
#7 楼
JDK-将Java编译为ByteCode。由调试器,编译器等组成。javac file.java // Is executed using JDK
JVM-执行字节码。 JVM是使Java平台独立的一种。但是JVM因平台而异。
JRE-JVM和Java运行时库一起执行Java程序。
#8 楼
另一个值得一提的方面:JDK(java开发工具包)
您将需要使用它来进行开发,例如顾名思义。
例如:一家软件公司将在其计算机中安装JDK,因为他们将需要开发新软件,其中包括编译和运行其Java程序。
所以我们可以说JDK = JRE + JVM。
JRE(Java运行时环境)
运行Java程序是必需的。您不能用它编译Java程序。
例如:想要运行一些在线游戏的普通计算机用户将需要在其系统中使用JRE来运行Java程序。
JVM(Java虚拟机)
您可能知道它运行字节码。它使Java平台独立,因为它不管在Windows,Mac还是Linux上执行编译Java程序后,都会执行
.class
文件。打开JDK
但是它们都可能对于一般用户来说,它们看起来是相同的。是喜欢玩在线游戏的普通用户,那么您只需要JRE,并且此软件包中将没有JDK。
换句话说,JDK是祖父,JRE是父亲,而JVM是他们的儿子。
评论
您的帖子到处都是错误的。 JRE(运行时环境)包含JVM(虚拟机)和Java类库。 JDK包含JRE和许多用于开发人员的编程工具。 en.wikipedia.org/wiki/JDK en.wikipedia.org/wiki/Java_virtual_machine在修复它时回复我的评论,我将删除下一篇投票。
– nhahtdh
13年5月3日在20:56
@nhahtdh可以说:jdk是独立软件包,可以下载,单独安装。 Jre =一些类+ Java插件+ JVM
– Prakash Pandey
16年8月27日在2:38
#9 楼
Java是该语言,并且包含您现在应该非常熟悉的严格且强类型化的语法。Java 2 Platform,Standard Edition,也称为J2SE,指的是平台并包括类。在java.lang和java.io包中。这是构建Java应用程序的基础。
Java虚拟机或JVM是运行已编译Java代码的软件虚拟机。由于已编译的Java代码仅仅是字节码,因此JVM负责在运行字节码之前将其编译为机器代码。 (通常称为即时编译器或JIT编译器。)JVM还负责内存管理,因此不必编写应用程序代码。
Java开发工具包或JDK是并且仍然是Java开发人员用来创建Java应用程序的软件。它包含Java语言编译器,文档生成器,用于处理本机代码的工具,以及(通常)用于平台的Java源代码以启用调试平台类。
Java Runtime Environment或JRE ,过去是,现在仍然是最终用户下载以运行已编译Java应用程序的软件。它包括一个JVM,但不包含JDK中捆绑的任何开发工具。但是,JDK确实包含一个JRE。
#10 楼
JVM:一种规范,描述了运行Java程序的方式/资源。实际执行字节代码并使Java平台独立。这样做对于不同的平台是不同的。 Windows的JVM无法用作UNIX的JVM。JRE:JVM的实现。 (JVM +运行时库)
JDK:JRE + Java编译器和其他从头开始构建Java程序的基本工具
#11 楼
JVM:这实际上意味着字节码解释器。它取决于平台。例如:在Windows平台中,“ java.exe”或“ javaw.exe”进程是jvm进程。JRE:是Java应用程序的执行环境。即,它仅支持运行时依赖项,包括已编译程序的jvm。如果要编译Java程序,则需要jdk。
#12 楼
JVM:Java虚拟机。告诉机器如何处理Java代码。您不能按原样下载JVM。它包装在其他组件中。JRE:上面提到的其他组件是JRE。
创建运行时环境是JVM +其他jars。
JDK:包含JRE(后者又包含JVM)。获得JDK后,您无需分别安装JRE和JVM。它包含将您的.java文件编译为.class文件的编译器
#13 楼
JVMJVM(Java虚拟机)是抽象机。该规范提供了可以在其中执行Java字节码的运行时环境。
JVM可用于许多硬件和软件平台。
JRE
JRE是Java Runtime Environment的首字母缩写,用于提供运行时环境,它是JVM的实现,物理上存在,它包含一组库+ JVM在运行时使用的其他文件。
JDK
JDK是Java Development Kit的首字母缩写,它实际上存在,它包含JRE +开发工具。
链接:-http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
#14 楼
总结:JRE = JVM + Java包(如util,math,lang,awt,swing等)+
运行时库
JDK = JRE +开发/ debugging工具
如果要使用Java开发,则需要JDK,但如果只想运行Java,则需要JRE。
#15 楼
JVM Java虚拟机实际执行Java字节码。它是JAVA平台上的执行块。它将字节码转换为机器码。
JRE Java Runtime Environment,提供了执行Java应用程序的最低要求。它由Java虚拟机(JVM),核心类和支持文件组成。
JDK Java开发工具包,它具有开发应用程序软件的所有工具。就像JRE + JVM
Open JDK是Java平台的免费和开源实现。
#16 楼
用通俗易懂的话来说:-JDK = JRE +开发/调试工具,其中JDK是我们使用Java的完整软件包,从创建编译到运行它都是如此。另一方面,JRE只是运行代码(字节码)。 />注意:-无论我们是安装JDK还是JRE,JVM都将与软件包捆绑在一起,而JVM是JIT编译器将字节码转换为机器特定代码的部分。
只需阅读有关JDK,JRE,JVM和JIT的文章
#17 楼
JDK:您需要编写和运行Java代码的完整软件包OpenJDK:JDK的独立实现,以使其变得更好。
JVM:将Java代码转换为字节码并提供了说明如何规范Java代码的规范,该规范应如何编译,加载,验证,检查错误和执行。 />
#18 楼
JRE执行该应用程序,但JVM逐行读取指令,因此它是解释器。JDK = JRE +开发工具
JRE = JVM +库类
#19 楼
JVM缩写为Java虚拟机,JVM是Java体系结构的主要组件。 JVM用C编程语言编写。 Java编译器为JVM生成字节码。 JVM读取字节码以验证字节码并将其与ibrary链接。JRE缩写为Java Runtime Environment。它在运行时提供环境。它是物理存在的。它包含JVM +库集(jar)+其他文件。JDK缩写为Java Development Kit。它是开发Java应用程序。以及调试和监视Java应用程序。 JDK包含JRE +开发工具(javac,java)OpenJDK OpenJDK是sun JDK的开源版本。 Oracle JDK是Sun的官方JDK。
评论
Java SE 6 vs. JRE 1.6 vs. JDK 1.6的可能重复-这些是什么意思?