CodeGym /Java Blog /अनियमित /फंस गया? जावा सीखने के सबसे कठिन भाग और उन्हें कैसे दूर क...
John Squirrels
स्तर 41
San Francisco

फंस गया? जावा सीखने के सबसे कठिन भाग और उन्हें कैसे दूर करें I

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

1. जेनरिक

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

युक्तियाँ और सिफारिशें

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

2. मल्टीथ्रेडिंग

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

युक्तियाँ और सिफारिशें

यहाँ एक अच्छी सिफारिश हैएक लोकप्रिय क्यू एंड ए वेबसाइट, एक सॉफ्टवेयर वास्तुकार और स्टैकएक्सचेंज के सक्रिय उपयोगकर्ता, एस.लॉट से मल्टीथ्रेडिंग से निपटने के तरीके पर: "मल्टी-थ्रेडिंग सरल है। मल्टी-थ्रेडिंग के लिए एक एप्लिकेशन को कोड करना बहुत आसान है। एक सरल ट्रिक है, और यह थ्रेड्स के बीच डेटा पास करने के लिए एक अच्छी तरह से डिज़ाइन की गई संदेश कतार (अपना खुद का रोल न करें) का उपयोग करना है। कठिन हिस्सा कई थ्रेड्स को जादुई रूप से साझा ऑब्जेक्ट को किसी तरह से अपडेट करने की कोशिश कर रहा है। ऐसा तब होता है जब यह त्रुटि-प्रवण हो जाता है क्योंकि लोग मौजूद दौड़ की स्थिति पर ध्यान नहीं देते हैं। बहुत से लोग संदेश कतारों का उपयोग नहीं करते हैं और साझा वस्तुओं को अपडेट करने का प्रयास करते हैं और स्वयं के लिए समस्याएं पैदा करते हैं। क्या मुश्किल हो जाता है एक एल्गोरिदम डिजाइन करना जो कई कतारों के बीच डेटा पास करते समय अच्छी तरह से काम करता है। यह मुश्किल है।

3. क्लासपाथ मुद्दे

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

युक्तियाँ और सिफारिशें

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

4. बहुरूपता और इसका सही उपयोग

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

युक्तियाँ और सिफारिशें

बहुरूपता से निपटने के लिए इसे सीखने के अलावा और कोई तरीका नहीं है। यहां बताया गया है कि कोपेनहेगन विश्वविद्यालय में प्रोग्रामिंग पढ़ाने वाले टोरबेन मोगेन्सन कैसे बताते हैंयह अवधारणा: "सरल ओवरलोडिंग: + का अर्थ पूर्णांक जोड़, फ्लोटिंग पॉइंट जोड़ और (कुछ भाषाओं में) स्ट्रिंग संयोजन दोनों हो सकता है। उपप्रकार बहुरूपता: यदि B, A का एक उपप्रकार (इनहेरिट करता है) है, तो प्रकार B के किसी भी मान का उपयोग उस संदर्भ में किया जा सकता है जो प्रकार A के मान की अपेक्षा करता है। पैरामीट्रिक बहुरूपता: एक प्रकार को प्रकार के मापदंडों के साथ पैरामीटर किया जा सकता है, जैसे कि आप अलग-अलग संदर्भ अलग-अलग प्रकार के तर्क प्रदान कर सकते हैं, इसलिए आप पैरामीटर प्रकार को अलग-अलग ठोस प्रकारों में बदल देते हैं। इसे "टेम्प्लेट" या "जेनेरिक" भी कहा जाता है और यह OO भाषाओं में है जिसे आमतौर पर कोण कोष्ठक (जैसे T<A>) का उपयोग करके निर्दिष्ट किया जाता है। इंटरफ़ेस बहुरूपता। यह मूल रूप से एक तंत्र है जहां आप उपप्रकार बहुरूपता को उपप्रकारों तक सीमित करते हैं जो एक निश्चित इंटरफ़ेस को लागू करने वाले मापदंडों को टाइप करने के लिए एक निश्चित इंटरफ़ेस या पैरामीट्रिक बहुरूपता को लागू करते हैं।

5. प्रतिबिंब

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

युक्तियाँ और सिफारिशें

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

6. इनपुट/आउटपुट स्ट्रीम

स्ट्रीम आपको किसी भी डेटा स्रोत के साथ काम करने देती हैं: इंटरनेट, आपके कंप्यूटर का फ़ाइल सिस्टम, या कुछ और। धाराएँ एक सार्वभौमिक उपकरण हैं। वे एक प्रोग्राम को कहीं से भी डेटा प्राप्त करने की अनुमति देते हैं (इनपुट स्ट्रीम) और इसे कहीं भी (आउटपुट स्ट्रीम) भेजते हैं। उनका काम एक ही है: एक जगह से डेटा लेना और उसे दूसरी जगह भेजना। दो प्रकार की धाराएँ हैं: इनपुट धाराएँ (डेटा प्राप्त करने के लिए उपयोग की जाती हैं) और आउटपुट धाराएँ (डेटा भेजने के लिए)। कई लोगों के लिए स्ट्रीम का उपयोग करना समझना मुश्किल हो जाता है, यह तथ्य है कि जावा में कई I/O स्ट्रीम क्लासेस हैं।

युक्तियाँ और सिफारिशें

“जावा में मुख्य रूप से दो योगदान कारकों के कारण कई I/O धारा वर्ग हैं। पहली विरासत है। कुछ वर्ग अभी भी ऐतिहासिक कारणों से मौजूद हैं और उन्हें पदावनत नहीं किया गया है क्योंकि उन्हें हानिकारक नहीं माना जाता है। दूसरा, लचीलापन। विभिन्न अनुप्रयोगों की अलग-अलग आवश्यकताएं होती हैं और इस प्रकार, आपकी आवश्यकताओं के आधार पर आपके पास कई विकल्प होते हैं। जब आप इसे पढ़ते हैं तो उपयोगी सार स्पष्टता लाते हैं और कोड की कुछ पंक्तियों के साथ आप बहुत कुछ कर सकते हैं," स्वीडन के एक जावा विशेषज्ञ जोनास मेलिन कहते हैं । जावा के कौन से पहलू आपको समझने में सबसे कठिन लगे या कुछ समय से अटके हुए थे? टिप्पणियों में अपने अनुभव साझा करें।
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION