CodeGym /Java Blog /यादृच्छिक /अडकले? जावा शिकण्याचे सर्वात कठीण भाग आणि त्यावर मात कशी ...
John Squirrels
पातळी 41
San Francisco

अडकले? जावा शिकण्याचे सर्वात कठीण भाग आणि त्यावर मात कशी करावी

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
तुम्हाला माहिती आहेच, आम्ही नवशिक्यांना Java सह प्रोग्रामिंग भाषा शिकण्यास सुरुवात करण्यासाठी कोडिंग करण्याची शिफारस करतो आणि CodeGym कडे अगदी अप्रस्तुत विद्यार्थ्यांसाठीही Java शिकण्याची प्रक्रिया पचण्याजोगी बनवण्यासाठी सर्वकाही आहे. परंतु गेमिफिकेशन घटक, सहज चालणारी कथा आणि मजेदार पात्रे ही प्रक्रिया सुलभ करण्यास मदत करतात, Java चे मूलभूत तत्त्वे पूर्णपणे शिकणे क्वचितच नवीन शिकणाऱ्यांसाठी आव्हानांशिवाय जाते. अडकले?  जावा शिकण्याचे सर्वात कठीण भाग आणि त्यावर मात कशी करावी - १आज आम्ही जावा प्रोग्रामिंगच्या मूलभूत गोष्टींतील काही कठीण क्षेत्रांवर एक नजर टाकणार आहोत, अनेकांना ते का कठीण वाटतात आणि तुम्हाला त्याबद्दल काही करायचे असल्यास ते समजून घेण्याचा प्रयत्न करत आहोत.

1. जेनेरिक

Java मधील जेनेरिक्स असे प्रकार आहेत ज्यांचे पॅरामीटर असते. जेनेरिक प्रकार तयार करताना, तुम्ही केवळ एक प्रकारच नाही तर डेटा प्रकार देखील निर्दिष्ट करता ज्यासह ते कार्य करेल. जावा शिकणार्‍यांनी जेनेरिक्सचा उल्लेख जावाच्या सर्वात कठीण भागांपैकी एक म्हणून केला आहे. “माझा मुख्य मुद्दा अजूनही जेनेरिकशी संबंधित आहे. जेव्हा तुमच्याकडे पॅरामीटर्ससह पद्धती फॉलो करायच्या असतात तेव्हा ते खूप सोपे असते, परंतु जेव्हा तुम्हाला तुमचे स्वतःचे लिहायचे असते तेव्हा ते गोंधळात टाकते,” असे एका निनावी जावा शिकणाऱ्याने सांगितले.

टिपा आणि शिफारसी

रवी रेड्डी, अनुभवी प्रोग्रामर आणि युनिव्हर्सिटी प्रोफेसर यांचे जावामधील जेनेरिक्सबद्दलचे मत येथे आहे : “जावा जेनेरिक्स एक गोष्ट करतात जी C++ टेम्पलेट करत नाहीत — प्रकार सुरक्षा लागू करा. C++ टेम्पलेट्सची अंमलबजावणी ही एक साधी प्री-प्रोसेसर युक्ती आहे आणि ती प्रकार सुरक्षितता सुनिश्चित करत नाही. Java मधील जेनेरिक्स हे C++ टेम्प्लेट्ससारखे आहेत परंतु अतिरिक्त प्रकारच्या सुरक्षिततेसह आहेत. आणि IMHO, टाईप सुरक्षा हे कोणत्याही चांगल्या विकास वातावरणाचे एक आवश्यक वैशिष्ट्य आहे. आणि हो! पॅरामीटर्स आणि प्रकारांमधील आपल्या मानसिक बदलांमुळे ते गोंधळात टाकणारे असू शकतात. परंतु माझा विश्वास आहे की त्यांना पारंगत करण्यासाठी वेळ घालवणे हे मेहनतीचे आहे. कारण एकदा मला इंटरफेस आणि जेनेरिक्स समजल्यानंतर जावामध्ये मला स्वतःला "विचार" खूप चांगले वाटले."

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

