Java Virtual Machine (JVM)

Introduction

JVM рдХрд╛ full form Java Virtual Machine рд╣реИред JVM Java programming language рдХрд╛ рдмрд╣реБрдд important part рд╣реИред Java program directly machine code рдореЗрдВ convert рдирд╣реАрдВ рд╣реЛрддрд╛ред Java compiler рдкрд╣рд▓реЗ Java source code рдХреЛ bytecode рдореЗрдВ convert рдХрд░рддрд╛ рд╣реИред рдЗрд╕ bytecode рдХреЛ JVM execute рдХрд░рддрд╛ рд╣реИред

JVM рдХреА рд╡рдЬрд╣ рд╕реЗ Java platform-independent language рдмрдирддреА рд╣реИред Java рдХрд╛ famous concept Write Once, Run Anywhere JVM рдФрд░ bytecode рдХреА help рд╕реЗ possible рд╣реЛрддрд╛ рд╣реИред

Simple Definition

JVM is a virtual machine that executes Java bytecode and provides a runtime environment for Java programs.

Hindi Meaning

JVM рдПрдХ virtual machine рд╣реИ рдЬреЛ Java bytecode рдХреЛ execute рдХрд░рддреА рд╣реИ рдФрд░ Java program рдХреЛ run рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП runtime environment provide рдХрд░рддреА рд╣реИред

JVM рдХрд╛ Full Form

JVM = Java Virtual Machine

JVM Java Runtime Environment рдХрд╛ part рд╣реЛрддреА рд╣реИред рдЬрдм рд╣рдо Java program run рдХрд░рддреЗ рд╣реИрдВ, рддреЛ JVM bytecode рдХреЛ machine code рдореЗрдВ convert рдХрд░рдХреЗ program execute рдХрд░рддреА рд╣реИред

JVM рдХреА Need рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ?

Java program рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ operating systems рдкрд░ run рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JVM рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рд╣рд░ operating system рдХреЗ рд▓рд┐рдП JVM рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди Java bytecode same рд░рд╣рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП Java program рдХреЛ рдПрдХ рдмрд╛рд░ compile рдХрд░рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ platforms рдкрд░ run рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Important Line

JVM makes Java platform-independent by executing bytecode on different platforms.

Java Program Execution Process

Java program execution рдореЗрдВ mainly рддреАрди steps рд╣реЛрддреЗ рд╣реИрдВ:

Java Source Code (.java)
        тЖУ
Java Compiler (javac)
        тЖУ
Bytecode (.class)
        тЖУ
JVM
        тЖУ
Machine Code
        тЖУ
Output

Explanation

Programmer Java code .java file рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред Java compiler рдЙрд╕ code рдХреЛ bytecode рдореЗрдВ convert рдХрд░рддрд╛ рд╣реИред Bytecode .class file рдореЗрдВ store рд╣реЛрддрд╛ рд╣реИред JVM рдЗрд╕ bytecode рдХреЛ read рдХрд░рдХреЗ machine code рдореЗрдВ convert рдХрд░рддреА рд╣реИ рдФрд░ output show рдХрд░рддреА рд╣реИред

Bytecode рдХреНрдпрд╛ рд╣реИ?

Bytecode рдПрдХ intermediate code рд╣реЛрддрд╛ рд╣реИ рдЬреЛ Java compiler рджреНрд╡рд╛рд░рд╛ generate рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рди рддреЛ рдкреВрд░реА рддрд░рд╣ source code рд╣реЛрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдкреВрд░реА рддрд░рд╣ machine codeред Bytecode JVM рджреНрд╡рд╛рд░рд╛ execute рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Simple Definition

Bytecode is an intermediate code generated by Java compiler and executed by JVM.

Example

рдЬрдм рд╣рдо Hello.java file рдХреЛ compile рдХрд░рддреЗ рд╣реИрдВ:

javac Hello.java

рддреЛ compiler Hello.class file generate рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА .class file рдореЗрдВ bytecode рд╣реЛрддрд╛ рд╣реИред

JVM рдФрд░ Platform Independence

C рдФрд░ C++ programs generally machine code рдореЗрдВ compile рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ machine code рдХрд┐рд╕реА specific platform рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП C рдФрд░ C++ platform-dependent languages рд╣реИрдВред

Java program bytecode рдореЗрдВ compile рд╣реЛрддрд╛ рд╣реИред рдпрд╣ bytecode рдХрд┐рд╕реА рднреА operating system рдХреА JVM рдкрд░ run рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП Java platform-independent language рд╣реИред

