जब भी आप किसी नई programming language को सीखना शुरू करते हैं, तो सबसे पहले यह जानना ज़रूरी होता है कि वह language काम कैसे करती है — यानी उसका ढांचा यानी Architecture क्या है।
Java एक Write Once, Run Anywhere (WORA) language है। इसका मतलब है कि Java में लिखा गया code किसी भी operating system — जैसे Windows, Mac और Linux — पर बिना किसी बदलाव के चल सकता है। यह जादू संभव होता है Java के Architecture की वजह से, जिसके तीन मुख्य स्तंभ हैं — JDK, JRE और JVM।
तकनीकी भाषा में कहें तो ये तीनों Java Platform के मुख्य Components हैं। यदि आप Java में एक साधारण Hello World program भी बनाते हैं, तो उसे लिखने से लेकर screen पर output देखने तक — ये तीनों background में एक साथ काम करते हैं।
🔑 Key Relation याद रखें: JDK के अंदर JRE होता है, और JRE के अंदर JVM। यानी JDK --> JRE --> JVM — JDK सबसे बड़ा, JVM सबसे छोटा।
Table of Contents
JVM क्या है? (What is JVM in Hindi)
JVM का full form Java Virtual Machine यानी जावा वर्चुअल मशीन है। जैसा कि नाम से पता चलता है, यह एक Virtual यानी आभासी machine है। यह आपके computer के भीतर एक software की तरह मौजूद होती है — इसका कोई Physical अस्तित्व नहीं होता। सरल शब्दों में — JVM एक काल्पनिक machine है जो असली computer की तरह व्यवहार करती है।
जब आप Java code लिखते हैं जैसे Program.java, तो Java Compiler (javac) उसे Bytecode में बदल देता है — जैसे Program.class। इस Bytecode को आपका computer सीधे नहीं समझ सकता, क्योंकि computer केवल Binary Language (0 और 1) समझता है।
यहाँ JVM की भूमिका शुरू होती है। JVM इस Bytecode को line-by-line पढ़ता है और उसे आपके computer के Operating System के अनुसार Machine Code में बदल देता है।
JVM के मुख्य घटक और कार्य
- Class Loader:
.classfile को memory में load करता है। - Bytecode Verifier: जांचता है कि code सुरक्षित है — कोई harmful instruction तो नहीं।
- Interpreter: Bytecode को line-by-line Machine Code में बदलता है।
- JIT Compiler (Just-In-Time): बार-बार उपयोग होने वाले Bytecode को एक बार में compile करके store करता है — जिससे program तेज़ चलता है।
- Garbage Collector: बेकार हो चुके objects की memory को automatically free करता है।
📝 Exam Point — JVM Platform Dependent होता है! Java language Platform Independent है, लेकिन JVM Platform Dependent है। Windows के लिए अलग JVM, Linux के लिए अलग JVM और Mac के लिए अलग JVM होता है। इसीलिए एक ही Bytecode अलग-अलग OS पर चल सकता है — क्योंकि हर OS का JVM उसे अपने अनुसार Machine Code में बदलता है।
💡 Tip: JVM को आप अलग से install नहीं करना पड़ता । यह JRE और JDK के साथ automatically आता है ।
JRE क्या है? (What is JRE in Hindi)
JRE का full form Java Runtime Environment यानी जावा रनटाइम एनवायरनमेंट है।
JRE वह software package है जो आपके computer पर Java program को चलाने (Run) के लिए पूरा वातावरण तैयार करता है। यदि आपके पास कोई तैयार Java software, application या game है और आप उसे सिर्फ चलाना चाहते हैं — तो आपको केवल JRE install करना काफी है। इसमें program बनाने वाले tools नहीं होते।
JRE के मुख्य घटक (Components of JRE)
JRE के अंदर मुख्य रूप से ये चीजें होती हैं:
- JVM (Java Virtual Machine): Bytecode को execute करता है।
- Core Class Libraries: Java के pre-built code जैसे
java.lang,java.util,java.ioआदि — जो program run होते समय काम आते हैं। - Supporting Files & Plugins: Runtime के लिए ज़रूरी configuration files।
संक्षेप में कहें तो:
JRE = JVM + Core Class Libraries + Supporting Files
याद रखें: JRE में Java compiler (javac) नहीं होता। इसलिए JRE से आप Java code लिख और compile नहीं कर सकते — केवल run कर सकते हैं।
JDK क्या है? (What is JDK in Hindi)
JDK का full form Java Development Kit यानी जावा डेवलपमेंट किट है।
JDK Java का पूरा Toolbox है। यह developers के लिए एक सम्पूर्ण Software Development Kit है, जिसकी मदद से आप Java program को लिख सकते हैं, compile कर सकते हैं और run भी कर सकते हैं।
यदि आप एक student हैं और अपने computer पर Java program लिखना और run करना चाहते हैं, तो आपको JDK install करना होगा। JDK के भीतर वो सब कुछ होता है जो Java के लिए आवश्यक है।
JDK के मुख्य Development Tools
- javac (Java Compiler): आपके
.javasource code को Bytecode (.classfile) में बदलता है। Example:javac Hello.java - java (Java Launcher): Compiled bytecode को run करता है। Example:
java Hello - javadoc: Code के लिए HTML documentation automatically बनाता है।
- jdb (Java Debugger): Code में errors ढूंढने में मदद करता है।
- jar (Archive Tool): Multiple
.classfiles को एक.jarfile में pack करता है।
तकनीकी समीकरण के रूप में:
JDK = JRE + Development Tools (javac, jdb, javadoc, jar...)
✅ Students के लिए Tip: अपने COMPUTER SYSTEM पर हमेशा JDK install करें। JDK install करने पर JRE अपने आप शामिल हो जाता है — अलग से JRE install नहीं करना पड़ता।
रीयल-लाइफ उदाहरण से समझें (Real Life Analogy of JDK, JRE & JVM)
तकनीकी परिभाषाओं को याद रखना कभी-कभी कठिन होता है। आइए इसे एक रेस्टोरेंट (Restaurant) के उदाहरण से बिल्कुल आसान बनाते हैं:
- JVM (शेफ/Chef): JVM को हम रेस्टोरेंट के शेफ की तरह समझ सकते हैं। रेस्टोरेंट का शेफ मुख्य व्यक्ति होता है, जो खाना बनाता है यानी code को execute करता है। शेफ को जो रेसिपी दी जाती है यानी Java Bytecode, वह उसी रेसिपी के अनुसार खाना तैयार करता है। शेफ अपने पास उपलब्ध सामग्री और उपकरणों का उपयोग करके रेसिपी को पूरा करता है।
- JRE (पूरा किचन/Kitchen): शेफ अकेले बिना बर्तनों, मसालों और गैस सिलेंडर के खाना नहीं बना सकता। इसलिए, शेफ (JVM) और रसोई के सभी सामान यानी Class Libraries मिलकर एक किचन (JRE) बनाते हैं, जहाँ खाना पकने का पूरा माहौल मिलता है।
- JDK (पूरा रेस्टोरेंट/Restaurant Owner's Tool): अगर आपको सिर्फ खाना खाना है, तो JRE काफी है। अगर आपको खाना बनवाना है, तो JVM चाहिए। लेकिन अगर आपको नया मेनू बनाना है, नई रेसिपी तैयार करनी है, नए बर्तन खरीदने हैं, रसोई को अपग्रेड करना है और पूरा बिजनेस चलाना है, तो आपको पूरा रेस्टोरेंट चाहिए। JDK वही पूरा restaurant setup है।
JDK, JRE और JVM में मुख्य अंतर (Comparison Table)
| विशेषता (Features) | JVM (Java Virtual Machine) | JRE (Java Runtime Environment) | JDK (Java Development Kit) |
|---|---|---|---|
| पूरा नाम (Full Name) | Java Virtual Machine | Java Runtime Environment | Java Development Kit |
| मुख्य उद्देश्य | Bytecode को मशीन कोड में बदलना और रन करना। | Java apps को चलने के लिए माहौल यानी Environment देना। | Java apps को डेवलप करना, यानी लिखना और कंपाइल करना। |
| यह क्या है? | यह केवल एक abstract/virtual machine है। | यह एक software package है, जिसका physical अस्तित्व होता है। | यह एक पूरा software development tools का सेट है। |
| इसके अंदर क्या है? | इसमें केवल execution engine और class loader होते हैं। | इसमें JVM + Class Libraries शामिल होती हैं। | इसमें JRE + Development Tools जैसे Compiler और Debugger होते हैं। |
| किसे जरूरत है? | यह बैकएंड में काम करता है, यूजर इसे सीधे इंस्टॉल नहीं करता। | उन end-users को, जो सिर्फ Java apps चलाना चाहते हैं। | Java programmers और developers को, जो code लिखना चाहते हैं। |
| शामिल टूल | इसमें JIT Compiler और Interpreter होते हैं। | इसमें runtime files होती हैं, compiler नहीं होता। | इसमें javac, java, jdb जैसे tools होते हैं। |
JDK, JRE और JVM मिलकर कैसे काम करते हैं? (Complete Workflow)
जब आप Java में कोई प्रोग्राम लिखते हैं, तब JDK, JRE और JVM मिलकर एक व्यवस्थित प्रक्रिया के माध्यम से काम करते हैं। आइए अब समझते हैं कि जब आप जावा का कोई प्रोग्राम लिखते हैं, तो ये तीनों घटक मिलकर किस प्रकार कार्य करते हैं:
- स्टेप 1 (Development): सबसे पहले डेवलपर JDK का उपयोग करके Java file लिखता है, जैसे Demo.java।
- स्टेप 2 (Compilation): इसके बाद JDK में मौजूद compiler javac इस फाइल को compile करता है और एक नई .class file बनाता है, जिसमें bytecode होता है।
- स्टेप 3 (Runtime): अब इस bytecode को चलाने के लिए JRE सक्रिय होता है। JRE आवश्यक library files को code के साथ जोड़ता है।
- स्टेप 4 (Execution): अंत में, JRE के अंदर मौजूद JVM इस bytecode को load करता है, उसकी सुरक्षा जांच करता है, और उसे आपके कंप्यूटर के processor के समझने योग्य machine code में बदलकर output screen पर दिखा देता है।
📌 Java के बारे में और अधिक पढ़ें:
▸ Java क्या है? – Java Introduction, Features और Uses की पूरी जानकारी▸ Windows में Java JDK कैसे Install करें? – Step-by-Step Hindi Guide
JDK, JRE और JVM - FAQs
Java Compiler (javac) और Interpreter दोनों Java program को चलाने की प्रक्रिया में महत्वपूर्ण भूमिका निभाते हैं:
- javac (Java Compiler): यह JDK का हिस्सा होता है। इसका काम source code यानी .java file को bytecode (.class file) में बदलना है।
- Interpreter: यह JVM का हिस्सा होता है। यह bytecode को line-by-line पढ़कर machine code में बदलता है, ताकि कंप्यूटर का processor उसे समझ सके।
- javac (Java Compiler): इसका उपयोग Java program को compile करने के लिए किया जाता है। उदाहरण: javac FileName.java
- java (Java Launcher/Interpreter): इसका उपयोग compile हो चुके bytecode को run करने के लिए किया जाता है। उदाहरण: java FileName