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
| JVM | JRE | JDK |
|---|---|---|
| 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
.javafile को.classfile में convert करता है। .classfile में 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");
}
}