कैसे जावा एक प्लेटफार्म स्वतंत्र भाषा है

Mar 13 2023
कंप्यूटर प्रोग्राम विशिष्ट हार्डवेयर और ऑपरेटिंग सिस्टम से बहुत निकट से संबंधित हैं। उदाहरण के लिए, विंडोज़ अनुप्रयोग मैक ऑपरेटिंग सिस्टम पर नहीं चल सकते।

कंप्यूटर प्रोग्राम विशिष्ट हार्डवेयर और ऑपरेटिंग सिस्टम से बहुत निकट से संबंधित हैं। उदाहरण के लिए, विंडोज़ अनुप्रयोग मैक ऑपरेटिंग सिस्टम पर नहीं चल सकते। मैक एप्लिकेशन एंड्रॉइड ऑपरेटिंग सिस्टम पर नहीं चल सकते हैं, और इसी तरह।

कुछ एप्लिकेशन सभी ऑपरेटिंग सिस्टम के लिए सामान्य हैं, जैसे एमएस वर्ड, तो क्या उन्हें सभी ऑपरेटिंग सिस्टम के लिए अलग से लिखा जाना चाहिए?

प्लेटफार्मों की इस विविधता से निपटने के लिए, ऐसे अनुप्रयोगों को सभी प्लेटफार्मों के लिए स्वतंत्र रूप से लिखा जाना चाहिए। जावा हार्डवेयर और ऑपरेटिंग सिस्टम से स्वतंत्र एप्लिकेशन लिखने का एक तरीका प्रदान करता है। इस प्रकार, इसे एक प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग भाषा कहा जाता है।

प्लेटफ़ॉर्म-स्वतंत्र का अर्थ यह है कि जावा संकलित कोड (बाइट कोड) सभी ऑपरेटिंग सिस्टम पर चल सकता है।

एक प्रोग्राम ऐसी भाषा में लिखा जाता है जो मानव-पठनीय भाषा है। इसमें ऐसे शब्द, मुहावरे आदि हो सकते हैं जिन्हें मशीन समझ नहीं पाती। मशीन द्वारा स्रोत कोड को समझने के लिए, इसे मशीनों द्वारा समझी जाने वाली भाषा में होना चाहिए, आमतौर पर मशीन-स्तरीय भाषा। तो, यहाँ एक संकलक की भूमिका आती है। कंपाइलर उच्च-स्तरीय भाषा (मानव भाषा) को मशीनों द्वारा समझे जाने वाले प्रारूप में परिवर्तित करता है । इसलिए, एक कंपाइलर एक प्रोग्राम है जो किसी अन्य प्रोग्राम के सोर्स कोड को प्रोग्रामिंग लैंग्वेज से एक्जीक्यूटेबल कोड में ट्रांसलेट करता है।
यह निष्पादन योग्य कोड मशीन निर्देशों का अनुक्रम हो सकता है जिसे सीधे सीपीयू द्वारा निष्पादित किया जा सकता है, या यह एक मध्यवर्ती प्रतिनिधित्व हो सकता है जिसे वर्चुअल मशीन द्वारा व्याख्या किया जाता है। जावा में यह मध्यवर्ती प्रतिनिधित्व हैजावा बाइट कोड।

· प्लेटफ़ॉर्म क्या है, और प्लेटफ़ॉर्म-स्वतंत्र भाषा क्या है?
· एक कोड का संकलन
· जावा में एक प्रोग्राम कैसे निष्पादित होता है?
· जेवीएम (जावा वर्चुअल मशीन)
· प्लेटफ़ॉर्म इन-डिपेंडेंसी में संकलन और व्याख्या की क्या भूमिका है?
· जावा कैसे प्लेटफार्म स्वतंत्रता प्रदान करता है?
· जावा पूरी तरह से प्लेटफार्म स्वतंत्र क्यों नहीं है?
· निष्कर्ष

प्लेटफ़ॉर्म क्या है, और प्लेटफ़ॉर्म-स्वतंत्र भाषा क्या है?

प्लेटफ़ॉर्म को हार्डवेयर, ऑपरेटिंग सिस्टम और सॉफ़्टवेयर के एक अलग संयोजन के रूप में परिभाषित किया जा सकता है जो प्रोग्राम चलाने के लिए एक वातावरण प्रदान करता है ।