Example Flow

Same Java Bytecode
        тЖУ
Windows JVM тЖТ Run on Windows
Linux JVM   тЖТ Run on Linux
Mac JVM     тЖТ Run on Mac

рдЗрд╕рдореЗрдВ bytecode same рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JVM platform рдХреЗ according рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИред

JVM рдХрд╛ Working

JVM Java bytecode рдХреЛ load, verify рдФрд░ execute рдХрд░рддреА рд╣реИред JVM program рдХреЛ memory рджреЗрддреА рд╣реИ рдФрд░ program run рдХрд░рддреЗ рд╕рдордп errors рдХреЛ handle рдХрд░рдиреЗ рдореЗрдВ help рдХрд░рддреА рд╣реИред

JVM mainly рдпреЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ:

  • Bytecode рдХреЛ load рдХрд░рдирд╛
  • Bytecode рдХреЛ verify рдХрд░рдирд╛
  • Bytecode рдХреЛ execute рдХрд░рдирд╛
  • Memory management рдХрд░рдирд╛
  • Garbage collection рдХрд░рдирд╛
  • Security provide рдХрд░рдирд╛

JVM Architecture

JVM architecture Java program execution рдХреЛ manage рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ main parts рд╣реИрдВ:

  • Class Loader
  • Bytecode Verifier
  • Runtime Data Area
  • Execution Engine
  • Garbage Collector

Class Loader

Class Loader JVM рдХрд╛ part рд╣реИ рдЬреЛ .class file рдХреЛ memory рдореЗрдВ load рдХрд░рддрд╛ рд╣реИред рдЬрдм Java program run рд╣реЛрддрд╛ рд╣реИ, рддреЛ JVM рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ required class files рдХреЛ load рдХрд░рддреА рд╣реИред

Work of Class Loader

  • Class file рдХреЛ load рдХрд░рдирд╛
  • Required classes рдХреЛ memory рдореЗрдВ рд░рдЦрдирд╛
  • Program execution рдХреЗ рд▓рд┐рдП classes prepare рдХрд░рдирд╛

Bytecode Verifier

Bytecode Verifier bytecode рдХреЛ check рдХрд░рддрд╛ рд╣реИред рдпрд╣ verify рдХрд░рддрд╛ рд╣реИ рдХрд┐ bytecode safe рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ bytecode рдореЗрдВ рдХреЛрдИ security problem рдпрд╛ invalid code рд╣реЛрддрд╛ рд╣реИ, рддреЛ JVM рдЙрд╕реЗ execute рдирд╣реАрдВ рдХрд░рддреАред

Work of Bytecode Verifier

  • Bytecode рдХреЛ check рдХрд░рдирд╛
  • Security problem detect рдХрд░рдирд╛
  • Invalid bytecode рдХреЛ reject рдХрд░рдирд╛
  • Java program рдХреЛ safe рдмрдирд╛рдирд╛

Runtime Data Area

Runtime Data Area JVM рдХреА memory area рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдБ program run рд╣реЛрдиреЗ рдХреЗ рд╕рдордп data store рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ variables, objects, method data рдФрд░ execution information store рд╣реЛрддреА рд╣реИред

Runtime Data Area рдореЗрдВ Mainly рд╣реЛрддреЗ рд╣реИрдВ:

  • Method Area
  • Heap Area
  • Stack Area
  • Program Counter Register
  • Native Method Stack

Method Area

Method Area рдореЗрдВ class level information store рд╣реЛрддреА рд╣реИред рдЬреИрд╕реЗ class name, method name, static variables рдФрд░ constantsред

Heap Area

Heap Area рдореЗрдВ objects store рд╣реЛрддреЗ рд╣реИрдВред Java рдореЗрдВ рдЬрдм object create рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ heap memory рдореЗрдВ store рд╣реЛрддрд╛ рд╣реИред

Example

Student s = new Student();

рдЗрд╕ statement рдореЗрдВ new Student() object heap memory рдореЗрдВ create рд╣реЛрддрд╛ рд╣реИред

Stack Area

Stack Area рдореЗрдВ method calls рдФрд░ local variables store рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рдХреЛрдИ method call рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП stack рдореЗрдВ memory create рд╣реЛрддреА рд╣реИред Method complete рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╣ memory remove рд╣реЛ рдЬрд╛рддреА рд╣реИред

