Java प्रोग्राम निष्पादन 5 प्रमुख चरणों का पालन करता है:
- Edit (संपादन) - यहां प्रोग्रामर एक साधारण एडिटर या नोटपैड एप्लिकेशन का उपयोग करके Java प्रोग्राम लिखता है और अंत में इसे
.javaएक्सटेंशन देता है। - Compile (कंपाइल) - इस चरण में, प्रोग्रामर
javacकमांड देता है और.javaफाइल्स को बाइटकोड में परिवर्तित किया जाता है जो Java Virtual Machine द्वारा समझी जाने वाली भाषा है (यही Java को प्लेटफॉर्म-स्वतंत्र भाषा बनाता है)। कोई भी कंपाइल-टाइम त्रुटियां इस चरण में उठाई जाती हैं। - Load (लोड) - प्रोग्राम फिर मेमोरी में लोड होता है। यह क्लास लोडर द्वारा किया जाता है जो बाइटकोड युक्त
.classफाइल्स लेता है और इसे मेमोरी में स्टोर करता है।.classफाइल आपकी हार्ड डिस्क या नेटवर्क से भी लोड की जा सकती है। - Verify (सत्यापन) - बाइटकोड वेरिफायर जांचता है कि लोड किया गया बाइटकोड वैध है और Java सुरक्षा प्रतिबंधों का उल्लंघन नहीं करता।
- Execute (निष्पादन) - JVM प्रोग्राम को एक बार में एक बाइटकोड इंटरप्रेट करता है और प्रोग्राम चलाता है।
विस्तृत फ्लो
┌─────────────┐
│ Source │ Edit: .java फाइल बनाएं
│ Code │
└──────┬──────┘
│ javac
▼
┌─────────────┐
│ Bytecode │ Compile: .class फाइल (प्लेटफॉर्म-स्वतंत्र)
│ (.class) │
└──────┬──────┘
│ ClassLoader
▼
┌─────────────┐
│ Runtime │ Load: मेटास्पेस/हीप में क्लास डेटा
│ Data Area │
└──────┬──────┘
│ Bytecode Verifier
▼
┌─────────────┐
│ Verified │ Verify: सुरक्षा, टाइप सेफ्टी, स्टैक अंडरफ्लो जांच
│ Bytecode │
└──────┬──────┘
│ JVM (Interpreter/JIT)
▼
┌─────────────┐
│ Execution │ Execute: मशीन कोड में अनुवाद, निष्पादन
│ Result │
└─────────────┘
प्रत्येक चरण का विवरण
1. Edit (संपादन)
- सोर्स कोड लिखना:
.javaफाइल - कोई भी टेक्स्ट एडिटर: Notepad, VS Code, IntelliJ, Eclipse, vim
- फाइल नाम = पब्लिक क्लास नाम (यदि पब्लिक क्लास है)
2. Compile (कंपाइल)
javac SourceFile.java- सोर्स कोड → बाइटकोड (
.class) - प्लेटफॉर्म-स्वतंत्र मध्यवर्ती प्रतिनिधित्व
- कंपाइल-टाइम एरर्स: सिंटैक्स, टाइप चेकिंग, अनिर्धारित सिंबल्स
- javac स्वयं Java में लिखा गया है (self-hosting compiler)
3. Load (लोड)
- ClassLoader सबसिस्टम जिम्मेदार
- पदानुक्रम: Bootstrap → Extension → Application (System) ClassLoader
.classफाइल्स → मेटास्पेस (Method Area) में मेटाडेटा, हीप में ऑब्जेक्ट्स- लेजी लोडिंग: क्लास पहली बार उपयोग होने पर लोड होती है
4. Verify (सत्यापन)
- Bytecode Verifier सुरक्षा सुनिश्चित करता है
- जांच: स्टैक अंडरफ्लो/ओवरफ्लो नहीं, टाइप सेफ्टी, एक्सेस कंट्रोल, फाइनल क्लास/मेथड नहीं ओवरराइड
- संदिग्ध कोड रिजेक्ट होता है
5. Execute (निष्पादन)
- JVM Execution Engine:
- Interpreter: बाइटकोड को लाइन-बाय-लाइन इंटरप्रेट करता है (धीमा)
- JIT Compiler: हॉट कोड को नेटिव मशीन कोड में कंपाइल करता है (तेज़)
- Garbage Collector: मेमोरी प्रबंधन
- मेथड एरिया, हीप, स्टैक, PC रजिस्टर, नेटिव मेथड स्टैक
Java प्लेटफॉर्म इंडिपेंडेंस कैसे प्राप्त करता है?
Write Once, Run Anywhere (WORA)
Source (.java)
│ javac (प्लेटफॉर्म-विशिष्ट कंपाइलर)
▼
Bytecode (.class) ← प्लेटफॉर्म-स्वतंत्र
│ JVM (प्लेटफॉर्म-विशिष्ट)
▼
Machine Code → OS/Hardware
निष्कर्ष: Java निष्पादन 5-चरणीय प्रक्रिया है: संपादन → कंपाइल → लोड → सत्यापन → निष्पादन। बाइटकोड और JVM की भूमिका Java को प्लेटफॉर्म-स्वतंत्र बनाती है।