JDK和JRE有什么区别?
JDK和JRE有什么区别?
他们的angular色是什么?我应该什么时候使用其中一种?
JRE :Java运行时环境。 它基本上是运行Java程序的Java虚拟机。 它还包括用于Applet执行的浏览器插件。
JDK :这是用于Java的全function软件开发工具包,包括JRE ,以及用于创build和编译程序的编译器和工具(如JavaDoc和Java Debugger)。
通常,当您只关心在浏览器或计算机上运行Java程序时,您将只安装JRE 。 这是你所需要的。 另一方面,如果你打算做一些Java编程,你也将需要JDK 。
有时,即使您不打算在计算机上执行任何Java开发,您仍然需要安装JDK 。 例如,如果您正在使用JSP部署Web应用程序,则技术上 只是在应用程序服务器内部运行Java程序。 那你为什么还需要JDK ? 因为应用程序服务器会将JSP转换成Servlet并使用JDK来编译servlet。 我相信可能会有更多的例子。
巴勃罗是非常正确的。 这只是附加信息:
顾名思义,“ JRE ”就是一个环境 。 它基本上是一堆与Java相关的文件的目录,
- / bin与可执行程序如
java
和(对于Windows)javaw
,它们本质上是Java虚拟机的程序; - / lib有大量的支持文件:一些
jar
文件,configuration文件,属性文件,字体,声音,图标…所有Java的“修剪”。 最重要的是rt.jar
和其中可能包含“Java API”(即Java库代码)的几个兄弟。 - 在某些地方,可能被安装程序
.DLL
到操作系统指定的某个目录,是一些.DLL
(对于Windows)或.so
(Unix / Linux),通常支持系统特有的本机二进制代码。
JDK也是一组目录。 它看起来很像JRE,但它包含一个带有完整JRE的目录(称为JRE
),它有许多开发工具,最重要的是它的bin
目录中的Java编译器javac
。
JDK是JRE的超集,包含JRE中的所有内容,以及用于开发小应用程序和应用程序所需的编译器和debugging器等工具。 JRE提供库,Java虚拟机(JVM)和其他组件来运行用Java编程语言编写的小应用程序和应用程序。
俗话说:JDK是祖父JRE是父亲,JVM是他们的儿子。 [即JDK> JRE> JVM]
JDK = JRE +开发/debugging工具
JRE = JVM + Java包类(如util,math,lang,awt,swing等)+运行时库。
JVM =类加载器系统+运行时数据区+执行引擎。
换句话说,如果你是一个Java程序员,你将需要在你的系统中使用JDK,这个包也包含JRE和JVM,但是如果你是喜欢玩在线游戏的普通用户,那么你只需要JRE,这个包就不会有JDK在里面。
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的人。
JIT编译过程(礼貌:Oracle文档)
从官方的Java网站…
JRE(Java运行时环境):
- 它是实际执行Java程序的Java虚拟机*的实现。
- Java运行时环境是运行Java程序所需的插件。
- JRE比JDK小,所以需要更less的磁盘空间。
- JRE可以从https://www.java.com免费下载/支持;
- 它包括JVM,Core库和其他组件,以运行用Java编写的应用程序和小程序。
JDK(Java开发工具包)
- 这是一个可以用来开发基于Java的应用程序的软件包。
- 开发Java应用程序需要Java Development Kit。
- JDK需要更多的磁盘空间,因为它包含JRE以及各种开发工具。
- JDK可以从https://www.oracle.com/technetwork/java/javase/downloads/免费下载/支持;
- 它包括JRE,一组API类,Java编译器,Webstart以及编写Java小程序和应用程序所需的其他文件。
从debugging的angular度来看,有一点不同
要debugging到Java系统类(如String和ArrayList),需要使用“debugging信息”编译的JRE的特殊版本。 包含在JDK内的JRE提供了这个信息,但是常规的JRE没有。 常规JRE不包含此信息以确保更好的性能。
什么是debugging信息? 这里是从这个博客文章中快速解释:
现代编译器做了很好的工作,将高级代码转换成很好的缩进和嵌套的控制结构和任意types的variables,成为一大堆称为机器代码(或Java代码的字节码)的位,其唯一目的是在目标CPU(您的JVM的虚拟CPU)上尽可能快地运行。 Java代码被转换成几个机器代码指令。 变数被推到各处 – 进入堆栈,进入寄存器,或完全优化。 结构和对象甚至不存在于结果代码中 – 它们只是一个抽象,被转换为硬编码的偏移到内存缓冲区中。
那么当debugging器要求它在某些函数的入口处中断时,debugging器怎么知道要停止的地方呢? 当你问variables的价值时,它如何设法find要展示给你的东西? 答案是 – debugging信息。
debugging信息由编译器和机器代码一起生成。 它是可执行程序和原始源代码之间关系的表示。 该信息被编码成预定义的格式,并与机器码一起存储。 许多这样的格式是多年来为不同的平台和可执行文件而发明的。
JRE
JRE是Java Runtime Environment的缩写,用于提供运行时环境,它是JVM的实现,它在物理上是存在的。它包含一组JVM在运行时使用的库+其他文件。
JDK
JDK是Java开发工具包的首字母缩写,它在物理上存在。它包含JRE +开发工具。
链接: – http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
通常,当您只关心在浏览器或计算机上运行Java程序时,您将只安装JRE。 这是你所需要的。 另一方面,如果你打算做一些Java编程,你也将需要JDK。
JVM,JRE和JDK依赖于平台,因为每个操作系统的configuration不同。 但是,Java是平台独立的。
Java虚拟机(JVM)是一个执行Java字节码的运行时系统。
JRE是运行Java应用程序所需的环境(标准库和JVM)。
JDK包含JRE plus命令行开发工具,如编译器和debugging器,这些工具对于开发applet和应用程序是必需或有用的。
以下是来自Oracle的简单回复http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE运行时环境(JRE)
JRE提供了运行用Java编程语言编写的applet和应用程序所需的库,Java虚拟机和其他组件。 此运行时环境可以与应用程序一起重新分发,使其独立。
Java SE开发工具包(JDK)
JDK包含JRE plus命令行开发工具,如编译器和debugging器,这些工具对于开发applet和应用程序是必需或有用的。
如果要运行Java程序,但不开发它们,请下载Java运行环境或JRE。 如果要开发它们,请下载Java Development Kit或JDK
JDK
我们称之为JDK是一个工具包,包括那些需要开发和运行java应用程序的东西。
JDK被用作构build应用程序,组件和小程序的开发环境。
JRE
它包含了以编译forms运行Java应用程序所需的一切。 你不需要任何图书馆和其他东西。 所有你需要的东西都被编译。
JRE不能用于开发,只能用于运行应用程序。
JVM(Java虚拟机)是一个抽象机器。 这是一个规范,它提供了可以执行java字节码的运行时环境。
JRE是Java Runtime Environment的缩写,它用于提供运行时环境。它是JVM的实现。它是物理上存在的。它包含JVM在运行时使用的一组库+其他文件
JDK是Java开发工具包的首字母缩写,它在物理上存在。它包含JRE +开发工具
jdk是编译代码并将java代码转换为字节代码所必需的,而jre是执行字节代码所必需的。
jvm,jre,jdk这些都是java语言的中坚力量。 每个组件单独工作。 Jdk和Jre物理存在,但Jvm是一个抽象的机器,这意味着它没有物理存在。
JVM是用于检查中间代码的JDK和JRE的子系统,称为Bytecode。 它首先通过JVM子系统类加载器加载由Java编译器(Javac)生成的具有.c扩展名的“类文件”,并根据用途分类存储位置(类区,堆栈,堆和pc寄存器)。 然后检查所有的字节码,以确保它是返回在Java和所有内存访问通过networking。 之后,解释器开始工作,解释器通过JRE(Java Runtime Environment)检查整个程序行的线程,最终将结果显示在控制台,浏览器和应用程序中。
JRE也是JDK的一个子系统,提供诸如JVM,类,像.jar文件之类的可执行文件等运行时设施。
JDK是 Java开发工具包,它包含用于编程的所有必要组件,如类,方法,swing,AWT,包,java(解释器),javac(编译器),appletviewer(applet应用程序查看器)等等。该文件在开发独立或基于Web的应用程序时非常有用。
JDK包含JRE plus命令行开发工具,如开发applet和应用程序所必需或有用的编译器和debugging器。
JRE基本上是运行Java程序的Java虚拟机。 它还包括用于Applet执行的浏览器插件。
JDK是一个抽象机器。 这是一个规范,它提供了可以执行java字节码的运行时环境。
所以,基本上JVM <JRE <JDK根据@Jaimin Patel说。
简单说:
JVM是Java代码在其上执行的虚拟机
JRE是运行Java应用程序所需的环境(标准库和JVM)
JDK是带有开发工具和文档的JRE
JDK和JRE的区别在于JDK是用于java的软件开发工具包,而JRE则是运行程序的地方。
假设,如果你是一个开发人员,那么你的angular色是开发程序以及执行程序。 所以您必须具有由JDK提供的开发和执行环境。
假设,如果你是一个客户,那么你不必担心开发。只需要一个运行程序的环境,并获得结果,这是由JRE提供的。
JRE执行应用程序,但JVM逐行读取指令,所以它是解释器。
JDK = JRE +开发工具
JRE = JVM +库类
对这些术语(JVM,JDK,JRE)的清晰理解对于掌握它们的用法和差异至关重要。
JVM Java虚拟机(JVM)是执行Java字节码的运行时系统。 JVM就像一个虚拟的计算机,可以执行一组编译指令和操作内存位置。 当Java编译器编译源代码时,它会在.class文件中生成一组高度优化的称为字节码的指令。 JVM解释这些字节码指令,并将它们转换为机器特定的代码执行。
JDK Java开发工具包(JDK)是一个软件开发环境,可用于开发和执行Java应用程序。 它包括JRE和一组编程工具,如Java编译器,解释器,appletviewer和文档查看器。 JDK是通过Java SE,Java EE或Java ME平台实现的。
JRE Java运行时环境(JRE)是JDK的一部分,包括JVM,核心类和支持应用程序开发的多个库。 虽然JRE作为JDK的一部分提供,但您也可以单独下载和使用它。
对于完整的理解和细节: Jdk Jre Jvm和区别
如果你是一个Java程序员,你将需要在你的系统中使用JDK ,这个包也包含JRE和JVM,但是如果你是喜欢玩在线游戏的普通用户 ,那么你只需要JRE ,这个包就不会有JDK。 。
JVM
JVM(Java虚拟机)是一个抽象机器。 这是一个规范,它提供了可以执行java字节码的运行时环境。
JVM可用于许多硬件和软件平台。 JVM,JRE和JDK依赖于平台,因为每个操作系统的configuration不同。 但是,Java是平台独立的。
JRE
它包含了以编译forms运行Java应用程序所需的一切。 你不需要任何图书馆和其他东西。 所有你需要的东西都被编译。
JRE不能用于开发,只能用于运行应用程序。
Java SE开发工具包(JDK)
JDK包含JRE plus命令行开发工具,如编译器和debugging器,这些工具对于开发applet和应用程序是必需或有用的。
(来源: GeeksForGeeks Q&A , Java平台概述 )
JRE
JRE是Java Runtime Environment的缩写,用于提供运行环境,是JVM的实现。 它在物理上存在。 它包含JVM在运行时使用的一组库+其他文件。
JVM的实施也由Sun Micro Systems以外的其他公司积极发布。
JDK
JDK是Java开发工具包的首字母缩写,它在物理上存在。它包含JRE +开发工具。