प्लेटफ़ॉर्म स्वतंत्रता सिस्टम के ऑपरेटिंग सिस्टम से प्रोग्राम की स्वतंत्रता को संदर्भित करती है। यह "राइट वन्स रन एनीव्हेयर (WORA)" पद्धति को अपनाता है।

एक कोड संकलित करना

हर बार जब हम कोड लिखते हैं, हम एक प्रोग्रामिंग भाषा के सिंटैक्स का पालन करते हैं, जो आम तौर पर पठनीय होता है। कुछ शब्द, चर नाम, वाक्यांश, विधि नाम आदि शामिल हैं। उन सभी को साहित्य माना जाता है जिसे मनुष्य पढ़ और समझ सकता है।

नतीजतन, कंप्यूटर स्रोत कोड को मशीन-पठनीय कोड में बदलने के लिए एक कंपाइलर चलाता है, जिसे मशीन-स्तरीय भाषा भी कहा जाता है। कंपाइलर मशीन-स्तरीय कोड को एक निश्चित प्रारूप में बनाता है ताकि सीपीयू इसे आसानी से समझ सके और बिना किसी त्रुटि के इसे निष्पादित कर सके।

जब तक दोनों कंप्यूटर एक ही OS पर नहीं चलते हैं, हम उस कोड को नहीं चला सकते हैं जो एक मशीन पर दूसरे मशीन पर विकसित किया गया है जब प्रत्येक OS द्वारा मशीन-स्तरीय भाषा भिन्न होती है। कई डेवलपर्स और प्रोग्रामर सोचते हैं कि यह अस्वीकार्य है। हालाँकि, जावा चीजों को सरल करता है और इसके लिए एक फिक्स शामिल करता है।

जावा में एक प्रोग्राम कैसे निष्पादित होता है?

जावा में, कंपाइलर प्रोग्राम को बायटेकोड में परिवर्तित करता है, जो निष्पादन योग्य कोड नहीं है। जेवीएम (जावा वर्चुअल मशीन) तब रनटाइम पर बाइट कोड निष्पादित करता है। जब हम javac कंपाइलर का उपयोग करते हैं तो जावा सोर्स कोड को बायटेकोड में संकलित किया जाता है ।

परिणामी बायटेकोड मशीन-निष्पादन योग्य नहीं है और कोई भी और कोई अन्य प्लेटफॉर्म या ऑपरेटिंग सिस्टम इसे चला सकता है। लेकिन इसे कंप्यूटर पर चलाने के लिए दुभाषिया की आवश्यकता होती है। जब हम इसके प्रोग्राम या फ़ाइल को निष्पादित करते हैं, तो हमें एक .class फ़ाइल प्राप्त होती है, जो एक गैर-निष्पादन योग्य फ़ाइल है। JVM इस दुभाषिया के रूप में कार्य करता है, और परिणामस्वरूप, यह Bytecode को क्रियान्वित करता है। JVM निस्संदेह प्लेटफ़ॉर्म-स्वतंत्र है। यह परिवेश के आधार पर कैसे भिन्न होता है। उदाहरण के लिए, मैक और लिनक्स के पास विंडोज़ की तुलना में एक अलग जेवीएम है। यह इसकी प्रमुख विशेषताओं में से एक के रूप में पोर्टेबिलिटी का समर्थन करता है क्योंकि इसके कोड का पोर्टेबल बायटेकोड इसे प्लेटफ़ॉर्म-स्वतंत्र बनाता है।

फ़ाइल एक्सटेंशन .class के साथ डिस्क पर बायटेकोड सहेजा जाता है । जब प्रोग्राम चलाना होता है, तो जस्ट-इन-टाइम ( JIT ) कंपाइलर का उपयोग करके बायटेकोड को परिवर्तित किया जाता है। परिणाम मशीन कोड है जिसे फिर मेमोरी में फीड किया जाता है और निष्पादित किया जाता है।

निष्पादित करने के लिए जावा कोड को दो बार संकलित करने की आवश्यकता है:

  1. जावा प्रोग्राम को बायटेकोड में संकलित करने की आवश्यकता है।
  2. जब बायटेकोड चलाया जाता है, तो इसे मशीन कोड में बदलने की आवश्यकता होती है।

