JRE和JVM有什么区别?

67

我认为JVM与.NET框架相似,是这样吗?那么JRE是什么?JRE和JVM有什么区别?


1
JVM 在 .NET Framework 中对应 CLR。 - RBT
12个回答

164

Java Runtime Environment包含JVM、类库和其他支持文件。

它不包含任何开发工具,如编译器、调试器等。

JVM实际上是运行程序的内容,它使用在JRE中提供的类库和其他支持文件。

JRE = JVM + Java Packages Classes(例如util、math、lang、awt、swing等)+ runtime libraries。

如果想要运行任何Java程序,则需要在系统中安装JRE。

JRE是盒子,JVM是盒子的内容。

简单来说,JRE = JVM + rt.jar

其中rt.jar包含lang、util、awt、swing、math等库或编译的.class文件,用于运行我们的程序。

了解JVM和JRE之间的区别-单击此处


17
谢谢。这比接受的答案好多了。 - Jonathan Cox
2
链接已失效,但该页面已存档在Wayback Machine上:JRE和JVM之间的区别(存档于2011年9月15日) - Spencer D
简单易懂的答案,任何人都可以理解,不需要专业术语。 - RamPrakash

41

JRE是虚拟机运行的环境。

JRE - JAVA运行时环境

JVM - JAVA虚拟机

JRE是容器,JVM是内容。


21

首先JDK包含JRE+开发工具,JRE包含JVM+类库,其中JVM包含(类加载器和字节码验证器)以及执行引擎(解释器和JIT)。

编译器将源代码转换为中间字节码。将此字节码提供给JVM进行执行,JVM中的类加载器将加载字节码,并与JRE提供的类库进行链接。

然后将代码提供给JVM中的执行引擎,该引擎会解释未重复的代码并编译重复的代码(例如循环),最终将其转换为机器码(目标代码)。然后将机器码提供给微处理器进行执行。


2
JDK = JRE + Dev Tools = (JVM + 类库) + 开发工具 - Don Cheadle

8

通俗易懂的解释:

JDK = JRE + 开发/调试工具,JDK 是我们与 Java 一起工作的完整包,从创建编译到运行。而 JRE 只是用于运行代码(字节码)。

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

JVM is Java Virtual Machine -- the JVM actually runs Java bytecode.
JDK is Java Developer Kit -- the JDK is what you need to compile Java source code.
JRE is Java Runtime Environment -- is what you need to run a Java program and contains a JVM, among other things.

7
这个问题的简单答案是,JREJVM 的超集。
也就是说,使用 Java 编译器(javac)编译的代码会产生字节码(.class 文件)。JDK 的子集 jre 包含所需的库以及 jvm。jvm 运行字节码并生成机器代码,这些代码可由机器读取,并受其所需的库支持。
要查看 jvm 的配置,请前往: C:\ Program Files \ Java \ jre7 \ lib \ i386 \ jvm.cfg 此文件包含可以用作 java、javac 等选项的 JVM 列表。

5

JRE包含JVM,它实际上解释字节码并运行程序。为此,JVM使用JRE提供的库和其他文件。

我认为你可以说JRE就像.NET Framework,而JVM就像.NET CLR。不过,可能有一些重要的区别我不知道。


JRE就像.NET Framework,而JVM则像.NET CLR。 - Luke Puplett

3

JVM是运行Java代码的进程,而JRE则是分发的所有文件,用于形成JVM运行的“环境”。


3

JRE 是一个环境,用于在本地执行任何Java程序。

JVM 负责将字节码转换为特定机器的代码,并使Java程序实现一次编写,随处运行。


2

Java虚拟机(JVM)是一种抽象的虚拟机器(基本上是一个程序),它驻留在您的计算机上,并为Java字节码提供运行时环境,以便在编译后的程序代码执行。

JVM分析字节码,解释它,并执行相同的字节码以显示输出。

JVM的基本功能是执行已编译的.class文件(即字节码)并生成输出。请注意,每个操作系统都有不同的JVM,但在所有操作系统中生成的字节码输出都是相同的。这意味着在Windows操作系统上生成的字节码也可以在Linux操作系统上运行,反之亦然,从而使Java成为一种平台无关的语言。

因此,我们可以说JVM执行以下操作:

  1. 加载所需的.class和jar文件
  2. 指定引用和验证代码
  3. 执行代码
  4. 为Java字节码提供运行时环境

JRE(Java Runtime Environment)是JVM加上开发工具,以开发与JVM兼容的程序。

enter image description here

查看文章以了解有关JVM的更多信息。


2

JRE和JVM是JDK的一部分。 jdk=jre(包含JVM)+开发工具。

JVM是规范,JVM实现的名称是Hotspot或其他名称,由不同的组织实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接