Java JDK, JRE and JVM

You will learn the key differences between JDK, JRE, and JVM in this article.

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.  

How Java program works?

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, along with Java Virtual Machine (JVM), and other components to run applications written in Java programming. JRE is the superset of JVM.

JRE contains JVM and other Java class libraries.

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 to develop applications in Java. When you download JDK, JRE is also downloaded, and don't need to download it separately. In addition to JRE, JDK also contains number of development tools (compilers, JavaDoc, Java Debugger etc).

JDK contains JRE and other tools to develop Java applications.

If you want to develop Java applications, download JDK

Here's the relationship between JVM, JRE, and JDK.