यदि आप जावा एसई सीखना पहले से ही समाप्त कर चुके हैं (या करीब हैं), तो जावा डेवलपर के पेशे को जीतने में अपने अगले कदमों के बारे में सोचने का समय आ गया है। भाग 1. स्प्रिंग और JavaEE सीखने से पहले आपको क्या जानना चाहिए - 1 एक ओर, आप पहले से ही जावा की अच्छी समझ रखते हैं: आप जानते हैं कि आईडीई के साथ कैसे काम करना है, प्रोग्राम कैसे लिखना है, और भी बहुत कुछ। लेकिन आपको अपने कार्यक्रमों के साथ आगे क्या करना चाहिए? आप उन्हें अभी भी ठंडा कैसे बनाते हैं और "उन्हें दुनिया में कैसे उजागर करते हैं"? यह स्पष्ट होता जा रहा है कि उद्यम प्रौद्योगिकियों का अध्ययन करने का समय आ गया है। और अब मजा शुरू होता है। इससे कोई फर्क नहीं पड़ता कि आप किस तकनीकी स्टैक से शुरू करने का निर्णय लेते हैं। चाहे वह JavaEE हो या स्प्रिंग, आपको बहुत सी ऐसी चीजें मिलने की संभावना है जो आपकी समझ से बहुत परे हैं। जावा बेसिक्स और उन्नत तकनीकों के बीच ज्ञान में एक मध्यवर्ती कदम रहता है जिसे आपके आत्म-नियंत्रण और आत्मविश्वास को बनाए रखने के लिए लिया जाना चाहिए क्योंकि आप बड़े पैमाने पर दस्तावेज़ पढ़ते हैं। इसलिए,आपको JavaEE या स्प्रिंग के आगे के अध्ययन के लिए आवश्यक न्यूनतम सैद्धांतिक ज्ञान देना है। इस सामग्री को 7 भागों में बांटा गया है:
  1. हम नेटवर्किंग के बारे में थोड़ी बात करेंगे।
  2. हम क्लाइंट-सर्वर और त्रि-स्तरीय आर्किटेक्चर की जांच करेंगे।
  3. हम HTTP/HTTPS प्रोटोकॉल की खोज करेंगे।
  4. हम मावेन के बारे में वह सब कुछ जानेंगे जो आपको जानने की जरूरत है।
  5. हम लॉगिंग के बारे में बात कर रहे हैं।
  6. सर्वलेट कंटेनर के बारे में।
  7. और अंत में, एमवीसी के बारे में।

भाग 1। हम नेटवर्किंग के बारे में थोड़ी बात करेंगे।

प्रत्येक सामाजिक नेटवर्क, वेब सेवा और वेब ऐप, इंस्टेंट मैसेंजर और साधारण वेबसाइट किस पर बनी है — नेटवर्क ( लेखों की इस श्रृंखला के संदर्भ में, "नेटवर्क" शब्द का अर्थ इंटरनेट है ) के बारे में बात करके सबसे महत्वपूर्ण बातों से शुरू करते हैं। . नेटवर्क में बड़ी संख्या में कंप्यूटर होते हैं: वे आपस में जुड़े होते हैं और संवाद करने में सक्षम होते हैं। यह समझना महत्वपूर्ण है कि वे ऐसा कैसे करते हैं, क्योंकि वेब एप्लिकेशन एक कंप्यूटर से दूसरे कंप्यूटर पर जानकारी भेजते हैं।

ओ एस आई मॉडल

