编者注:这个问题是在2009年提出的,世界在哪里不同。到2022年,标准的开源OpenJDK将只支持jdk。
JDK和JRE有什么区别?
它们的角色是什么,什么时候应该使用其中一个或另一个?
编者注:这个问题是在2009年提出的,世界在哪里不同。到2022年,标准的开源OpenJDK将只支持jdk。
JDK和JRE有什么区别?
它们的角色是什么,什么时候应该使用其中一个或另一个?
当前回答
简单:
JVM是执行Java代码的虚拟机
JRE是运行Java应用程序所需的环境(标准库和JVM)
JDK是带有开发人员工具和文档的JRE
其他回答
从调试的角度来看,有一个不同之处:
要调试到Java系统类,如String和ArrayList,你需要一个特殊版本的JRE,它是用“调试信息”编译的。JDK中包含的JRE提供了这些信息,但常规的JRE没有。常规JRE不包含此信息,以确保更好的性能。
什么是调试信息?以下是这篇博文的简要解释:
Modern compilers do a pretty good job converting your high-level code, with its nicely indented and nested control structures and arbitrarily typed variables into a big pile of bits called machine code (or bytecode in case of Java), the sole purpose of which is to run as fast as possible on the target CPU (virtual CPU of your JVM). Java code gets converted into several machine code instructions. Variables are shoved all over the place – into the stack, into registers, or completely optimized away. Structures and objects don’t even exist in the resulting code – they’re merely an abstraction that gets translated to hard-coded offsets into memory buffers. So how does a debugger know where to stop when you ask it to break at the entry to some function? How does it manage to find what to show you when you ask it for the value of a variable? The answer is – debugging information. Debugging information is generated by the compiler together with the machine code. It is a representation of the relationship between the executable program and the original source code. This information is encoded into a pre-defined format and stored alongside the machine code. Many such formats were invented over the years for different platforms and executable files.
JRE即Java运行时环境。它是运行已编译Java程序所需的所有东西的包,包括Java虚拟机(JVM)、Java类库、Java命令和其他基础设施。但是,它不能用于创建新程序。
JDK是Java Development Kit,是Java的全功能SDK。它拥有JRE所拥有的一切,还包括编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。
通常,如果你只关心在电脑上运行Java程序,你只会安装JRE。这就是你所需要的。另一方面,如果您计划进行一些Java编程,则需要安装JDK。
有时,即使您不打算在计算机上进行任何Java开发,仍然需要安装JDK。例如,如果您正在使用JSP部署web应用程序,那么从技术上讲,您只是在应用服务器中运行Java程序。那么为什么需要JDK呢?因为应用服务器将JSP转换为Java servlet,并且需要使用JDK来编译servlet。我相信还有更多的例子。
JRE
JRE是Java运行时环境的首字母缩写。它用于提供运行时环境。它是JVM的实现。它是物理存在的。它包含一组库+ JVM在运行时使用的其他文件。
JDK
JDK是Java Development Kit的首字母缩写。它是物理存在的。它包含JRE +开发工具。
链接:- http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
通常,当您只关心在浏览器或计算机上运行Java程序时,您只会安装JRE。这就是你所需要的。另一方面,如果您计划进行一些Java编程,则还需要JDK。
JDK和JRE之间的区别在于,JDK是java的软件开发工具包,而JRE是运行程序的地方。
清楚地理解这些术语(JVM、JDK、JRE)对于掌握它们的用法和区别至关重要。
JVM Java虚拟机(JVM)是执行Java字节码的运行时系统。JVM就像一台虚拟计算机,可以执行一组编译好的指令并操作内存位置。当Java编译器编译源代码时,它会在.class文件中生成一组高度优化的指令,称为字节码。JVM解释这些字节码指令,并将它们转换为特定于机器的代码以供执行。
JDK Java开发工具包(JDK)是一个软件开发环境,您可以使用它来开发和执行Java应用程序。它包括JRE和一组编程工具,如Java编译器、解释器、appltviewer和文档查看器。JDK通过Java SE、Java EE或Java ME平台实现。
JRE Java运行时环境(JRE)是JDK的一部分,它包括JVM、核心类和几个支持应用程序开发的库。尽管JRE可以作为JDK的一部分提供,但您也可以单独下载并使用它。
要完全了解,你可以看看我的博客:Jdk Jre Jvm和差异