जर तुम्ही Java SE शिकणे आधीच पूर्ण केले असेल (किंवा जवळ असाल), तर जावा डेव्हलपरच्या व्यवसायावर विजय मिळवण्याच्या तुमच्या पुढील चरणांबद्दल विचार करण्याची वेळ आली आहे. भाग 1. स्प्रिंग आणि JavaEE शिकण्यापूर्वी तुम्हाला काय माहित असणे आवश्यक आहे - 1 एकीकडे, तुम्हाला आधीपासून Java ची चांगली समज आहे: तुम्हाला IDE सह कसे कार्य करायचे, प्रोग्राम्स कसे लिहायचे आणि बरेच काही माहित आहे. पण तुम्ही तुमच्या प्रोग्राम्सचे पुढे काय करावे? तुम्ही त्यांना अजून थंड कसे करता आणि "त्यांना जगावर मुक्त कसे कराल"? हे स्पष्ट होत आहे की एंटरप्राइझ तंत्रज्ञानाचा अभ्यास करण्याची वेळ आली आहे. आणि आता मजा सुरू होते. आपण कोणत्या तंत्रज्ञानाच्या स्टॅकसह प्रारंभ करायचे ठरवले याने काही फरक पडत नाही. JavaEE असो किंवा स्प्रिंग असो, तुम्हाला अनेक गोष्टी भेटण्याची शक्यता आहे जी तुमच्या आकलनाच्या पलीकडे आहे. Java मूलतत्त्वे आणि प्रगत तंत्रज्ञान यांच्यामध्ये ज्ञानाचे एक मध्यवर्ती पाऊल उरले आहे जे तुम्ही विपुल दस्तऐवज वाचता तेव्हा तुमचे आत्म-नियंत्रण आणि आत्मविश्वास टिकवून ठेवण्यासाठी उचलले जाणे आवश्यक आहे. त्यामुळे,तुम्हाला JavaEE किंवा Spring च्या पुढील अभ्यासासाठी आवश्यक असलेले किमान सैद्धांतिक ज्ञान देणे आहे. ही सामग्री 7 भागांमध्ये विभागली आहे:
  1. आम्ही नेटवर्किंगबद्दल थोडे बोलू.
  2. आम्ही क्लायंट-सर्व्हर आणि तीन-स्तरीय आर्किटेक्चरचे परीक्षण करू.
  3. आम्ही HTTP/HTTPS प्रोटोकॉल एक्सप्लोर करू.
  4. Maven बद्दल तुम्हाला जे काही माहित असणे आवश्यक आहे ते आम्ही जाणून घेऊ.
  5. आम्ही लॉगिंगबद्दल बोलत आहोत.
  6. सर्वलेट कंटेनर बद्दल.
  7. आणि शेवटी, MVC बद्दल.

भाग 1. आम्ही नेटवर्किंगबद्दल थोडे बोलू.

प्रत्येक सोशल नेटवर्क, वेब सेवा आणि वेब अॅप, इन्स्टंट मेसेंजर आणि साधी वेबसाइट कशावर तयार केली आहे - नेटवर्क ( लेखांच्या या मालिकेच्या संदर्भात, "नेटवर्क" या शब्दाचा अर्थ इंटरनेट असा होतो ) याबद्दल बोलून सर्वात महत्त्वाच्या गोष्टींपासून सुरुवात करूया. . नेटवर्कमध्ये मोठ्या संख्येने संगणक आहेत: ते एकमेकांशी जोडलेले आहेत आणि संवाद साधण्यास सक्षम आहेत. ते हे कसे करतात हे समजून घेणे महत्त्वाचे आहे, कारण वेब ऍप्लिकेशन्स एका संगणकावरून दुसऱ्या संगणकावर माहिती पाठवतात.

OSI मॉडेल

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

    हा थर आपल्याला रुचत नाही.

  2. डेटा लिंक स्तर — हा स्तर नेटवर्क नोड्समध्ये डेटा प्रसारित करण्यासाठी आणि भौतिक वस्तूंसाठी डेटा ट्रान्समिशन चॅनेल तयार करण्यासाठी जबाबदार आहे.

    तुम्हाला डेटा लिंक्स स्थापित करणाऱ्या हार्डवेअरसाठी फर्मवेअर लिहायचे नसेल तर हा स्तर आम्हाला रुचणार नाही.

  3. नेटवर्क लेयर — हा स्तर वैयक्तिक नेटवर्क वापरकर्त्यांचे पत्ते आणि त्यांना जाण्याचे मार्ग निश्चित करण्यासाठी आहे. या लेयरच्या तपशीलांबद्दल, म्हणजे, नेटवर्क पत्त्यांबद्दल अधिक जाणून घेणे महत्त्वाचे आहे.

    नेटवर्क पत्ते एका विशेष प्रोटोकॉलद्वारे परिभाषित केले जातात: सर्वात सामान्य म्हणजे IPv4 (इंटरनेट प्रोटोकॉल आवृत्ती 4). हा प्रोटोकॉल आहे जो वेब प्रोग्रामरला दुसर्‍या नेटवर्क वापरकर्त्याशी संपर्क साधण्यासाठी वापरणे आवश्यक आहे.

    IPv4 पत्त्यामध्ये पूर्णविरामांद्वारे विभक्त केलेली चार बाइट मूल्ये असतात, उदाहरणार्थ: 192.0.2.235. तुम्ही हे लक्षात ठेवावे की ही मूल्ये बाइट्स आहेत, याचा अर्थ ती 0..255 च्या श्रेणीत आहेत.

    आयपी पत्ते, यामधून, वर्गांमध्ये विभागलेले आहेत. आम्ही फक्त स्वतःला संख्यांचे एक सुंदर संयोजन नियुक्त करू शकत नाही, परंतु आम्ही येथे फार खोल जाणार नाही. हे समजून घेणे पुरेसे आहे की IP पत्ता विशिष्टपणे नेटवर्क वापरकर्त्यास ओळखतो आणि त्या वापरकर्त्याशी संपर्क साधण्यासाठी वापरला जाऊ शकतो.

  4. ट्रान्सपोर्ट लेयर - हा लेयर अॅड्रेसीला माहिती वितरीत करण्यासाठी हाताळतो. हे पूर्ण करण्यासाठी विविध प्रोटोकॉल वापरले जातात. सध्या, आम्हाला त्यांच्यात रस नाही. आम्हाला या स्तरावर दिसणार्‍या पोर्टच्या संकल्पनेत जास्त रस आहे .

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

    पोर्ट हा 0 ते 65535 या श्रेणीतील एक क्रमांक आहे. तो कोलन नंतर IP पत्त्यावर जोडला जातो: 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 सर्व्हरद्वारे रूपांतरित केले गेले. येथे काय आहे ते अधिक चांगले पाहू या.

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. Maven भाग 5 च्या मूलभूत गोष्टी. सर्व्हलेट्स आणि Java सर्व्हलेट API. एक साधा वेब ऍप्लिकेशन लिहिणे भाग 6. सर्व्हलेट कंटेनर भाग 7. MVC (मॉडेल-व्ह्यू-कंट्रोलर) नमुना सादर करत आहे