विज्ञापन

क्या आप वर्तमान में बहस कर रहे हैं कि अपने अगले एप्लिकेशन के लिए जावा का उपयोग करें या देशी टूलकिट और फ्रेमवर्क का उपयोग करें? क्या आप जानना चाहेंगे कि एक एप्लिकेशन के लिए देशी प्रोग्रामिंग में जावा क्या फायदे प्रदान करता है? पता लगाने के लिए पढ़ें!

मूल निवासी आवेदन क्या है?

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

एक मूल निवासी की तैयारी

क्यों नहीं मूल निवासी अनुप्रयोगों पोर्टेबल?

भाषा के लिए एक कंपाइलर जैसे C / C ++ लक्षित सीपीयू के लिए मशीन भाषा में स्रोत कोड स्टेटमेंट का अनुवाद करता है। जब आप इस कोड को किसी भिन्न CPU पर चलाने का प्रयास करते हैं, तो प्रोग्राम सही ढंग से काम नहीं कर सकता है (या सभी पर काम कर सकता है) क्योंकि संकलित कोड में मशीन भाषा निर्देश इस CPU द्वारा समर्थित नहीं हो सकता है।

instagram viewer

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

पोर्टेबिलिटी देशी अनुप्रयोगों के साथ इतना बड़ा मुद्दा है कि कंपाइलर को अगले संस्करण में अपग्रेड करने से ब्रेकिंग परिवर्तन हो सकते हैं। नए संकलक के साथ काम करने के लिए आपके कोड को ठीक करने की आवश्यकता हो सकती है। जैसे, स्रोत कोड को उस चीज़ से अलग करना जो कि जाना जाता है ifdef हार्डवेयर-, OS- या कंपाइलर-विशिष्ट वर्कअराउंड को अलग करने के लिए बयान आम हैं।

निम्नलिखित में से एक छोटा कोड स्निपेट है BZLib संपीड़न पुस्तकालय जो के उपयोग को दर्शाता है ifdefप्लेटफ़ॉर्म विशिष्टताओं को अलग करना है:

#ifdef _WIN32 # शामिल # ifdef छोटा / * windows.h परिभाषित छोटा से चार * / # छोटा। # अगर अंत। # ifdef BZ_EXPORT। # BZ_API (फंक) को विनैपि फंक परिभाषित करें। # BZ_EXTERN बाहरी परिभाषित करें। # और / * आयात विंडोज़ dll गतिशील रूप से * / # परिभाषित BZ_API (func) (WINAPI * func) # BZ_EXTERN को परिभाषित करें। # अगर अंत। #अन्य। # BZ_API (फंक) फंक को परिभाषित करें। # BZ_EXTERN बाहरी परिभाषित करें। #अगर अंत।

स्रोत कोड पोर्टेबिलिटी एक्रॉस ऑपरेटिंग सिस्टम

नए CPU में C / C ++ स्रोत कोड को फिर से संकलित करके इस स्थिति को कुछ हद तक कम किया जा सकता है। हालाँकि, नए CPU के लिए ऑपरेटिंग सिस्टम अलग हो सकता है। और स्रोत कोड परिवर्तन के बिना संकलित नहीं हो सकता है, चाहे प्रमुख या मामूली। ऑपरेटिंग सिस्टम संस्करणों में मामूली बदलाव के लिए भी कुछ स्रोत कोड परिवर्तनों की आवश्यकता हो सकती है।

और जब आप विघटनकारी ऑपरेटिंग सिस्टम जैसे विंडोज और लिनक्स / यूनिक्स पर विचार करते हैं, तो पोर्टेबिलिटी पूरे नए बॉल गेम है। जब तक आप एक टूलकिट या एक फ्रेमवर्क का उपयोग नहीं कर रहे हैं जो आपको ऑपरेटिंग सिस्टम से पूरी तरह से अलग करता है, स्रोत कोड पोर्टेबिलिटी असंभव है। ऐसा इसलिए है क्योंकि ऑपरेटिंग सिस्टम इंटरफ़ेस इन प्रणालियों के बीच पूरी तरह से अलग है। यदि आप अपने कोड के दूरस्थ कोनों में, किसी भी ऑपरेटिंग सिस्टम प्राइमेटिव का सीधे उपयोग करते हैं, तो आपका कोड इन सभी ऑपरेटिंग सिस्टम में पोर्टेबल नहीं होगा।

जावा अलग कैसे है?

यह इस परिदृश्य में है कि जावा एक नए प्रतिमान का निर्माण करता है, सॉफ्टवेयर के निर्माण का एक नया तरीका। जब जावा में प्रोग्रामिंग, आप एक लक्ष्य आभासी मशीन. इस तरह की मशीन एक अवधारणा के रूप में मौजूद है, और जावा भाषा इस मशीन के खिलाफ प्रोग्रामिंग के लिए इंटरफेस प्रदान करती है। उदाहरण के लिए, आप उपलब्ध मेमोरी की मात्रा, सीपीयू की संख्या, नेटवर्क इंटरफेस, आदि वर्चुअल मशीन की क्वेरी कर सकते हैं।

वर्चुअल मशीन निष्पादन कोड

कैसे जावा अनुप्रयोगों का निर्माण कर रहे हैं?

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

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

जावा प्रोग्राम का निर्माण

जावा वर्चुअल मशीन के क्या फायदे हैं?

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

एक जावा प्रोग्राम लिखा जाता है और जावा कंपाइलर का उपयोग करके संकलित किया जाता है। परिणामी वस्तु कोड (कहा जाता है बाइट कोड) को विभिन्न हार्डवेयर पर चलने वाले एक अलग होस्ट ऑपरेटिंग सिस्टम में ले जाया जा सकता है और समस्याओं के बिना चलना चाहिए।

जेआईटी कंपाइलर

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

जावा वर्चुअल मशीन का उपयोग करने का एक और लाभ यह है कि यह अलग-अलग उपयोग के मामलों के लिए अलग-अलग अनुकूलन लागू कर सकता है, सभी एक ही बाइट कोड के साथ। उदाहरण के लिए, ओरेकल जेवीएम बाइट कोड चलाने के लिए दो विकल्प प्रदान करता है: एक सर्वर मोड और एक क्लाइंट मोड। सर्वर मोड लंबे समय तक चलने वाले सर्वर कार्यक्रमों के लिए अनुकूलन करता है, जबकि क्लाइंट जेवीएम मोड त्वरित प्रतिक्रिया समय के लिए अनुकूलन करता है क्योंकि संभवतः यह इंटरैक्टिव मोड में उपयोग किया जा रहा है।

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

क्या आपने एक मूल एप्लिकेशन विकसित किया है और पोर्टेबिलिटी के कारण जावा में बदलना पड़ा है? या इसके विपरीत प्रदर्शन के मुद्दों के कारण? नीचे टिप्पणी करके हमें बताएं।

चित्र साभार: Shutterstock.com के माध्यम से लाभ