ओपन सिस्टम्स इंटरकनेक्शन (ओएसआई) मॉडल नेटवर्क बनाने के लिए एक स्तरीय दृष्टिकोण बनाता है। यह स्पष्ट रूप से दिखाता है कि कैसे और किस स्तर पर एक ही नेटवर्क की इकाइयां एक दूसरे के साथ बातचीत कर सकती हैं। कुल मिलाकर, इस मॉडल में 7 परतें हैं:
7 आवेदन
6 प्रस्तुति
5 सत्र
4 परिवहन
3 नेटवर्क
2 आंकड़ा कड़ी
1 भौतिक
अमूर्त की परतों में मॉडल को तोड़ने से डेवलपर्स को परिवहन परत पर काम करने की अनुमति मिलती है, उदाहरण के लिए, नेटवर्क और सत्र परतों के स्तर पर कार्यान्वयन विवरण के बारे में सोचने की ज़रूरत नहीं है। इस तरीके का प्रयोग प्रोग्रामिंग में भी किया जाता है। आइए OSI मॉडल की सभी परतों पर विचार करें और निर्धारित करें कि कौन सी परतें हमारे लिए रुचिकर हैं:
  1. भौतिक परत - यह परत भौतिकी के नियमों और हमारे उद्देश्यों के लिए उनका उपयोग करने के तरीके से संबंधित है। उदाहरण के लिए, केबल बनाना और उन्हें नेटवर्क में संस्थाओं के लिए बिछाना।

    यह परत हमें रूचि नहीं देती है।

  2. डेटा लिंक लेयर - यह लेयर नेटवर्क नोड्स को डेटा ट्रांसमिट करने और भौतिक वस्तुओं के लिए डेटा ट्रांसमिशन चैनल बनाने के लिए जिम्मेदार है।

    जब तक आप डेटा लिंक स्थापित करने वाले हार्डवेयर के लिए फ़र्मवेयर नहीं लिखना चाहते हैं, तब तक यह परत हमें रूचि नहीं देती है।

  3. नेटवर्क परत — यह परत अलग-अलग नेटवर्क उपयोगकर्ताओं के पते और उनके लिए मार्ग निर्धारित करने के लिए है। इस परत के विवरण, अर्थात् नेटवर्क पतों के बारे में अधिक जानने में मूल्य है।

    नेटवर्क पतों को एक विशेष प्रोटोकॉल द्वारा परिभाषित किया जाता है: सबसे आम IPv4 (इंटरनेट प्रोटोकॉल संस्करण 4) है। यह वह प्रोटोकॉल है जिसे एक वेब प्रोग्रामर को दूसरे नेटवर्क उपयोगकर्ता से संपर्क करने के लिए उपयोग करने की आवश्यकता होती है।

    एक IPv4 पते में अवधियों द्वारा अलग किए गए चार बाइट मान होते हैं, उदाहरण के लिए: 192.0.2.235। आपको याद रखना चाहिए कि ये मान बाइट्स हैं, जिसका अर्थ है कि वे 0..255 की सीमा के भीतर हैं।

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

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

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

    पोर्ट 0 से 65535 की सीमा में एक संख्या है। यह एक कॉलन के बाद आईपी पते में जोड़ा जाता है: 192.0.2.235:8080 । लेकिन आप निर्दिष्ट सीमा में सभी बंदरगाहों का उपयोग नहीं कर सकते हैं: उनमें से कुछ ऑपरेटिंग सिस्टम के लिए आरक्षित हैं, अन्य विशिष्ट उद्देश्यों के लिए सामान्य रूप से उपयोग किए जाते हैं। हम विभिन्न बंदरगाहों के उद्देश्यों में तल्लीन नहीं करेंगे। अभी के लिए, नेटवर्क पर संचार की प्रक्रिया में उनकी भूमिका को समझना काफी है।

  5. सत्र परत - यह परत संचार सत्र बनाती और प्रबंधित करती है। इस स्तर पर, एप्लिकेशन के लिए सेवा-स्तर के अनुरोधों को भेजना, बातचीत करना संभव हो जाता है। हमें यह जानने की आवश्यकता है कि इस स्तर पर दो उपयोगकर्ताओं के बीच एक सत्र खोला जाता है और हमें सत्र के साथ काम करना होता है।

    एक सत्र एक इकाई है जिसे दो उपयोगकर्ताओं के बीच एक कनेक्शन स्थापित होने पर बनाया जाता है। यह एक उपयोगकर्ता के बारे में और उपयोगकर्ता के साथ बातचीत के इतिहास के बारे में आवश्यक जानकारी संग्रहीत कर सकता है। एक महत्वपूर्ण विवरण यह है कि जब सूचनाओं का आदान-प्रदान बंद हो जाता है, तो सत्र गायब नहीं होता है। इसके बजाय, यह एक निश्चित अवधि के लिए अपनी स्थिति को बनाए रखता है, इसलिए उपयोगकर्ता एक ब्रेक के बाद सूचनाओं का आदान-प्रदान जारी रख सकते हैं।

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

  6. प्रेजेंटेशन लेयर - यह लेयर डेटा को एनकोडिंग/डिकोड करने के लिए जिम्मेदार है। जाहिर है, अगर हमें किसी अन्य उपयोगकर्ता को "हैलो वेब" स्ट्रिंग भेजने की आवश्यकता है, तो इसे पहले (एन्कोडेड) बाइनरी कोड में परिवर्तित किया जाता है, और उसके बाद ही इसे भेजा जाता है। प्राप्तकर्ता तक पहुंचने पर, संदेश वापस (डिकोड) में परिवर्तित हो जाता है, और प्राप्तकर्ता मूल स्ट्रिंग देख सकता है। ये क्रियाएं प्रेजेंटेशन लेयर पर होती हैं।

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

    इस परत पर कई प्रोटोकॉल का उपयोग किया जाता है: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET और निश्चित रूप से HTTP/HTTPS। एक प्रोटोकॉल एक सार्वभौमिक समझौता है जिसका हम संचार करते समय पालन करते हैं। हम निश्चित रूप से HTTP/HTTPS की एक अलग विस्तृत चर्चा प्रदान करेंगे।

भाग 1. स्प्रिंग और JavaEE - 2 सीखने से पहले आपको क्या जानना चाहिएहमें यह जानने की जरूरत नहीं है कि मॉडल की हर परत कैसे काम करती है। मुख्य बात उन तत्वों के संचालन के सिद्धांतों को समझना है जिनके साथ हमें वेब एप्लिकेशन लिखते समय काम करना होगा, अर्थात्:
  • IP पता — नेटवर्क में उपयोगकर्ता का पता
  • पोर्ट — विशिष्ट उपयोक्ता के आवेदन का पता
  • सत्र — एक इकाई जो दो उपयोगकर्ताओं के बीच संचार की अवधि के दौरान मौजूद रहती है
  • एप्लिकेशन प्रोटोकॉल (HTTP/HTTPS) — ये ऐसे नियम हैं जिनका हम संदेश लिखते और भेजते समय पालन करेंगे।