Java मधील मल्टीथ्रेडिंग ही ऍप्लिकेशनद्वारे CPU चा जास्तीत जास्त वापर करण्यासाठी एकाच वेळी दोन किंवा अधिक थ्रेड कार्यान्वित करण्याची प्रक्रिया आहे. मल्टीथ्रेडिंग खूप महत्वाची कामे सोडवते आणि आमचे प्रोग्राम जलद बनवू शकते. अनेकदा अनेक वेळा वेगवान. परंतु हे अशा विषयांपैकी एक मानले जाते जिथे बरेच नवीन जावा शिकणारे अडकतात. सर्व कारण मल्टीथ्रेडिंग देखील समस्या सोडवण्याऐवजी निर्माण करू शकते. मल्टीथ्रेडिंगमुळे दोन विशिष्ट समस्या निर्माण होऊ शकतात: डेडलॉक आणि रेस कंडिशन. डेडलॉक ही अशी परिस्थिती आहे जिथे एकापेक्षा जास्त थ्रेड एकमेकांकडे असलेल्या संसाधनांची वाट पाहत आहेत आणि त्यापैकी कोणीही चालू ठेवू शकत नाही. रेस कंडिशन ही मल्टीथ्रेडेड सिस्टीम किंवा ऍप्लिकेशनमधील डिझाईन एरर असते, जिथे सिस्टम किंवा ऍप्लिकेशनचे ऑपरेशन कोडचे भाग कोणत्या क्रमाने कार्यान्वित केले जातात यावर अवलंबून असते.

टिपा आणि शिफारसी

येथे एक चांगली शिफारस आहेS.Lott, एक सॉफ्टवेअर आर्किटेक्ट आणि StackExchange, एक लोकप्रिय प्रश्नोत्तर वेबसाइटचा सक्रिय वापरकर्ता यांच्याकडून मल्टीथ्रेडिंगला कसे सामोरे जावे यावर: “मल्टी-थ्रेडिंग सोपे आहे. मल्टी-थ्रेडिंगसाठी ऍप्लिकेशन कोडिंग करणे खूप सोपे आहे. एक सोपी युक्ती आहे, आणि थ्रेड्समध्ये डेटा पास करण्यासाठी सु-डिझाइन केलेली मेसेज रांग वापरणे (स्वतःचे रोल करू नका). एकापेक्षा जास्त थ्रेड्स जादुईपणे सामायिक केलेल्या ऑब्जेक्टला काही प्रकारे अपडेट करण्याचा प्रयत्न करत आहे. तेव्हा तो त्रुटी-प्रवण होतो कारण लोक उपस्थित असलेल्या शर्यतीच्या परिस्थितीकडे लक्ष देत नाहीत. बरेच लोक संदेश रांग वापरत नाहीत आणि सामायिक केलेल्या वस्तू अद्यतनित करण्याचा प्रयत्न करतात आणि स्वतःसाठी समस्या निर्माण करतात. अनेक रांगांमधून डेटा पास करताना चांगले कार्य करणारे अल्गोरिदम डिझाइन करणे कठीण होते. अवघड आहे.

3. वर्गपथ समस्या

क्लासपाथ त्रुटी देखील जावा विकसकांना त्यांच्या दैनंदिन कामात भेडसावणार्‍या सर्वात तक्रार केलेल्या समस्यांपैकी एक मानल्या जातात. “क्लासपाथ समस्या डीबग करण्यासाठी वेळखाऊ असू शकतात आणि शक्य तितक्या वाईट वेळी आणि ठिकाणी घडू शकतात: रिलीझ होण्यापूर्वी आणि अनेकदा अशा वातावरणात जेथे विकास कार्यसंघाद्वारे प्रवेश नाही. ते IDE स्तरावर देखील घडू शकतात आणि कमी उत्पादकतेचे स्त्रोत बनू शकतात,” वास्को फेरेरा, अनुभवी Java/Javascript विकसक आणि प्रोग्रामिंग-संबंधित ट्यूटोरियल लेखक म्हणतात .

टिपा आणि शिफारसी