Program Counter Register

Program Counter Register current instruction рдХрд╛ address store рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ JVM рдЕрднреА рдХреМрди рд╕реА instruction execute рдХрд░ рд░рд╣реА рд╣реИред

Native Method Stack

Native Method Stack рдЙрди methods рдХреЗ рд▓рд┐рдП use рд╣реЛрддрд╛ рд╣реИ рдЬреЛ Java рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рджреВрд╕рд░реА language рдЬреИрд╕реЗ C рдпрд╛ C++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реЛрддреЗ рд╣реИрдВред

Execution Engine

Execution Engine bytecode рдХреЛ execute рдХрд░рддрд╛ рд╣реИред рдпрд╣ bytecode рдХреЛ machine code рдореЗрдВ convert рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ computer рдЙрд╕реЗ рд╕рдордЭ рд╕рдХреЗред

Execution Engine рдореЗрдВ mainly рджреЛ parts рд╣реЛрддреЗ рд╣реИрдВ:

  • Interpreter
  • JIT Compiler

Interpreter

Interpreter bytecode рдХреЛ line by line execute рдХрд░рддрд╛ рд╣реИред рдпрд╣ simple рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди repeated execution рдореЗрдВ slow рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

JIT Compiler

JIT рдХрд╛ full form Just-In-Time Compiler рд╣реИред JIT compiler frequently used bytecode рдХреЛ machine code рдореЗрдВ convert рдХрд░рдХреЗ performance improve рдХрд░рддрд╛ рд╣реИред

Important Line

JIT compiler improves the performance of Java programs.

Garbage Collector

Garbage Collector JVM рдХрд╛ part рд╣реИ рдЬреЛ unused objects рдХреЛ memory рд╕реЗ remove рдХрд░рддрд╛ рд╣реИред Java рдореЗрдВ memory management automatic рд╣реЛрддрд╛ рд╣реИред Programmer рдХреЛ manually memory free рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреАред

Simple Definition

Garbage Collector automatically removes unused objects from memory.

Advantage

Garbage Collector memory leak рдХреЛ reduce рдХрд░рддрд╛ рд╣реИ рдФрд░ Java program рдХреЛ more reliable рдмрдирд╛рддрд╛ рд╣реИред

JVM, JRE рдФрд░ JDK рдореЗрдВ Difference

JVMJREJDK
JVM bytecode execute рдХрд░рддреА рд╣реИредJRE Java program run рдХрд░рдиреЗ рдХрд╛ environment рджреЗрддрд╛ рд╣реИредJDK Java program develop рдХрд░рдиреЗ рдХреЗ tools рджреЗрддрд╛ рд╣реИред
JVM Java рдХрд╛ runtime engine рд╣реИредJRE рдореЗрдВ JVM рдФрд░ libraries рд╣реЛрддреА рд╣реИрдВредJDK рдореЗрдВ JRE, compiler рдФрд░ development tools рд╣реЛрддреЗ рд╣реИрдВред
JVM program run рдХрд░рддреА рд╣реИредJRE рдХреЗрд╡рд▓ program run рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИредJDK program develop рдФрд░ run рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред

Simple Meaning

  • JVM: Java program execute рдХрд░рддреА рд╣реИред
  • JRE: Java program run рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП environment рджреЗрддрд╛ рд╣реИред
  • JDK: Java program develop рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП complete kit рд╣реИред

Simple Java Program and JVM

class HelloJVM {
    public static void main(String[] args) {
        System.out.println("JVM executes Java bytecode");
    }
}

Output

JVM executes Java bytecode

Execution

HelloJVM.java
     тЖУ javac
HelloJVM.class
     тЖУ JVM
Output

Example: Object Stored in Heap Memory

class Student {
    String name = "Rahul";

    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.name);
    }
}

Output

Rahul

Explanation

рдЗрд╕ program рдореЗрдВ Student s = new Student(); statement object create рдХрд░рддрд╛ рд╣реИред рдпрд╣ object heap memory рдореЗрдВ store рд╣реЛрддрд╛ рд╣реИред JVM memory management рдХреЛ handle рдХрд░рддреА рд╣реИред