जब C या C++ का उपयोग किया जाता है तो कंपाइलर एक OS-निर्भर.exe फ़ाइल बनाता है (ये भाषाएँ प्लेटफ़ॉर्म स्वतंत्र नहीं हैं)। जब हम इसे किसी भिन्न OS पर चलाने का प्रयास करते हैं तो यह.exe फ़ाइल नहीं चलेगी क्योंकि यह उस OS पर निर्भर करता है और इसके साथ संगत नहीं है।

जेवीएम (जावा वर्चुअल मशीन)

JVM, जावा कंपाइलर का एक घटक, .java फ़ाइलों को .class फ़ाइलों में रूपांतरित करता है। जब हम जावा कोड संकलित करते हैं तो स्रोत कोड में मुख्य कार्य को जेवीएम कहा जाता है।

जेवीएम (जावा वर्चुअल मशीन) जावा अनुप्रयोगों को चलाने के लिए रन-टाइम इंजन के रूप में कार्य करता है। जेवीएम वह है जो वास्तव में जावा कोड में मौजूद मुख्य विधि को कॉल करता है। जेवीएम जेआरई (जावा रनटाइम एनवायरनमेंट) का एक हिस्सा है।

जावा एप्लिकेशन को WORA (राइट वंस रन एनीवेयर) कहा जाता है। इसका अर्थ है कि एक प्रोग्रामर जावा कोड को एक सिस्टम पर विकसित कर सकता है और बिना किसी समायोजन के किसी अन्य जावा-सक्षम सिस्टम पर चलने की उम्मीद कर सकता है। यह सब जेवीएम के कारण संभव हुआ है।

जब हम एक .java फ़ाइल संकलित करते हैं, तो .java फ़ाइल में मौजूद समान वर्ग नामों के साथ .class फ़ाइलें (बाइट-कोड शामिल हैं) जावा कंपाइलर द्वारा उत्पन्न होती हैं। जब हम इसे चलाते हैं तो यह .class फ़ाइल विभिन्न चरणों में जाती है। ये चरण मिलकर पूरे JVM का वर्णन करते हैं।

जावा में, यहाँ मुख्य बिंदु यह है कि JVM ऑपरेटिंग सिस्टम पर निर्भर करता है - इसलिए यदि आप Mac OS X चला रहे हैं तो आपके पास एक अलग JVM होगा यदि आप Windows या कोई अन्य ऑपरेटिंग सिस्टम चला रहे हैं। इस तथ्य को आपकी विशेष मशीन के लिए जेवीएम डाउनलोड करने का प्रयास करके सत्यापित किया जा सकता है - इसे डाउनलोड करने का प्रयास करते समय, आपको विभिन्न ऑपरेटिंग सिस्टमों के अनुरूप जेवीएम की एक सूची दी जाएगी, और आप स्पष्ट रूप से उस ऑपरेटिंग सिस्टम के लिए जो भी जेवीएम लक्षित है, उसे चुनेंगे। तुम दौड़ रहे हो। इसलिए हम यह निष्कर्ष निकाल सकते हैं कि JVM प्लेटफ़ॉर्म-निर्भर है और यही कारण है कि Java "प्लेटफ़ॉर्म इंडिपेंडेंट" बनने में सक्षम है।

महत्वपूर्ण बिंदु:

  • जावा के मामले में, यह बाइटकोड का जादू है जो इसे प्लेटफार्म स्वतंत्र बनाता है ।
  • यह JAVA भाषा में एक महत्वपूर्ण विशेषता जोड़ता है जिसे पोर्टेबिलिटी कहा जाता है । हर सिस्टम का अपना JVM होता है जो jdk सॉफ्टवेयर इंस्टॉल होने पर अपने आप इंस्टॉल हो जाता है। प्रत्येक ऑपरेटिंग सिस्टम के लिए अलग JVM उपलब्ध है जो .class फ़ाइल या बाइट कोड को पढ़ने में सक्षम है।
  • ध्यान देने वाली एक महत्वपूर्ण बात यह है कि जबकि JAVA प्लेटफ़ॉर्म-स्वतंत्र भाषा है, JVM प्लेटफ़ॉर्म-निर्भर है। अलग-अलग OS के लिए अलग-अलग JVM डिज़ाइन किए गए हैं और बाइट कोड अलग-अलग OS पर चलने में सक्षम है।

