JRE stands for “Java Runtime Environment” and may also be written as “Java RTE.” The Java Runtime Environment provides the minimum requirements for executing a Java application; it consists of the Java Virtual Machine (JVM), core classes, and supporting files.
还是看英文原版的解释的比较清晰。
JRE表示Java运行环境,也就是包含执行Java程序最基本的条件。它由JVM和一些核心类库组成。
使用场景:JRE一般是给想要运行Java程序的人员使用。
JDKThe Java Development Kit (JDK) is a software development environment used for developing Java applications and applets. It includes the Java Runtime Environment (JRE), an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc) and other tools needed in Java development.
JDK是一个用来开发Java Application和Applets的开发环境。它包含了JRE、解释器、编译器、打包工具、文档生成器等。
使用场景:JDK一般是给开发人员使用。
JVM-
A specification where working of Java Virtual Machine is specified. But implementation provider is independent to choose the algorithm. Its implementation has been provided by Sun and other companies.
-
An implementation is a computer program that meets the requirements of the JVM specification
-
Runtime Instance Whenever you write java command on the command prompt to run the java class, an instance of JVM is created.
JVM,Java Virtual Machine的简称,简单来说就是用来执行字节码的,它并不认识Java代码,它将字节码翻译成对应平台的机器指令,再由对应的平台执行机器指令。这也就是我们所说的写一次Java代码,能够在各种平台上运行:WORA(Write Once Run Anywhere)。所以每个平台需要有一个对应的JVM。
另外JVM本身也是一种规范(specification),不同厂商可以有不同的实现。目前比较出名的JVM是Oracle的HotSpot,它就是JVM规范的一种实现。
最后说到编程语言,不管是用Java还是其它的什么语言,只要编译器生成的字节码能够符合JVM规范,JVM能够读懂就行。简单理解这样的编程就是面向JVM规范编程, JVM成为了一个能容纳其它语言运行的平台,如Scala、Kotlin、Groovy、Clojure等。
下一篇文章会详细介绍JVM。
使用场景:不管是用JRE还是JDK,最后都要用到JVM,因为JVM会一行一行地解释代码(字节码),因此JVM也可以认为是一个解释器。
三者关系JDK = JRE + Development/debugging tools
JRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries.
JVM = Class loader system + runtime data area + Execution Engine.
JVM是JRE的子集,JRE是JDK的子集,JDK是JRE的超集。
再来个详细的图:
Runtime是指JRE执行环节;
Compil是指JDK中的编译环节;
运行Java应用时,三者的关系图:
https://mp.weixin.qq.com/s/w79oRIIiHWpbQw0pcOyBUA