जावा के बारे में जानें, यह क्या है और यह इतना ë

जावा के अंदर जावा प्लेटफ़ॉर्म और संबंधित तकनीकों के पीछे एक झलक प्रदान करता है। इस महीने के कॉलम में, मैं आपको जावा प्रोग्रामिंग भाषा का एक अवलोकन दिखाऊंगा।

जावा - इंडोनेशिया का एक द्वीप, एक प्रकार का कॉफी, और एक प्रोग्रामिंग भाषा। महत्व के विभिन्न डिग्री में तीन अलग-अलग अर्थ हैं। अधिकांश प्रोग्रामर, हालांकि, जावा प्रोग्रामिंग भाषा में रूचि रखते हैं। कुछ ही सालों में (1 99 5 के उत्तरार्ध से), जावा ने सॉफ़्टवेयर समुदाय को तूफान से लिया है। इसकी असाधारण सफलता ने जावा को सबसे तेजी से बढ़ती प्रोग्रामिंग भाषा बना दी है। जावा के बारे में बहुत प्रचार है, और यह क्या कर सकता है। कई प्रोग्रामर, और अंतिम उपयोगकर्ता, वास्तव में इसके बारे में उलझन में हैं, और जावा क्या प्रदान करता है।

जावा एक क्रांतिकारी भाषा है

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

आइए कुछ गुणों को अधिक विस्तार से देखें: -

वस्तु के उन्मुख

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

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

पोर्टेबल

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

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

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

मल्टी-थ्रेडेड

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

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

स्वचालित कचरा संग्रह

नहीं, हम कचरे को हटाने के बारे में बात नहीं कर रहे हैं (हालांकि एक कंप्यूटर जो सचमुच ऐसा कर सकता है वह साफ-सुथरा होगा)। कचरा संग्रह शब्द अप्रयुक्त स्मृति स्थान के पुनर्विचार को संदर्भित करता है। जब अनुप्रयोग ऑब्जेक्ट बनाते हैं, तो JVM उनके संग्रहण के लिए मेमोरी स्पेस आवंटित करता है। जब ऑब्जेक्ट की आवश्यकता नहीं होती है (ऑब्जेक्ट का कोई संदर्भ मौजूद नहीं है), मेमोरी स्पेस को बाद में उपयोग के लिए पुनः दावा किया जा सकता है।

सुरक्षित

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

नेटवर्क और "इंटरनेट" जागरूक

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