What is JVM?
JVM (Java Virtual Machine) is an abstract machine that enables your computer to run a Java program.
When you run the Java program, Java compiler first compiles your Java code to bytecode. Then, the JVM translates bytecode into native machine code (set of instructions that a computer's CPU executes directly).
Java is a platform-independent language. It's because when you write Java code, it's ultimately written for JVM but not your physical machine (computer). Since JVM executes the Java bytecode which is platform-independent, Java is platform-independent.
![Working of Java Program How does Java program work?](/sites/tutorial2program/files/how-java-program-runs.jpg)
If you are interested in learning about JVM Architecture, visit The JVM Architecture Explained.
What is JRE?
JRE (Java Runtime Environment) is a software package that provides Java class libraries, Java Virtual Machine (JVM), and other components that are required to run Java applications.
JRE is the superset of JVM.
![Java Runtime Environment JRE contains JVM and other Java class libraries.](/sites/tutorial2program/files/java-realtime-enviornment_0.jpg)
If you need to run Java programs, but not develop them, JRE is what you need. You can download JRE from Java SE Runtime Environment 8 Downloads page.
What is JDK?
JDK (Java Development Kit) is a software development kit required to develop applications in Java. When you download JDK, JRE is also downloaded with it.
In addition to JRE, JDK also contains a number of development tools (compilers, JavaDoc, Java Debugger, etc).
![Java development kit JDK contains JRE and other tools to develop Java applications.](/sites/tutorial2program/files/java-development-kit.jpg)
If you want to develop Java applications, download JDK.
Relationship between JVM, JRE, and JDK.
![Relationship between JVM, JRE, and JDK JRE contains JVM and class libraries and JDK contains JRE, compilers, debuggers, and JavaDoc](/sites/tutorial2program/files/jdk-jre-jvm.jpg)
Also Read: