CodeGym /مدونة جافا /Random-AR /الجزء 1. ما تحتاج إلى معرفته قبل تعلم Spring وJavaEE
John Squirrels
مستوى
San Francisco

الجزء 1. ما تحتاج إلى معرفته قبل تعلم Spring وJavaEE

نشرت في المجموعة
إذا كنت قد انتهيت بالفعل (أو كنت قريبًا من) من تعلم Java SE، فقد حان الوقت للتفكير في خطواتك التالية في غزو مهنة مطور Java. الجزء 1. ما تحتاج إلى معرفته قبل تعلم Spring وJavaEE - 1 من ناحية، لديك بالفعل فهم جيد لـ Java: فأنت تعرف كيفية العمل مع IDE، وكتابة البرامج، وغير ذلك الكثير. ولكن ماذا يجب عليك فعله بعد ذلك مع برامجك؟ كيف تجعلها أكثر برودة و"تطلق العنان لها في العالم"؟ لقد أصبح من الواضح أن الوقت قد حان لدراسة تقنيات المؤسسات. والآن تبدأ المتعة. لا يهم مجموعة التكنولوجيا التي قررت البدء بها. سواء أكان الأمر يتعلق بـ JavaEE أو Spring، فمن المحتمل أن تصادف عددًا كبيرًا من الأشياء التي هي بعيدة جدًا عن فهمك. بين أساسيات Java والتقنيات المتقدمة، تظل هناك خطوة وسيطة في المعرفة يجب اتخاذها من أجل الاحتفاظ بما تبقى من ضبط النفس والثقة بالنفس أثناء قراءة الوثائق الضخمة. لذلك، فإن الغرض من هذه السلسلة من المقالات هو إعطائك الحد الأدنى من المعرفة النظرية اللازمة لمواصلة دراستك لـ JavaEE أو Spring. هذه المادة مقسمة إلى 7 أجزاء:
  1. سنتحدث قليلا عن الشبكات.
  2. سنقوم بفحص بنية خادم العميل والبنية ثلاثية المستويات.
  3. سوف نستكشف بروتوكولات HTTP/HTTPS.
  4. سنتعلم كل ما تحتاج لمعرفته حول Maven.
  5. نحن نتحدث عن التسجيل.
  6. حول حاويات servlet.
  7. وأخيرا، حول MVC.

الجزء الأول. سنتحدث قليلاً عن التواصل.

لنبدأ بالأمر الأكثر أهمية من خلال الحديث عن ما تم بناء كل شبكة اجتماعية وخدمة ويب وتطبيق ويب ومراسلة فورية وموقع ويب بسيط - الشبكة ( في سياق هذه السلسلة من المقالات، مصطلح "شبكة" يعني الإنترنت ) . تتكون الشبكة من عدد كبير من أجهزة الكمبيوتر: فهي مترابطة وقادرة على التواصل. ومن المهم أن نفهم كيف يقومون بذلك، لأن تطبيقات الويب ترسل المعلومات من كمبيوتر إلى آخر.

نموذج OSI

ينشئ نموذج الاتصال البيني للأنظمة المفتوحة (OSI) نهجًا متدرجًا لبناء الشبكة. إنه يوضح بوضوح كيف وفي أي طبقة يمكن لكيانات نفس الشبكة أن تتفاعل مع بعضها البعض. إجمالاً، هذا النموذج يحتوي على 7 طبقات:
7 طلب
6 عرض تقديمي
5 حصة
4 ينقل
3 شبكة
2 وصلة البيانات
1 بدني
إن تقسيم النموذج إلى طبقات من التجريد يسمح للمطورين الذين يعملون على طبقة النقل، على سبيل المثال، بعدم الحاجة إلى التفكير في تفاصيل التنفيذ على مستوى الشبكة وطبقات الجلسة. ويستخدم هذا النهج أيضا في البرمجة. دعونا نفكر في جميع طبقات نموذج OSI، ونحدد أي منها يهمنا:
  1. الطبقة المادية – تتناول هذه الطبقة قوانين الفيزياء وكيفية استخدامها لأغراضنا. على سبيل المثال، إنشاء الكابلات وتمديدها إلى الكيانات الموجودة في الشبكة.

    هذه الطبقة لا تهمنا.

  2. طبقة ربط البيانات - هذه الطبقة مسؤولة عن نقل البيانات إلى عقد الشبكة وإنشاء قنوات نقل البيانات للأشياء المادية.

    هذه الطبقة لا تهمنا إلا إذا كنت تريد كتابة البرامج الثابتة للأجهزة التي تنشئ روابط البيانات.

  3. طبقة الشبكة - هذه الطبقة مخصصة لتحديد عناوين مستخدمي الشبكة الفردية والمسارات المؤدية إليهم. هناك قيمة في معرفة المزيد عن تفاصيل هذه الطبقة، وهي عناوين الشبكة.

    يتم تعريف عناوين الشبكة بواسطة بروتوكول خاص: الأكثر شيوعًا هو IPv4 (بروتوكول الإنترنت الإصدار 4). هذا هو البروتوكول الذي يحتاج مبرمج الويب إلى استخدامه للاتصال بمستخدم شبكة آخر.

    يتكون عنوان IPv4 من أربع قيم بايت مفصولة بنقاط، على سبيل المثال: 192.0.2.235. يجب أن تتذكر أن هذه القيم هي بايت، مما يعني أنها تقع ضمن النطاق 0..255.

    وتنقسم عناوين IP بدورها إلى فئات. لا يمكننا ببساطة أن نخصص لأنفسنا مجموعة جميلة من الأرقام، لكننا لن نتعمق كثيرًا هنا. يكفي أن نفهم أن عنوان IP يحدد مستخدم الشبكة بشكل فريد ويمكن استخدامه للاتصال بهذا المستخدم.

  4. طبقة النقل - تعالج هذه الطبقة تسليم المعلومات إلى المرسل إليه. يتم استخدام بروتوكولات مختلفة لتحقيق ذلك. في الوقت الحالي، نحن لسنا مهتمين بهم. نحن مهتمون أكثر بمفهوم المنفذ الذي يظهر في هذه الطبقة.

    المنافذ مسؤولة عن تحديد تطبيق معين على جهاز الكمبيوتر. على سبيل المثال، لنفترض أنك تكتب تطبيق دردشة بلغة Java، وتثبته على جهازي كمبيوتر، وتريد إرسال رسالة إلى صديقك. يتم تجميع رسالتك وإرسالها إلى عنوان IP محدد وتسليمها إلى صديقك، لكن جهاز الكمبيوتر الخاص به لا يعرف ما يجب فعله بالمعلومات المستلمة، لأنه لا يفهم التطبيق الذي يجب أن يعالج رسالتك. عندما تتواصل كيانات الشبكة، يتم استخدام المنافذ للإشارة إلى التطبيق الذي يجب أن يعالج المعلومات.

    المنفذ عبارة عن رقم يقع في النطاق من 0 إلى 65535. ويتم إضافته إلى عنوان IP بعد نقطتين: 192.0.2.235:8080 . لكن لا يمكنك استخدام كافة المنافذ الموجودة في النطاق المحدد: فبعضها محجوز لنظام التشغيل، والبعض الآخر يُستخدم عادةً لأغراض محددة. لن نخوض في أغراض المنافذ المختلفة. في الوقت الحالي، يكفي أن نفهم دورهم في عملية الاتصال على الشبكة.

  5. طبقة الجلسة - تقوم هذه الطبقة بإنشاء جلسات الاتصال وإدارتها. في هذه الطبقة، يصبح من الممكن للتطبيقات أن تتفاعل، وترسل طلبات على مستوى الخدمة. ما نحتاج إلى معرفته هو أنه في هذه الطبقة يتم فتح جلسة بين مستخدمين، وعلينا العمل مع الجلسة.

    الجلسة هي كيان يتم إنشاؤه عند إنشاء اتصال بين مستخدمين. يمكنه تخزين المعلومات الضرورية عن المستخدم وعن تاريخ التفاعل مع المستخدم. من التفاصيل المهمة أنه عندما يتوقف تبادل المعلومات، لا تختفي الجلسة. وبدلاً من ذلك، فإنه يحتفظ بحالته لفترة زمنية محددة، حتى يتمكن المستخدمون من الاستمرار في تبادل المعلومات بعد فترة انقطاع.

    إذا كان التطبيق يتصل بعدة مستخدمين في نفس الوقت، فسيتم إنشاء عدد مماثل من الاتصالات (وبالتالي الجلسات). تحتوي كل جلسة على معرف فريد (ID) ، والذي يسمح للتطبيق بالتمييز بين المستخدمين الذين يتواصل معهم.

  6. طبقة العرض - هذه الطبقة مسؤولة عن تشفير/فك تشفير البيانات. من الواضح أننا إذا أردنا إرسال السلسلة "Hello web" إلى مستخدم آخر، فسيتم تحويلها أولاً إلى رمز ثنائي (مشفر كـ)، وبعد ذلك فقط يتم إرسالها. عند الوصول إلى المستلم، يتم تحويل الرسالة مرة أخرى (فك تشفيرها)، ويمكن للمستلم رؤية السلسلة الأصلية. تتم هذه الإجراءات في طبقة العرض.

  7. طبقة التطبيق هي الطبقة الأكثر إثارة للاهتمام بالنسبة لنا. يسمح للتطبيقات بالتواصل مع الشبكة. في هذه الطبقة، نستقبل ونرسل الرسائل ونقدم طلبات إلى الخدمات وقواعد البيانات البعيدة.

    هناك العديد من البروتوكولات المستخدمة في هذه الطبقة: POP3، FTP، SMTP، XMPP، RDP، SIP، TELNET وبالطبع HTTP/HTTPS. البروتوكول هو اتفاق عالمي نلتزم به عند التواصل. سنقدم بالتأكيد مناقشة تفصيلية منفصلة حول HTTP/HTTPS.