प्लेटफ़ॉर्म स्वतंत्रता प्राप्त करने के लिए, यह संकलन और व्याख्या दोनों को जोड़ती है। जब एक प्रोग्राम को जावा में संकलित किया जाता है, तो इसे मशीन कोड के बजाय बायटेकोड में बदल दिया जाता है, जिसे अक्सर a.class फ़ाइल के रूप में जाना जाता है। अब, यह बायटेकोड कुछ ऐसा है जो इसे मशीन कोड से इसकी विशेषताओं के साथ अलग करता है क्योंकि इसे दूसरे प्लेटफॉर्म पर / पोर्टेबल में ले जाया जा सकता है, लेकिन जावा नहीं कर सकता। उस बायटेकोड को जावा वर्चुअल मशीन पर निष्पादित किया जा सकता है।

जावा कैसे प्लेटफार्म स्वतंत्रता प्रदान करता है?

अधिकांश प्रोग्रामिंग भाषाओं में, एक कंपाइलर (या दुभाषिया) कोड उत्पन्न करता है जो एक विशिष्ट लक्ष्य मशीन पर निष्पादित हो सकता है। उदाहरण के लिए, यदि आप Windows मशीन पर C++ प्रोग्राम को संकलित करते हैं, तो निष्पादन योग्य फ़ाइल को किसी अन्य मशीन पर कॉपी किया जा सकता है, लेकिन यह केवल अन्य विंडोज़ मशीनों पर चलेगी, लेकिन किसी अन्य मशीन (जैसे, मैक या लिनक्स मशीन) पर कभी नहीं चलेगी। एक प्लेटफ़ॉर्म लक्ष्य मशीन (इसके ऑपरेटिंग सिस्टम के साथ) द्वारा निर्धारित किया जाता है। पहले की भाषाओं के लिए, भाषा डिजाइनरों को प्रत्येक मंच के लिए संकलक (या दुभाषिया) का एक विशेष संस्करण बनाने की आवश्यकता होती थी। यदि आपने एक प्रोग्राम लिखा है जिसे आप कई प्लेटफार्मों पर उपलब्ध कराना चाहते हैं, तो प्रोग्रामर के रूप में आपको काफी अतिरिक्त काम करना होगा। आपको प्रत्येक प्लेटफॉर्म के लिए अपने स्रोत कोड के कई संस्करण बनाने होंगे।

जावा उच्च-स्तरीय प्रोग्रामर (जैसे आप) के लिए प्लेटफ़ॉर्म समस्या को समाप्त करने में सफल रहा क्योंकि इसने कंपाइलर के अंतर्निहित स्तर पर संकलन-लिंक-निष्पादन अनुक्रम को पुनर्गठित किया है । विवरण जटिल हैं लेकिन, अनिवार्य रूप से, जावा भाषा के डिजाइनरों ने उन प्रोग्रामिंग मुद्दों को अलग कर दिया है जो प्लेटफॉर्म पर निर्भर हैं और इन मुद्दों को अमूर्त रूप से संदर्भित करने के लिए निम्न-स्तरीय साधन विकसित किए हैं। नतीजतन, जावा कंपाइलर ऑब्जेक्ट फ़ाइल नहीं बनाता है, बल्कि इसके बजाय यह एक बाइटकोड फ़ाइल बनाता है जो अनिवार्य रूप से वर्चुअल मशीन के लिए ऑब्जेक्ट फ़ाइल है । वास्तव में, जावा कंपाइलर को अक्सर JVM कंपाइलर (जावा वर्चुअल मशीन के लिए) कहा जाता है।

नतीजतन, आप एक जावा प्रोग्राम (किसी भी प्लेटफॉर्म पर) लिख सकते हैं और एक बायटेकोड फ़ाइल उत्पन्न करने के लिए जेवीएम कंपाइलर (जेवैक कहा जाता है) का उपयोग कर सकते हैं (बायटेकोड फाइलें एक्सटेंशन .class का उपयोग करती हैं)। इस बायटेकोड फ़ाइल का उपयोग किसी भी प्लेटफ़ॉर्म पर किया जा सकता है (जिस पर जावा स्थापित है)। हालाँकि, bytecode एक निष्पादन योग्य फ़ाइल नहीं है। एक बायटेकोड फ़ाइल को निष्पादित करने के लिए, आपको वास्तव में जावा दुभाषिया (जावा कहा जाता है) का आह्वान करने की आवश्यकता है। प्रत्येक प्लेटफ़ॉर्म का अपना जावा दुभाषिया होता है जो प्लेटफ़ॉर्म-विशिष्ट मुद्दों को स्वचालित रूप से संबोधित करेगा जिन्हें अब बंद नहीं किया जा सकता है। जब बाइटकोड द्वारा प्लेटफ़ॉर्म-विशिष्ट संचालन की आवश्यकता होती है, तो जावा दुभाषिया प्लेटफ़ॉर्म के लिए उपयुक्त कोड में लिंक करता है।