Advantages of JVM

  • JVM Java рдХреЛ platform-independent рдмрдирд╛рддреА рд╣реИред
  • JVM bytecode execute рдХрд░рддреА рд╣реИред
  • JVM security provide рдХрд░рддреА рд╣реИред
  • JVM memory management рдХрд░рддреА рд╣реИред
  • JVM garbage collection support рдХрд░рддреА рд╣реИред
  • JVM runtime environment provide рдХрд░рддреА рд╣реИред
  • JVM Java program рдХреА performance improve рдХрд░рдиреЗ рдореЗрдВ help рдХрд░рддреА рд╣реИред

Common Misunderstanding

Java Platform Independent рд╣реИ, JVM рдирд╣реАрдВ

Java bytecode platform-independent рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди JVM platform-dependent рд╣реЛрддреА рд╣реИред Windows рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ JVM, Linux рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ JVM рдФрд░ Mac рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ JVM рд╣реЛрддреА рд╣реИред

Important Point

Java is platform-independent, but JVM is platform-dependent.

Exam-Oriented Short Answer

Q. What is JVM? Explain its role in Java.

JVM рдХрд╛ full form Java Virtual Machine рд╣реИред JVM Java bytecode рдХреЛ execute рдХрд░рддреА рд╣реИ рдФрд░ Java program рдХреЛ run рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП runtime environment provide рдХрд░рддреА рд╣реИред Java compiler source code рдХреЛ bytecode рдореЗрдВ convert рдХрд░рддрд╛ рд╣реИ рдФрд░ JVM рдЙрд╕ bytecode рдХреЛ machine code рдореЗрдВ convert рдХрд░рдХреЗ execute рдХрд░рддреА рд╣реИред JVM рдХреА help рд╕реЗ Java platform-independent рдмрдирддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ same bytecode рдЕрд▓рдЧ-рдЕрд▓рдЧ platforms рдХреА JVM рдкрд░ run рд╣реЛ рд╕рдХрддрд╛ рд╣реИред JVM memory management, garbage collection рдФрд░ security рднреА provide рдХрд░рддреА рд╣реИред

Important Points to Remember

  • JVM рдХрд╛ full form Java Virtual Machine рд╣реИред
  • JVM Java bytecode рдХреЛ execute рдХрд░рддреА рд╣реИред
  • JVM Java Runtime Environment рдХрд╛ part рд╣реИред
  • Java compiler .java file рдХреЛ .class file рдореЗрдВ convert рдХрд░рддрд╛ рд╣реИред
  • .class file рдореЗрдВ bytecode рд╣реЛрддрд╛ рд╣реИред
  • JVM bytecode рдХреЛ machine code рдореЗрдВ convert рдХрд░рддреА рд╣реИред
  • JVM Java рдХреЛ platform-independent рдмрдирд╛рддреА рд╣реИред
  • Java platform-independent рд╣реИ, рд▓реЗрдХрд┐рди JVM platform-dependent рд╣реИред
  • JVM garbage collection рдФрд░ memory management рдХрд░рддреА рд╣реИред
  • JIT compiler Java program рдХреА performance improve рдХрд░рддрд╛ рд╣реИред

Practice Questions

Short Answer Questions

  • JVM рдХрд╛ full form рдХреНрдпрд╛ рд╣реИ?
  • JVM рдХреНрдпрд╛ рд╣реИ?
  • Bytecode рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  • JVM Java рдХреЛ platform-independent рдХреИрд╕реЗ рдмрдирд╛рддреА рд╣реИ?
  • JVM рдФрд░ JDK рдореЗрдВ рдЕрдВрддрд░ рд▓рд┐рдЦрд┐рдПред
  • JVM рдФрд░ JRE рдореЗрдВ рдЕрдВрддрд░ рд▓рд┐рдЦрд┐рдПред
  • Garbage Collector рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  • JIT compiler рдХрд╛ рдХреНрдпрд╛ рдХрд╛рдо рд╣реИ?

Long Answer Question

JVM рдХреНрдпрд╛ рд╣реИ? JVM рдХреА working рдФрд░ architecture рдХреЛ diagram рдХреЗ рд╕рд╛рде explain рдХреАрдЬрд┐рдПред

Homework Program

рдПрдХ Java program рд▓рд┐рдЦрд┐рдП рдЬреЛ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ output print рдХрд░реЗ:

Java Virtual Machine
JVM executes bytecode
Java is platform independent

Hint

class JVMDemo {
    public static void main(String[] args) {
        System.out.println("Java Virtual Machine");
        System.out.println("JVM executes bytecode");
        System.out.println("Java is platform independent");
    }
}

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top