الجزء 1. ما تحتاج إلى معرفته قبل تعلم Spring وJavaEE - 2لا نحتاج إلى معرفة كيفية عمل كل طبقة من النموذج. الشيء الرئيسي هو فهم المبادئ الكامنة وراء تشغيل العناصر التي سيتعين علينا العمل بها عند كتابة تطبيقات الويب، وهي:
  • عنوان IP — عنوان المستخدم في الشبكة
  • المنفذ — عنوان تطبيق مستخدم محدد
  • الجلسة — كيان موجود طوال فترة الاتصال بين مستخدمين
  • بروتوكولات التطبيق (HTTP/HTTPS) - هذه هي القواعد التي سنتبعها عند إنشاء الرسائل وإرسالها.
عندما نزور أحد المتاجر عبر الإنترنت، على سبيل المثال، نشير إلى عنوانه والمنفذ. عند زيارتنا الأولى، يتم إنشاء جلسة. يمكن للمتجر تسجيل المعلومات في الجلسة. على سبيل المثال، قد يقوم المتجر بحفظ معلومات حول العناصر التي تركناها في عربة التسوق. إذا أغلقنا علامة التبويب بالمتجر عبر الإنترنت ثم عدنا إليه لاحقًا، فستظل العناصر الخاصة بنا في سلة التسوق لأنه تم حفظها في الجلسة. وبطبيعة الحال، جميع المعلومات التي نتلقاها من المتجر نتلقاها عبر بروتوكول HTTP/HTTPS، ويعرف متصفحنا كيفية معالجتها. قد تعترض قائلة أنك لم تقم مطلقًا بإدخال العنوان والمنفذ في المتصفح، وستكون على حق جزئيًا. ما فعلته هو إدخال اسم المجال، الذي تم تحويله بواسطة خادم DNS. دعونا نلقي نظرة أفضل على ما هو هنا.

DNS (نظام اسم المجال)

كما تعلمنا بالفعل، كل مستخدم للشبكة لديه عنوان فريد. إذا كنا نتحدث عن التطبيق، فسيكون عنوانه الفريد هو IPv4-address:port . إذا كنت تعرف هذا العنوان، يمكنك الوصول مباشرة إلى التطبيق. تخيل أننا كتبنا تطبيق ويب يعرض متوسط ​​درجة حرارة الهواء في جميع البلدان في الوقت الفعلي. قمنا بنشره على خادم بعنوان 226.69.237.119، على المنفذ 8080. لكي يتمكن المستخدم من تلقي المعلومات منا، يجب على المستخدم إدخال 5 أرقام في المتصفح: 226.69.237.119:8080. لا يحب الناس حفظ مجموعات من الأرقام: فالكثير منا لا يستطيع تذكر أكثر من رقمين للهاتف. ولهذا السبب تم اختراع نظام اسم النطاق . يمكننا إنشاء "اسم مستعار" لعنواننا، على سبيل المثال، world-temperature.com. بدلاً من البحث عنا باستخدام عنوان يتكون من خمسة أرقام يصعب تذكرها، يمكن للمستخدم إدخال اسم النطاق الخاص بنا في شريط العناوين بالمتصفح. توجد خوادم DNS تقوم بتعيين أسماء النطاقات إلى عناوين حقيقية. على سبيل المثال، عندما يقوم مستخدم بإدخال codegym.cc في المتصفح، يتم إرسال طلبه إلى خادم DNS، والذي يحوله إلى العنوان الفعلي. الجزء 1. ما تحتاج إلى معرفته قبل تعلم Spring وJavaEE - 4من المهم بالنسبة لنا أن نفهم ذلك، لأن تطبيقاتنا ستتصل بالخدمات البعيدة عن طريق أسماء النطاقات والعناوين الحقيقية. علينا أن نفهم أنه في كلتا الحالتين الخدمات هي نفسها. هذا كل شيء في الوقت الراهن! في هذه المقالة، نظرنا إلى أساسيات الشبكات، والتي ستكون مفيدة عندما تبدأ في تعلم برمجة الويب. في المرة القادمة سنلقي نظرة على ماهية بنية خادم العميل وسبب أهمية فهمها. الجزء 2. لنتحدث قليلاً عن هندسة البرمجيات الجزء 3. HTTP/HTTPS الجزء 4. أساسيات Maven الجزء 5. Servlets وJava Servlet API. كتابة تطبيق ويب بسيط الجزء 6. حاويات Servlet الجزء 7. تقديم نمط MVC (Model-View-Controller)
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION