जावा कंपाइलर (javac.exe) जावा स्रोत (.java) फ़ाइलों में इनपुट के रूप में लेता है और जावा बाइटकोड (.class) फ़ाइलों को आउटपुट करता है (यदि आपका कोड सफलतापूर्वक संकलित करता है)। फिर आप जावा लॉन्चर (java.exe) निष्पादित करते हैं और इसे अपने बाइटकोड पर इंगित करते हैं। यह आपके कोड को बाकी तरीके से लेने के लिए जावा वर्चुअल मशीन (JVM) तक है, और अपने बाइटकोड को मशीन (या मूल) कोड में कनवर्ट करें।
आप इस बारे में सोच सकते हैं कि ऑब्जेक्ट कोड मशीन कोड के करीब है, और बाइटकोड मशीन कोड से आगे होने के नाते। इसके अलावा, बाइटकोड पोर्टेबल है (जो जावा भाषा के बड़े फायदों में से एक है), जबकि मशीन कोड को मैन्युअल प्रक्रिया के माध्यम से "पोर्ट किया जाना" आवश्यक है (यानी एक अलग लक्ष्य प्लेटफॉर्म या आर्किटेक्चर के लिए फिर से संकलित करना)।
ऑब्जेक्ट कोड "लगभग" मशीन कोड है, यह मध्य में है। यह परिणामी मशीन कोड के एक हिस्से की तरह है। जावा भाषा की पोर्टेबिलिटी के कारण, आपके पास कंपाइलर सीधे आपके कोड कोड को मशीन कोड में अनुवाद नहीं कर सकता है। क्योंकि विभिन्न प्लेटफार्मों और आर्किटेक्चर के लिए मशीन कोड अलग होना चाहिए। अगर कोई आपके विंडोज़ पर बाइटकोड चलाता है, तो जेवीएम आपके बाइटकोड को एक प्रकार के मशीन कोड में अनुवादित करेगा। यदि कोई मैक ओएस एक्स पर आपका बाइटकोड चलाता है, तो JVM आपके बाइटकोड को एक अलग प्रकार के मशीन कोड में अनुवादित करेगा।
आप अपने बाइटकोड के लिए जेवीएम को दुभाषिया के रूप में सोच सकते हैं। हालांकि, तकनीकी रूप से इसे जेआईटी (जस्ट इन टाइम) संकलन कहा जाता है। जेवीएम जेआरई (जावा रनटाइम एनवायरनमेंट) का हिस्सा है और जावा प्रोग्राम बहुत अधिक प्लेटफ़ॉर्म स्वतंत्र हैं (कोई भी सिस्टम जो जेएनवी चलाता है, जावा प्रोग्राम भी चला सकता है), जेआरई का जेवीएम हिस्सा मंच-निर्भर है।
लघु संस्करण:
- जावा बाईटकोड पैदा करता है (संकलन आधे रास्ते, मंच स्वतंत्र, अभी तक नहीं चल सकता)।
- जावा आभासी मशीन मशीन कोड उत्पन्न करती है।
- ऑब्जेक्ट कोड परिणामी मशीन कोड का एक हिस्सा है।
- बाइटकोड जेआईटी समय पर ऑब्जेक्ट कोड बन जाता है।
- ऑब्जेक्ट कोड मशीन कोड बन जाता है (शेष तरीके से संकलन, प्लेटफार्म निर्भर, चला सकता है)।
यह 100% सटीक नहीं हो सकता है क्योंकि मैं अभी भी यह सामान सीखना शुरू कर रहा हूं।लेकिन यह अब तक इस अवधारणा की मेरी समझ है। आशा है कि ये आपकी मदद करेगा।
जावा बाइट कोड को स्रोत कोड संकलित देखें। मैंने अभी तक "ऑब्जेक्ट कोड" के बारे में कभी नहीं सुना है। –
आपके एक प्रोफेसर द्वारा एक पुस्तक? :) क्या यह अंग्रेजी में लिखा गया था? – milan