जब हम किसी ऑनलाइन स्टोर पर जाते हैं, उदाहरण के लिए, हम उसका पता और पोर्ट बताते हैं। हमारी पहली यात्रा पर, एक सत्र बनाया जाता है। स्टोर सत्र में जानकारी रिकॉर्ड कर सकता है। उदाहरण के लिए, स्टोर उन वस्तुओं के बारे में जानकारी सहेज सकता है जिन्हें हमने शॉपिंग कार्ट में छोड़ा था। यदि हम ऑनलाइन स्टोर वाले टैब को बंद कर देते हैं और बाद में उसमें वापस जाते हैं, तो हमारे आइटम अभी भी कार्ट में रहेंगे क्योंकि वे सत्र में सहेजे जाते हैं। बेशक, सभी जानकारी जो हम स्टोर से प्राप्त करते हैं, हम HTTP/HTTPS प्रोटोकॉल के माध्यम से प्राप्त करते हैं, और हमारा ब्राउज़र जानता है कि इसे कैसे प्रोसेस करना है। आप यह कहते हुए आपत्ति कर सकते हैं कि आपने ब्राउज़र में पता और पोर्ट कभी दर्ज नहीं किया, और आप आंशिक रूप से सही होंगे। आपने जो किया वह डोमेन नाम दर्ज करना था, जिसे एक DNS सर्वर द्वारा परिवर्तित किया गया था। आइए देखें कि यहां क्या है।

डीएनएस (डोमेन नाम सिस्टम)

जैसा कि हम पहले ही जान चुके हैं, प्रत्येक नेटवर्क उपयोगकर्ता का एक विशिष्ट पता होता है। यदि हम एप्लिकेशन के बारे में बात कर रहे हैं, तो इसका विशिष्ट पता IPv4-address:port होगा । यदि आप इस पते को जानते हैं, तो आप सीधे आवेदन तक पहुंच सकते हैं। कल्पना कीजिए कि हमने एक वेब एप्लिकेशन लिखा है जो वास्तविक समय में सभी देशों में औसत हवा का तापमान प्रदर्शित करता है। हमने इसे पोर्ट 8080 पर 226.69.237.119 पते वाले सर्वर पर तैनात किया है। हमसे जानकारी प्राप्त करने में सक्षम होने के लिए, उपयोगकर्ता को ब्राउज़र में 5 नंबर दर्ज करने होंगे: 226.69.237.119:8080। लोग संख्याओं के सेट को याद रखना पसंद नहीं करते: हम में से कई लोग दो से अधिक फ़ोन नंबर याद नहीं रख पाते हैं। इसलिए डोमेन नेम सिस्टमआविष्कार किया गया था। हम अपने पते के लिए "उपनाम" बना सकते हैं, उदाहरण के लिए, world-temperature.com। पाँच कठिन-से-याद संख्याओं वाले पते का उपयोग करके हमें खोजने के बजाय, उपयोगकर्ता ब्राउज़र के एड्रेस बार में हमारा डोमेन नाम दर्ज कर सकता है। ऐसे DNS सर्वर हैं जो डोमेन नामों को वास्तविक पतों पर मैप करते हैं। उदाहरण के लिए, जब कोई उपयोगकर्ता किसी ब्राउज़र में codegym.cc में प्रवेश करता है, तो उसका अनुरोध DNS सर्वर को भेजा जाता है, जो इसे वास्तविक पते में बदल देता है। भाग 1. स्प्रिंग और JavaEE - 4 सीखने से पहले आपको क्या जानना चाहिएहमारे लिए यह समझना महत्वपूर्ण है, क्योंकि हमारे एप्लिकेशन दूरस्थ सेवाओं को डोमेन नाम और वास्तविक पते दोनों से कॉल करेंगे। हमें यह समझने की जरूरत है कि दोनों ही मामलों में सेवाएं समान हैं। अभी के लिए बस इतना ही! इस लेख में, हमने नेटवर्किंग की मूल बातें देखीं, जो वेब प्रोग्रामिंग सीखना शुरू करते ही काम आएंगी।अगली बार हम देखेंगे कि क्लाइंट-सर्वर आर्किटेक्चर क्या है और इसे समझना इतना महत्वपूर्ण क्यों है। भाग 2. सॉफ्टवेयर आर्किटेक्चर के बारे में थोड़ी बात करते हैं भाग 3. HTTP/HTTPS भाग 4. मावेन भाग 5 की मूल बातें। सर्वलेट्स और जावा सर्वलेट एपीआई। एक साधारण वेब एप्लिकेशन लिखना भाग 6. सर्वलेट कंटेनर भाग 7. एमवीसी (मॉडल-व्यू-कंट्रोलर) पैटर्न का परिचय