व्याख्या की गई भाषाओं की तरह, जावा प्रोग्राम को एक निष्पादन योग्य में बाइटकोड को संकलित करके तेजी से चलाना संभव है; नुकसान यह है कि ऐसे निष्पादन योग्य केवल उसी प्लेटफॉर्म पर काम करेंगे जिसमें इसे बनाया गया है।

जावा पूरी तरह से प्लेटफार्म स्वतंत्र क्यों नहीं है?

स्पष्ट रूप से जावा ऐसे प्लेटफॉर्म पर नहीं चल सकता है जिसमें जेवीएम नहीं है। तो शब्द के सबसे शाब्दिक अर्थ में, जावा प्लेटफ़ॉर्म स्वतंत्र नहीं है। लेकिन साथ ही, मंच स्वतंत्रता की आपकी परिभाषा उपयोगी नहीं है। कोई भी संभावित भाषा कभी भी वास्तव में प्लेटफ़ॉर्म स्वतंत्र नहीं हो सकती, क्योंकि प्लेटफ़ॉर्म के कुछ पहलू को भाषा को पार्स करने में सक्षम होने की आवश्यकता होगी। और सभी संभावित प्लेटफॉर्म दिए गए हैं, कुछ आवश्यक रूप से इसे पार्स नहीं कर पाएंगे।

तो, इस तथ्य को देखते हुए कि कई, कई प्लेटफार्म एक जेवीएम चलाते हैं, और जावा कोड किसी भी जेवीएम पर उसी अर्थ के साथ चलाया जा सकता है, जावा प्लेटफॉर्म-निर्भर है।

निष्कर्ष

जावा सबसे प्रसिद्ध और व्यापक रूप से इस्तेमाल की जाने वाली प्रोग्रामिंग भाषाओं में से एक है। यह एक प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग भाषा है । जावा को सभी अलग-अलग प्लेटफॉर्म के लिए पूरे कोड को फिर से लिखने की आवश्यकता नहीं है। यह जावा बाइटकोड और जावा वर्चुअल मशीन का उपयोग करके प्लेटफ़ॉर्म स्वतंत्रता का समर्थन करता है । जावा कंपाइलर जावैक प्रोग्राम कोड को बाइट कोड में परिवर्तित करता है। यह बाइट कोड प्लेटफ़ॉर्म-स्वतंत्र है और किसी भी JVM ऑपरेटिंग सिस्टम पर चल सकता है। जेवीएम बाइट कोड को मशीन कोड में व्याख्या करता है, और प्रोग्राम निष्पादित होता है।

पढ़ने के लिए धन्यवाद। हैप्पी लर्निंग

इसे फॉलो करके हमारे प्रकाशन का समर्थन करें

पूर्णकालिक नौकरी और अंशकालिक अध्ययन को कैसे संतुलित करें? व्हाइट-लेबल एनएफटी प्लेटफॉर्म सॉल्यूशंस के साथ अपना खुद का एनएफटी मार्केटप्लेस लॉन्च करना जावा वैकल्पिक और कोई भी: शून्य मूल्यों को संभालना और दो संभावित मूल्यों का प्रतिनिधित्व करना अपने जीवन का अधिकतम लाभ कैसे उठाएं: जावा स्प्रिंग 3.0 में एक व्यक्तिगत गाइड कॉल करने योग्य बनाम रननेबल बनाम भविष्य और इसकी विशेषताएं अधिकांश आमतौर पर पूछे जाने वाले Java8 स्ट्रीम आधारित साक्षात्कार प्रश्न - रॉबर्ट ग्रीन द्वारा «द 48 लॉज़ ऑफ़ पॉवर» से अंतिम भाग शीर्ष 8 कानून: रोज़मेरी - इसे कैसे लगाया जाए और इसके क्या लाभ हैं