What is JDK, JVM, JRE, javac, Byte code, JIT ? Complete Execution Process !
By Engineering Digest
Summary
Topics Covered
- JDK Bundles Tools and JRE
- Java Compiles to Platform-Independent Bytecode
- JIT Compiler Accelerates Hot Code Paths
Full Transcript
देखिए लास्ट वीडियो में हमने जेडी के इंस्टॉल किया उसके साथ हमारा जे आरई एंड जेवीएम भी इंस्टॉल हो गया है तो इस वीडियो में वही देखेंगे हम कि जब अपन एक जावा
फाइल रन करते हैं तो क्या होता है जेडीके क्या होता है जे आरई क्या होता है एंड जेवीएम क्या होता है अब देखिए सबसे ऊपर जेडी के है जेडीके
इंस्टॉल किया हमने तो उसके साथ जे आरई भी आया है जेडी के मतलब जावा डेवलपमेंट किट इसमें क्या है टूल्स एंड लाइब्रेरीज है जिसकी हेल्प से आप जावा का कोड लिख पाएंगे
जैसे कि आपका डीबगर हो गया जावा स कंपाइलर हो गया देखेंगे क्या होता है जावा सी तो जेडीके के अंदर टूल्स एंड लाइब्रेरीज हैं
प्लस जेआर है जावा रन टाइम एनवायरमेंट यानी कि एक एनवायरमेंट प्रोवाइड करता है जिसमें आप जावा के प्रोग्राम्स को रन कर
पाएंगे एंड जेआर के अंदर ही हमारा जेवीएम होता है फाइनली जो जावा का प्रोग्राम है वह जेवी एम में आकर ही रन होता है कैसे होता है वो देखते हैं जावा का जब हम
प्रोग्राम बनाएंगे तो उसका जो एक्सटेंशन होता है वह डॉट जावा होता है जैसे कि टेस्ट ड जावा तो पूरा फ्लो ये है आपका टेस्ट ड जावा आपकी फाइल है वहां पर आपने
एक प्रोग्राम लिखा हुआ है वो कन्वर्ट होता है बाइट कोड के अंदर तो टेड जावा जो आप लिखेंगे अपने हाथों से ठीक है वो कंपाइल
हो जाएगा बाइट कोड के अंदर अब उसको कंपाइल करता कौन है जावा स ये क्या है जावा स कंपाइलर का नाम है जावा स कंपाइल करता है
आपकी डॉट जावा फाइल को बाइट कोड के अंदर बाइट कोड क्या है बाइट कोड हमारे समझ में नहीं आएगा लेकिन जेवीएम को समझ में आ
जाएगा यह बाइट कोड प्लेटफॉर्म इंडिपेंडेंट होता है यानी कि मान लीजिए अभी विंडोज पर है हम विज पर हमने बाइट कोड जनरेट किया
एंड वही बाइट कोड हमने डाल दिया चल जाएगा मैक पे डाल दिया चल जाएगा ठीक है देन वो बाइट
कोड जेवीएम के पास जाता है वह जेवीएम क्या करता है उस बाइट कोड का मशीन कोड में कन्वर्ट कर देता है ओबवियसली मशीन कोड क्या है प्लेटफॉर्म डिपेंडेंट है यानी कि
मैक का अलग मशीन कोड होगा विंडोज का अलग मशीन कोड होगा राइट एक बार फिर से बता रहा हूं आपने कोई जावा फाइल लिखी सबसे पहले वो कंपाइल होगी बाइट कोड के अंदर देन बाइट
कोड इंटरप्रेट किया जाता है लाइन बाय लाइन बाय जेवीएम ठीक है एंड फाइनल जो रिजल्ट होगा वो होगा मशीन कोड है ना मशीन कोड
यानी कि रो और वन में वो रो और वन जो है वो चल जाएंगे आपके सिस्टम पर जो भी आपका प्रोग्राम करता है जैसे कि हेलो वर्ल्ड लिख रहा है उसमें तो हेलो वर्ल्ड प्रिंट हो जाएगा फिलहाल कोई आईडी यूज नहीं करेंगे
सिंपल एक नोटपैड ओपन कर लीजिए सेव करता हूं इस फाइल को है ना एक मैं फोल्डर बना रहा हूं सारे एग्जांपल्स यहीं पर हम लिखते रहेंगे
जावा फाइल का नाम लिखते हैं टेस्ट डॉट जावा ठीक है अब लिखते हैं क्लास
टेस्ट पब्लिक स्टैटिक वॉइड मेन स्ट्रिंग एरे आ ठीक है एंड यहां पर जस्ट हम
सिस्टम डॉट आउट डॉट प्रिंट एलन यहां पर हम प्रिंट करा देते हैं हेलो वर्ल्ड ठीक है कंट्रोल एस सेव
किया अब उस फोल्डर पर जाते हैं ठीक है यहां पर सीएमडी टाइप करते हैं सीएमडी ठीक है तो इसी डायरेक्ट्रीएंट्री
एंड देन फाइल का नाम फाइल का नाम क्या है टेस्ट टैब दबाया ऑटोमेटिक आ गया है एंटर किया अच्छा एक एरर दिखा दिया इसने कह रहा
है कि सर आपने सेमीकलन नहीं लगाया ठीक है देखेंगे सिंटेक्स क्या है अभी बस इतना ध्यान रखिए कि हा य जावा एक प्रोग्राम है किस चीज का क्या मतलब है
हमें कुछ नहीं पता है अभी ठीक है हमने सभी लिख दिया है फिर से चलाया जावा सीटेस्ट ड जावा इसका क्या मतलब है कि मैं जावा कंपाइलर से बोल
रहा हूं कि टेस्ट डॉट जावा फाइल को कंपाइल करिए अब अगर मैं फाइल एक्सप्लोरर देखूंगा तो देखो यहां पर ऑटोमेटिक एक फाइल बन गई
है टेस्ट डॉट क्लास यह है बाइट कोड अगर मैं इसको खोल के देखता हूं राइट क्लिक ओपन विद
नोट पैड प्लस प्लस या फिर नोट पैड में अगर खोल के देखें इसको तो हमें समझ में नहीं आएगा यह समझ रहे जैसे मैंने आपको बताया था स्टार्टिंग में कि बाइट कोड हमारे समझ में
नहीं आएगा बाइट कोड को समझने वाला कौन है जेवीएम तो कहते हैं उससे जेवीएम से कि भाई सुनो चला दो इसको जावा टेस्ट ठीक है हेलो
वर्ल्ड आ गया समझ रहे बात को तो हमारा प्रोग्राम चल गया दो दो स्टेप्स है पहले उसको कंपाइल करिए देन जेवीएम से कहिए कि यार ये क्लास
जो बनी है हमारी बाइट कोड जो है उसको चला दीजिए आप सोच रहे होंगे कि यहां पर मैंने टेस्ट डॉट क्लास क्यों नहीं लिखा है और यह भी सोच रहे होंगे यार जावा क्या हैय जावा
स इस में आता है कंपाइलर लेकिन य जावा क्या है पहले वो देख लेते हैं कि यह जावा क्या है दिस पीसी में जाते हैं जहां पर हमारा जावा इंस्टॉल है हम आ
जाते हैं बिन के अंदर देखो एक टूल होगा जावा ये रहा जावा और यहीं पर देखो जावा स है दोनों यहीं पर छुपे हुए
हैं आपको याद होगा जब हमने एनवायरमेंट वेरिएबल सेट किया था या फिर ऑटोमेटिक सेट हो गया था तो जावा
जब कमांड लिखते हैं ना तो यह चलता है जावा सी जब कमांड लिखते हैं तो ये चलता है ठीक है तो जावा सी में आता है कं फलर है जावा
क्या है कुछ नहीं है यह जेवीएम चलाती है ठीक है जैसे ही आप जावा लिखेंगे एंड क्लास देंगे उसको इसका मतलब क्या है
कि आप जेवीएम को इंस्ट्रक्ट कर रहे हैं यार यह क्लास फाइल चला दीजिए अब दूसरी चीज यह थी कि हमने यहां पर एक्सटेंशन क्यों नहीं लगाया है ना यहां पर जो फाइल है वह
डॉट क्लास के साथ है लेकिन हमने डॉट क्लास नहीं लिखा देखिए कन्वेंशन नहीं है जेवीएम को आप डॉट क्लास फाइल ही देते हो तो आपको मेंशन करने की
जरूरत नहीं है अगर आप मेंशन करोगे तो एरर आ जाएगी जावा टेस्ट ड क्लास चला रहा हूं देखो एरर कुड नॉट फाइंड और लोड मेन क्लास
टेस्ट डॉट क्लास तो यहां पर डॉट क्लास देने की आवश्यकता नहीं है ओबवियसली तो मैं बेसिक आईडिया दे रहा हूं आप कभी भी नहीं चलाओगे ऐसे प्रोग्राम है ना हम आईडी
इंस्टॉल करेंगे तो हमें बेसिक आईडिया हो गया है कि हां भाई डॉट जा फाइल है वह कन्वर्ट होती है फिर बाइट कोड में यूजिंग
जावा स कंपाइलर देन बाइट कोड कन्वर्ट होता है मशीन कोड में और वो रन हो जाता है ठीक है यूजिंग जेवीएम जेवीएम क्या करता है इंटरप्रेट करता है उसको लाइन बाय लाइन अबी
देखो ये लाइन बाय लाइन की कथा क्या है अब देखिए होता क्या है जब मैं कॉलेज में था तो मैंने बहुत लेक्चर पढ़े एंड कॉलेज में
टीचर्स भी यही कहते थे कि लाइन बाय लाइन लाइन बाय लाइन क्या मतलब है इसका क्या बकवास कर रहे हैं लाइन बाय लाइन मतलब क्या है उनको खुद नहीं पता देखो मैं बताता
हूं होता क्या है इंटरप्रेट करना लाइन बाय लाइन इसका मतलब क्या है जब बाइट कोड उसको मिलता है ना तो पहले
क्या करता है वह एक बार पार्स कर लेता है इंटरप्रेटर जो है हमारा जेवीएम जो है उसको पार्स कर लेगा ठीक है ऊपर से लेकर नीचे तक एक बार
उसको पढ़ लेगा और उनको ग्रुप करले लेगा इंस्ट्रक्शंस को ग्रुप कर लेगा ये पहले कौन चलाना दूसरे
कौन चला ऐसे करके ठीक है जब वो चीजें ग्रुप हो जाएंगी देन उन इंस्ट्रक्शंस को
लाइन बाय लाइन चलाएगा यह होती है कहानी तो दो पास जाते हैं पहले पार्स करेगा टू ग्रुप द इंस्ट्रक्शंस एंड दूसरे
पास में लाइन बाय लाइन वो इंस्ट्रक्शंस चलते हैं जो कि फर्स्ट पास उसने ग्रुप किए हैं ठीक है तो इसी वजह से इंटरप्रेटर स्लो
होता है कंपाइलर फास्ट होता है है ना ओवरऑल अगर देखें हम पूरा प्रोग्राम रन होने के लिए लेकिन इंटरप्रेटर का आपको आउटपुट दिख जाएगा है ना तुरंत आउटपुट दिख
जाएगा जो आपने ऊपर लिखा है वोह चल जाएगा पहले जो आपने नीचे लिखा है वो बाद में चलेगा ओबवियसली है ना वही कहानी है अब देखिए होता क्या है यहां पर हमने बोला कि
हां भाई जावा सी आया उसने कंपाइल कर दिया बाइट कोड में बाइट कोड लाइन बाय लाइन इंटरप्रेट किया गया बाय जेवीएम होता क्या
है यहां पर ना इस वाले स्टेप में भी कभी-कभी कंपाइलेशन भी होता है एक कंपाइलर
होता है यहां पर जस्ट इन टाइम कंपाइलर ठीक है जेवीएम के अंदर जस्ट इन टाइम कंपाइलर भी होता है तो अगर कोई ऐसी चीज है कोई ऐसा ब्लॉक है जो बहुत ज्यादा बार यूज हो रहा
है उसको लग रहा है कि यार यह दोबारा रिपीट हो तो उसको कंपाइल करके रख लेता है पहले जेवीएम उसको कंपाइल करके रख लेता है कंपाइल करता कौन है जस्ट इन टाइम कंपाइलर
तो बार-बार कंपाइल नहीं करेगा उसको बार-बार इंटरप्रेट नहीं करेगा कोई ऐसा ब्लॉक है ठीक है जैसे मान लीजिए एक ऐड फंक्शन है फॉर एग्जांपल ठीक है आपने 10
बार कॉल करा रखा है तो जो ऐड फंक्शन है वह कंपाइल कर दिया जाएगा बाय जस्ट इन टाइम कंपाइलर तो इंटरप्रेटर उस कंपाइल्ड कोड को
यूज कर लेगा ठीक है तो यह कहानी हमारी जे आईटी की है ना जे आईटी बोले तो जस्ट इन टाइम कंपाइलर की ठीक है तो इस वीडियो में हमने
बहुत कुछ पढ़ लिया बेसिकली ठीक है ना मेरी पूरी बीटेक खत्म हो गई थी मेरे को नहीं पता चला यह सब तो इस वीडियो में इतना ही नेक्स्ट वीडियो में हम आईडीई से प्रोग्राम
लिखेंगे नोटपैड में तो अभी जस्ट एग्जांपल दिया है मैंने ठीक है और यह जो लिखा है हमने ये क्या है क्लास पब्लिक स्टैटिक
वॉइड में ये सब है क्या वह अपन देखेंगे नेक्स्ट लेक्चर में अब देखिए अगर थोड़ी बहुत भी हेल्प हुई हो आपकी तो कंसीडर सब्सक्राइब क्योंकि
वीडियोस फ्री है और मैं चाहता नहीं हूं इनको पेड करना आई जस्ट नीड योर सपोर्ट जस्ट हिट सब्सक्राइब बटन ट्स
इट ब
Loading video analysis...