0
Explore
0

Understand JVM, JDK, and JRE in Java (For Beginners)

Updated on July 27, 2025

When you start learning Java, three important terms keep showing up: JVM, JRE, and JDK. These are like the backbone of Java development and execution. Understanding them is crucial if you want to become good at Java programming.

JVM (Java Virtual Machine), JRE (Java Runtime Environment), and JDK (Java Development Kit) are core components of the Java ecosystem.

JVM is a part of both JRE and JDK and is responsible for executing Java bytecode, making Java platform-independent.

JRE provides the environment required to run Java programs, it includes the JVM along with necessary libraries and runtime classes, but it does not contain tools for development.

JDK is a complete software development kit that includes the JRE and additional tools like the Java compiler (javac), debugger, and documentation generator. In short, JVM runs the code, JRE provides the runtime to support it, and JDK is what you need to develop Java applications.

Why You Need to Know JVM, JDK, and JRE

Before we dive into definitions, let’s understand the roles they play:

ToolRole
JVMRuns Java programs (Execution)
JREProvides environment to run programs
JDKProvides tools to develop programs

All three are needed at different stages of Java programming – writing, compiling, and running Java code.

What is JVM (Java Virtual Machine)?

Definition:

JVM stands for Java Virtual Machine. It is an abstract machine (virtual) that executes Java bytecode. It provides the runtime environment for Java programs.

Main Responsibilities:

  1. Loads the .class file (compiled Java code)
  2. Verifies the bytecode
  3. Executes the bytecode
  4. Manages memory, garbage collection, threads, etc.

Features:

  • Platform-independent (Write Once, Run Anywhere)
  • Supports automatic Garbage Collection
  • Provides Security and Exception Handling

Diagram: JVM Overview

   Java Source Code (Hello.java)
              |
              v
        Java Compiler (javac)
              |
              v
     Bytecode (.class file) -----------+
                                       |
                             +---------v--------+
                             |    JVM (Virtual)  |
                             |------------------|
                             | Class Loader      |
                             | Bytecode Verifier |
                             | Interpreter / JIT |
                             | Runtime Area      |
                             +-------------------+
                                       |
                                       v
                                 Output/Result

What is JRE (Java Runtime Environment)?

Definition:

JRE stands for Java Runtime Environment. It is a package that contains everything needed to run a Java program.

Think of JRE as a setup that includes JVM + libraries + other files to run Java applications.

Components of JRE:

  • JVM (Java Virtual Machine)
  • Set of libraries and files (like rt.jar)
  • Deployment technologies (Java Web Start, Java Plug-in)

What It Does:

  • Allows you to run Java programs (but not write or compile them)
  • Ideal for users who only want to execute Java apps, not develop them

What is JDK (Java Development Kit)?

Definition:

JDK stands for Java Development Kit. It is the complete package for Java developers. It contains JRE plus development tools like compiler, debugger, etc.

If you’re coding in Java, you need the JDK.

Components of JDK:

  • JRE (Java Runtime Environment)
  • Compiler (javac)
  • Debugger (jdb)
  • Documentation tool (javadoc)
  • Other utilities (javap, jar, etc.)
  • Oracle JDK
  • OpenJDK (Free and open source)
  • Amazon Corretto
  • Eclipse Adoptium (Temurin)

Relationship Between JVM, JRE, and JDK

Let’s visualize how they are connected.

    +------------------------+
    |        JDK            |
    |  +------------------+ |
    |  |      JRE         | |
    |  |  +------------+  | |
    |  |  |   JVM      |  | |
    |  |  +------------+  | |
    |  +------------------+ |
    +------------------------+
  • JDK includes JRE, and JRE includes JVM.
  • Without JDK, you cannot write or compile Java programs.
  • Without JRE, you cannot run Java programs.

Tools Included in JDK

ToolPurpose
javacJava compiler (converts .java to .class)
javaLaunches the JVM to run a Java program
javadocGenerates HTML documentation from code
jarCreates and manages JAR files
jdbDebugger for Java programs
javapDisassembler for class files

Real-World Analogy

Let’s take an example of a kitchen:

  • JVM is like a chef who prepares food (runs code)
  • JRE is like the kitchen with all ingredients and tools ready (execution setup)
  • JDK is like a supermarket — it includes everything from raw materials to recipe books so you can cook (write, compile, and run code)

Installation Tip for Beginners

If you’re starting Java programming, always install the JDK — because it contains both JRE and JVM.

After installation:

  • Use javac Hello.java to compile your file
  • Use java Hello to run the program

How to Check if JDK is Installed?

Open your terminal or command prompt and type:

java -version
javac -version

If both commands return a version number, JDK is installed successfully.

Q1: Do I need JRE if I already have JDK?

No, because JDK includes JRE.

Q2: Can I run Java programs with just JVM?

No, you need supporting libraries and environment — which are part of the JRE.

Q3: Is OpenJDK safe and reliable?

Yes, OpenJDK is the open-source reference implementation of Java and is widely used.

Q4: Which version of JDK should I use?

You should start with the latest LTS version, such as JDK 17 or JDK 21.

Summary Table

FeatureJVMJREJDK
Executes Java code
Includes JVM
Includes compiler
For running Java apps
For developing Java apps

Conclusion

Understanding the difference between JVM, JRE, and JDK is one of the first steps toward becoming a Java developer. Think of them as layers of tools that help you write, compile, and run Java programs.

Always remember:

  • JDK is for developers
  • JRE is for users who want to run apps
  • JVM is the core engine that makes Java “write once, run anywhere”