जावा एक Write Once, Run Anywhere (WORA) भाषा है। इसका मतलब है कि जावा में लिखा गया कोड किसी भी ऑपरेटिंग सिस्टम जैसे Windows, Mac और Linux पर बिना किसी बदलाव के चल सकता है। जावा को यह खास क्षमता इसके आर्किटेक्चर से मिलती है, जिसके तीन मुख्य स्तंभ JDK, JRE और JVM हैं।
तकनीकी भाषा में कहें तो ये तीनों जावा प्लेटफॉर्म के मुख्य घटक यानी Components हैं। यदि आप जावा में एक साधारण Hello World प्रोग्राम भी बनाते हैं, तो उसे लिखने से लेकर स्क्रीन पर आउटपुट देखने तक, ये तीनों बैकएंड में एक साथ काम करते हैं।
लेकिन सवाल यह है कि ये तीनों आपस में कैसे जुड़े हैं? JDK, JRE और JVM में कौन क्या काम करता है? और किस चीज की जरूरत कब पड़ती है?
चलिए, इन सभी सवालों के जवाब आज बिल्कुल सरल भाषा में समझते हैं।
Table of Contents
JVM क्या है? (What is JVM in Hindi)
JVM का फुल फॉर्म Java Virtual Machine यानी जावा वर्चुअल मशीन है। जैसा कि इसके नाम से ही पता चलता है, यह एक वर्चुअल यानी आभासी मशीन है। यह आपके कंप्यूटर के भीतर एक सॉफ्टवेयर की तरह मौजूद होती है, जिसका कोई Physical अस्तित्व नहीं होता है। सामान्य शब्दों में कहें तो JVM एक काल्पनिक मशीन है, जो वास्तविक कंप्यूटर की तरह व्यवहार करती है।
जब आप जावा कोड लिखते हैं, जैसे Program.java, तो जावा कंपाइलर (javac) उसे बाइटकोड (Bytecode) में बदल देता है, जैसे Program.class। इस बाइटकोड को आपका कंप्यूटर सीधे नहीं समझ सकता, क्योंकि कंप्यूटर केवल बाइनरी भाषा (0 और 1) समझता है।
यहाँ पर JVM की भूमिका शुरू होती है। JVM इस बाइटकोड को लाइन-बाय-लाइन पढ़ता है और उसे आपके कंप्यूटर के ऑपरेटिंग सिस्टम के अनुसार मशीन कोड (Machine Code) में बदल देता है।
JVM के मुख्य कार्य
- कोड को लोड करना (Loads Code): यह क्लास लोडर की मदद से बाइटकोड को मेमोरी में लोड करता है।
- कोड की जांच करना (Verifies Code): यह चेक करता है कि बाइटकोड सुरक्षित है या नहीं।
- कोड को रन करना (Executes Code): यह बाइटकोड को मशीन कोड में बदलकर रन करता है।
- मेमोरी मैनेजमेंट (Memory Management): यह प्रोग्राम को मेमोरी आवंटित करता है और गारबेज कलेक्शन (Garbage Collection) के जरिए फालतू मेमोरी को फ्री करता है।
महत्वपूर्ण तथ्य (Exam Point): JVM प्लेटफॉर्म पर निर्भर (Platform Dependent) होता है। इसका मतलब है कि JVM जिस भी ऑपरेटिंग सिस्टम (OS) में इंस्टॉल होता है, उसी पर निर्भर रहता है और उसी के अनुसार काम करता है। Windows के लिए अलग JVM होता है और Linux के लिए अलग। Windows के JVM को आप Linux पर नहीं चला सकते ।
JRE क्या है? (What is JRE in Hindi)
JRE का फुल फॉर्म Java Runtime Environment यानी जावा रनटाइम एनवायरनमेंट है।
JRE वह सॉफ्टवेयर पैकेज है, जो आपके कंप्यूटर पर जावा प्रोग्राम को चलाने (Run) के लिए पूरा वातावरण तैयार करता है। यदि आपके पास कोई तैयार Java software, application या game है और आप उसे सिर्फ चलाना चाहते हैं, तो आपको केवल JRE install करना काफी है। इसमें प्रोग्राम बनाने वाले tools नहीं होते।
JRE के मुख्य घटक (Components of JRE)
JRE के अंदर मुख्य रूप से दो चीजें होती हैं:
- JVM (Java Virtual Machine): जो कोड को रन करता है।
- Core Class Libraries: ये वे पहले से बनी फाइलें और कोड होते हैं, जिनकी जरूरत Java program को रन करते समय पड़ती है, जैसे java.lang, java.util आदि।
इसके अलावा JRE में कुछ Supporting Files और Plugins भी शामिल होते हैं।
संक्षेप में कहें तो:
JRE = JVM + Core Class Libraries + Supporting Files
नोट: JRE सिर्फ Java program को चलाने (Run) के लिए होता है। इसमें प्रोग्राम बनाने (Develop) वाले tools नहीं होते।
JDK क्या है? (What is JDK in Hindi)
JDK का फुल फॉर्म Java Development Kit यानी जावा डेवलपमेंट किट है।
JDK जावा का पूरा टूलबॉक्स है। यह डेवलपर्स के लिए एक सम्पूर्ण सॉफ्टवेयर डेवलपमेंट किट है, जिसकी मदद से आप Java program को लिख सकते हैं, कंपाइल कर सकते हैं और रन कर सकते हैं।
यदि आप एक छात्र हैं और अपने कंप्यूटर पर Java program लिखना और रन करना चाहते हैं, तो आपको अपने सिस्टम में JDK install करना होगा। JDK के भीतर वो सब कुछ होता है, जो जावा के लिए आवश्यक है।
JDK के मुख्य घटक (Components of JDK)
JDK के अंदर मुख्य रूप से ये चीजें शामिल होती हैं:
- JRE (Java Runtime Environment): यह वह प्लेटफॉर्म है, जो बने-बनाए कोड को कंप्यूटर पर रन (चलाने) का काम करता है।
- Development Tools: ये वे औजार हैं, जो कोड लिखने, सुधारने और उसे कंप्यूटर के समझने लायक बनाने में मदद करते हैं।
JDK के महत्वपूर्ण Development Tools
- javac (Compiler): यह आपके Java code को Bytecode में बदलता है।
- java (Launcher): यह Java application को चलाता है।
- javadoc: यह कोड के लिए documentation तैयार करता है।
- jdb (Debugger): यह कोड की गलतियों यानी errors को ढूंढने में मदद करता है।
तकनीकी समीकरण के रूप में हम इसे इस प्रकार समझ सकते हैं:
JDK = JRE + Development Tools
नोट: डेवलपर को हमेशा JDK install करना पड़ता है, क्योंकि बिना JDK के आप Java code नहीं लिख सकते और कंपाइल नहीं कर सकते।
रीयल-लाइफ उदाहरण से समझें (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 पर दिखा देता है।
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