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