“क्लासपाथच्या समस्या इतक्या खालच्या पातळीच्या किंवा अगम्य नसतात कारण त्या सुरुवातीला वाटतात. हे सर्व काही zip फाइल्स (जार) विशिष्ट डिरेक्टरीमध्ये उपस्थित राहणे / नसणे, त्या डिरेक्टरी कशा शोधायच्या आणि मर्यादित प्रवेश असलेल्या वातावरणात क्लासपाथ कसे डीबग करायचे याबद्दल आहे. क्लास लोडर्स, क्लास लोडर चेन आणि पॅरेंट फर्स्ट/पॅरेंट लास्ट मोड यासारख्या संकल्पनांचा मर्यादित संच जाणून घेऊन, या समस्या प्रभावीपणे हाताळल्या जाऊ शकतात,” तज्ञ स्पष्ट करतात.

4. बहुरूपता आणि त्याचा योग्य वापर

जेव्हा OOP च्या तत्त्वांचा विचार केला जातो, तेव्हा बरेच लोक म्हणतात की त्यांना बहुरूपता समजण्यास कठीण वेळ होता. पॉलीमॉर्फिझम ही एक प्रोग्रामची क्षमता आहे जी ऑब्जेक्टच्या विशिष्ट प्रकाराबद्दल माहिती न देता समान इंटरफेससह त्याच प्रकारे हाताळण्याची क्षमता आहे. पॉलिमॉर्फिझम हा एक मूलभूत विषय असूनही, तो त्याऐवजी व्यापक आहे आणि जावाच्या पायाचा एक चांगला भाग बनवतो. बर्‍याच विद्यार्थ्यांसाठी, जावा शिकण्यात बहुरूपता ही पहिली अडचण आहे. सर्व कारण वेगवेगळ्या संदर्भात वापरले जाणारे बहुरूपतेचे वेगवेगळे प्रकार आहेत, जे गोंधळात टाकणारे असू शकतात.

टिपा आणि शिफारसी

बहुरूपतेला सामोरे जाण्यासाठी ते शिकण्याशिवाय दुसरा मार्ग नाही. कोपनहेगन विद्यापीठात प्रोग्रामिंग शिकवणारे टोर्बेन मोगेनसेन कसे स्पष्ट करतात ते येथे आहेही संकल्पना: “साधे ओव्हरलोडिंग: + म्हणजे पूर्णांक जोडणे, फ्लोटिंग पॉइंट जोडणे आणि (काही भाषांमध्ये) स्ट्रिंग जोडणे दोन्ही असू शकतात. सबटाइप पॉलीमॉर्फिझम: जर B हा A चा उपप्रकार असेल तर B प्रकाराचे कोणतेही मूल्य अशा संदर्भात वापरले जाऊ शकते ज्यात A प्रकाराचे मूल्य अपेक्षित आहे. पॅरामेट्रिक पॉलिमॉर्फिझम: एक प्रकार प्रकार पॅरामीटर्ससह पॅरामीटराइज्ड केला जाऊ शकतो, जसे की आपण भिन्न संदर्भ भिन्न प्रकारचे युक्तिवाद पुरवू शकतात, म्हणून तुम्ही पॅरामीटराइज्ड प्रकार वेगवेगळ्या ठोस प्रकारांना इन्स्टंट करा. याला "टेम्प्लेट्स" किंवा "जेनेरिक्स" देखील म्हणतात आणि ते सामान्यत: कोन कंस वापरून निर्दिष्ट केलेल्या OO भाषांमध्ये आहे (जसे की T<A>). इंटरफेस पॉलिमॉर्फिझम. ही मुळात अशी यंत्रणा आहे जिथे तुम्ही सबटाइप पॉलिमॉर्फिझम उपप्रकारांवर प्रतिबंधित करता जे विशिष्ट इंटरफेस लागू करतात किंवा विशिष्ट इंटरफेस लागू करणारे पॅरामीटर्स टाइप करण्यासाठी पॅरामेट्रिक पॉलिमॉर्फिझम.

5. प्रतिबिंब

