Difference between JDK, JRE, JVM
We must understand the basic difference between the JDK, JRE, and JVM before diving deep into Java.

JDK | JRE | JVM |
JDK stands for Java Development Kit. It provides development tools and execution environment. | JRE stands for Java Runtime Environment. It provides the set of tools only to execute our program. | JVM stands for Java Virtual Machine. It is responsible for the program to execute line by line. |
JDK is the superset of the JRE. It contains JRE with Java compiler, debugger, and core classes. | JRE contains a set of libraries and other files that JVM uses at runtime. | It contains JIT (Just in Time Compiler), interpreter, and set of APIs. JIT optimizes bytecode to machine specific language compilation by compiling similar bytecodes. |
Uses JVM, interpreter/loader, a compiler, an archiver, a documentation generator (Javadoc), and set of APIs to complete the development of Java application. | Uses a set of libraries, other jar files, and set of API to run the program. It doesn’t play any role during development. It only works to run the program. | JVM works to Load code, Verifies code, and Execute code and provides a runtime environment. |
It physically exits | It physically exits | It doesn’t physically exist. |