रिफ्लेक्शन ही प्रोग्राम चालू असताना त्याबद्दलचा डेटा एक्सप्लोर करण्याची एक यंत्रणा आहे. रिफ्लेक्शन तुम्हाला फील्ड, पद्धती आणि क्लास कन्स्ट्रक्टर बद्दल माहिती एक्सप्लोर करू देते. हे तुम्हाला अशा प्रकारांसह कार्य करण्यास देखील अनुमती देते जे संकलित वेळी उपस्थित नव्हते, परंतु जे धावण्याच्या वेळेस उपलब्ध झाले होते. त्रुटी माहिती जारी करण्यासाठी प्रतिबिंब आणि तार्किकदृष्ट्या सुसंगत मॉडेल योग्य डायनॅमिक कोड तयार करणे शक्य करते. परंतु बर्याच लोकांसाठी, रिफ्लेक्शन कसे वापरायचे हे समजणे इतके सोपे नाही.

टिपा आणि शिफारसी

“रिफ्लेक्शन आणि Java च्या बाबतीत, रिफ्लेक्शन जावा ला परवानगी देते, जे स्टॅटिकली टाइप करण्यासाठी डिझाइन केलेले आहे, डायनॅमिकली टाइप केले जाऊ शकते. डायनॅमिक टायपिंग हे स्वाभाविकपणे वाईट नाही. होय, हे प्रोग्रामरला विशिष्ट OOP तत्त्वे तोडण्याची परवानगी देते, परंतु त्याच वेळी ते रनटाइम प्रॉक्सी आणि अवलंबन इंजेक्शन सारख्या अनेक शक्तिशाली वैशिष्ट्यांना अनुमती देते. होय, जावा तुम्हाला परावर्तन वापरून स्वतःला पायात शूट करू देते. तथापि, तुम्हाला अगदी स्पष्टपणे तुमच्या पायावर बंदूक दाखवावी लागेल, सुरक्षितता काढून टाकावी लागेल आणि ट्रिगर खेचून घ्यावा लागेल,” अनुभवी Java प्रोग्रामर आणि अॅप्लिकेशन आर्किटेक्ट जयेश लालवानी स्पष्ट करतात .

6. इनपुट/आउटपुट प्रवाह

प्रवाह तुम्हाला कोणत्याही डेटा स्रोतासह कार्य करू देतात: इंटरनेट, तुमच्या संगणकाची फाइल सिस्टम किंवा इतर काहीतरी. प्रवाह हे एक सार्वत्रिक साधन आहे. ते प्रोग्रामला कुठूनही (इनपुट स्ट्रीम) डेटा प्राप्त करण्यास आणि कोठेही (आउटपुट प्रवाह) पाठविण्याची परवानगी देतात. त्यांचे कार्य समान आहे: एका ठिकाणाहून डेटा घेणे आणि दुसर्या ठिकाणी पाठवणे. प्रवाहाचे दोन प्रकार आहेत: इनपुट प्रवाह (डेटा प्राप्त करण्यासाठी वापरला जातो) आणि आउटपुट प्रवाह (डेटा पाठवण्यासाठी). जावामध्ये अनेक I/O स्ट्रीम क्लासेस आहेत ही वस्तुस्थिती आहे की अनेक लोकांना स्ट्रीम वापरून समजणे कठीण होते.

टिपा आणि शिफारसी

"Java कडे अनेक I/O स्ट्रीम क्लासेस आहेत जे मुख्यतः दोन घटक घटकांमुळे आहेत. प्रथम वारसा आहे. काही वर्ग आजही ऐतिहासिक कारणास्तव तेथे आहेत आणि ते हानिकारक मानले जात नसल्यामुळे त्यांचे अवमूल्यन केले जात नाही. दुसरे, लवचिकता. वेगवेगळ्या ऍप्लिकेशन्सच्या वेगवेगळ्या आवश्यकता असतात आणि अशा प्रकारे, तुमच्या गरजेनुसार तुमच्याकडे अनेक पर्याय असतात. जेव्हा तुम्ही ते वाचता तेव्हा उपयुक्त अॅब्स्ट्रॅक्शन्स स्पष्टता आणतात आणि कोडच्या काही ओळींसह तुम्ही बरेच काही करू शकता,” स्वीडनमधील जावा तज्ञ जोनास मेलिन म्हणतात . जावाचे कोणते पैलू तुम्हाला समजण्यास सर्वात कठीण वाटले किंवा काही काळ अडकले होते? टिप्पण्यांमध्ये आपले अनुभव सामायिक करा.
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION