JavaRush /בלוג Java /Random-HE /חלק 1. מה שאתה צריך לדעת לפני לימוד Spring ו-JavaEE

חלק 1. מה שאתה צריך לדעת לפני לימוד Spring ו-JavaEE

פורסם בקבוצה
אם כבר סיימתם לימודי Java SE או שאתם קרובים לזה, הגיע הזמן לחשוב על השלבים הבאים בכיבוש המקצוע של מפתח Java. חלק 1. מה שאתה צריך לדעת לפני לימוד אביב ו-JavaEE - 1מצד אחד, יש לך כבר הבנה טובה של Java: אתה יודע לעבוד עם ה-IDE, לכתוב תוכניות ועוד הרבה יותר. אבל מה עלינו לעשות הלאה איתם, התוכניות? איך להפוך אותם למגניבים יותר ו"לשחרר אותם לעולם"? ברור שהגיע הזמן להתחיל ללמוד טכנולוגיות ארגוניות. וכאן מתחיל הכיף. זה לא משנה מאיזו ערימת טכנולוגיה תחליט להתחיל. בין אם זה JavaEE או Spring, סביר להניח שתתקלו בהרבה דברים שעדיין מעבר להבנתכם. בין היסודות של ג'אווה לטכנולוגיות מתקדמות, עדיין ישנה רמת ידע בינונית שתעזור לכם לא לאבד את שאריות השליטה העצמית והביטחון העצמי בעת קריאת תיעוד רב עוצמה. לכן, מטרת סדרת מאמרים זו היא לתת לך את הידע התיאורטי המינימלי הדרוש ללימוד נוסף של JavaEE או Spring. כל החומר מחולק ל-7 חלקים:
  1. בואו נדבר קצת על הרשת.
  2. הבה נשקול את המבנה של שרת-לקוח וארכיטקטורת שלוש רמות.
  3. בואו נסתכל על פרוטוקולי HTTP/HTTPS.
  4. בואו ללמוד את כל מה שאתם צריכים לדעת על Maven.
  5. בואו נדבר על servlets.
  6. מיכלי סרבל.
  7. ולבסוף - על MVC.

חלק 1. בואו נדבר קצת על הרשת

נתחיל מהדבר החשוב ביותר ונדבר על הבסיס שעליו בנויים כל הרשתות החברתיות, שירותי האינטרנט והאפליקציות, המסנג'רים והאתרים הפשוטים - על הרשת ( בהקשר של סדרת מאמרים זו, המונח "רשת" פירושו אינטרנט גלובלי ). הרשת מורכבת ממספר עצום של מחשבים: הם מחוברים זה לזה ומסוגלים לתקשר. חשוב להבין איך הם עושים זאת, כי יישומי אינטרנט הם בדיוק מה שהם עושים כדי להעביר מידע ממחשב אחד למשנהו.

דגם רשת OSI

מודל OSI (Open Systems Interconnection) יוצר גישה שכבתית לבניית רשת. זה מראה בבירור כיצד ובאיזה רמה חברים באותה רשת יכולים לקיים אינטראקציה זה עם זה. בסך הכל, דגם זה מכיל 7 רמות:
7 הוחל
6 יִצוּג
5 מוֹשָׁב
4 תַחְבּוּרָה
3 רֶשֶׁת
2 בִּיב
1 גוּפָנִי
הפירוק לשכבות הפשטה מאפשר למומחים שעובדים, למשל, על שכבת התעבורה, לא לחשוב על הפרטים של הטמעת הרשת בשכבות הרשת וההפעלה. גישה זו משמשת גם בתכנות. בואו נסתכל על כל השכבות של דגם ה-OSI ונגלה אילו מהם מעניינות אותנו:
  1. 1. רמה פיזית – כאן חוקי הפיזיקה עושים את תפקידם, ומשימתו של האדם היא להשתמש ולכוון זאת למטרותיו שלו. למשל, יצירת כבלים והנחתם לחברי הרשת.

    אנחנו לא מעוניינים.

  2. שכבת קישור נתונים - אחראית על העברת נתונים לצמתי רשת ויצירת ערוצי העברת נתונים על אובייקטים פיזיים.

    Нам не интересен, если только нет желания писать прошивку для каналообразующей аппаратуры.

  3. Сетевой уровень — для определения addressов отдельных пользователей сети и маршрутов к ним. На этом уровне стоит остановиться подробнее, а именно — на addressе пользователя в сети.

    Он определяется специальным протоколом: самый распространённый — IPv4 (Internet Protocol version 4). Именно его нужно использовать веб-программисту для обращения к другому абоненту сети.

    IPv4 состоит из четырех byteовых значений, разделенных точкой, например: 192.0.2.235. Стоит помнить, что значения byteовые, а значит, они лежат в пределах 0..255.

    IP-address, в свою очередь, делятся на классы, и просто так присвоить себе красивую комбинацию циферок не получится, но так сильно углубляться мы не станем. Достаточно понимать, что IP-address — это уникальный идентификатор абонента в сети, по которому мы сможем к нему обратиться.

  4. Транспортный уровень — занимается доставкой информации addressту. Для этого используются разные протоколы, которые нам пока не интересны. Гораздо больше нас интересует понятие, которое появляется на этом уровне, — port.

    Порты отвечают за идентификацию конкретного applications на компьютере. Например, ты написал чат на Java, установил на 2 компа и хочешь отправить своему собеседнику. Твое сообщение упаковывается, отправляется по конкретному IP-addressу, доставляется твоему собеседнику, но его ПК не знает, что делать с полученной информацией, так How не понимает, Howое приложение должно обработать твое сообщение. Для этого и указываются порты при общении абонентов в сети.

    Порт представляет собой число от 0 до 65535. Он добавляется к IP-addressу после двоеточия: 192.0.2.235:8080. Но нельзя использовать все порты из указанного диапазона: часть из них зарезервирована под операционную систему, еще часть принято использовать с конкретно оговоренной целью. В преднаmeaning разных портов углубляться не будем, пока достаточно понимать их роль в процессе общения в сети.

  5. Сеансовый уровень — создает и управляет сеансами связи приложений. На этом уровне становится возможным взаимодействие приложений, отправка requestов служебного уровня. Для нас важно знать, что на этом уровне между двумя абонентами открывается сессия (session), с которой нам часто придется работать.

    Сессия — сущность, которая создается при установке связи между двумя пользователями. В ней можно сохранять нужную нам информацию о юзере, об истории их взаимодействия. Важной деталью является то, что при остановке обмена информацией сессия не пропадает, а сохраняет свое состояние на протяжении установленного промежутка времени, поэтому пользователи могут продолжить обмен информацией после перерыва.

    אם אפליקציה מתקשרת עם מספר משתמשים בו-זמנית, נוצר מספר מתאים של חיבורים, ולכן הפעלות. לכל הפעלה יש מזהה ייחודי (ID) , המאפשר לאפליקציה להבחין בין המשתמשים איתם מתרחשת תקשורת.

  6. שכבת מצגת - אחראית על קידוד/פענוח נתונים. ברור שאם אנחנו צריכים לשלוח את המחרוזת "Hello web" למשתמש אחר, היא תחילה מומרת (מקודדת) לקוד בינארי, ורק לאחר מכן נשלחת. ברגע שהיא מגיעה ליעד, ההודעה מומרת בחזרה (מפוענחת) והנמען יכול לראות את המחרוזת המקורית. פעולות אלו מתרחשות ברמת המצגת.

  7. שכבת היישום היא השכבה המעניינת ביותר עבורנו. זה מאפשר ליישומים ליצור אינטראקציה עם הרשת. ברמה זו נקבל, נשלח הודעות, נשלח בקשות לשירותים ולמאגרי מידע מרוחקים.

    ישנם פרוטוקולים רבים המשמשים ברמה זו: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET וכמובן HTTP/HTTPS. פרוטוקול הוא הסכם אוניברסלי שאנו מקפידים עליו בעת כתיבת הודעות. בהחלט נדבר על פרוטוקולי HTTP/HTTPS בנפרד ובפירוט רב יותר.

חלק 1. מה שאתה צריך לדעת לפני לימוד אביב ו-JavaEE - 2 אנחנו לא צריכים לדעת איך כל רמה של המודל הזה עובדת. העיקר להבין את עקרונות הפעולה של האלמנטים איתם נצטרך להתמודד בעת כתיבת יישומי אינטרנט, כלומר:
  • כתובת IP - הכתובת של המנוי ברשת;
  • יציאה - כתובת יישום של מנוי ספציפי;
  • Session היא ישות הקיימת לאורך כל התקשורת בין שני מנויים;
  • פרוטוקולי יישומים (HTTP/HTTPS) הם הכללים שינחו אותנו בעת חיבור ושליחת הודעות.
כאשר אנו הולכים, למשל, לחנות מקוונת, אנו מציינים את כתובת המיקום והיציאה שלה. בביקורך הראשון נוצרת הפעלה בה החנות יכולה לרשום מידע. למשל על הסחורה שהשארנו בעגלה. אם נסגור את לשונית החנות המקוונת ואז נחזור אליה, המוצרים שלנו יישארו בעגלה כי הם נשמרים בסשן. ובכן, כמובן, אנו מקבלים את כל המידע שאנו מקבלים מהחנות באמצעות פרוטוקול HTTP/HTTPS, והדפדפן שלנו יכול לעבד אותו. אתה יכול להתנגד ולומר שמעולם לא הזנת את הכתובת והפורט בדפדפן, ואתה תהיה צודק בחלקו, כי הזנת את שם הדומיין, שהומר בשרת ה-DNS. אבל הנה, בואו נסתכל טוב יותר על מה זה מה.

DNS (מערכת שמות דומיין)

כפי שכבר גילינו, לכל מנוי ברשת יש כתובת ייחודית. אם אנחנו מדברים על יישום, הכתובת הייחודית שלו תהיה IPv4:port . הכרת כתובת זו, תוכל לגשת ישירות לאפליקציה. בואו נדמיין שכתבנו אפליקציית אינטרנט שמציגה את טמפרטורת האוויר הממוצעת בכל המדינות בזמן אמת. פרסנו אותו בשרת עם הכתובת 226.69.237.119 ובפורט 8080. כדי שהמשתמש יקבל מאיתנו מידע הוא צריך להזין 5 מספרים בדפדפן: 226.69.237.119:8080. אנשים לא ממש אוהבים לזכור קבוצות של מספרים: לא כולנו זוכרים יותר משני מספרי טלפון. לכן הומצאה מערכת שמות הדומיין . אנחנו יכולים ליצור "כינוי" לכתובת שלנו - למשל, world-temperature.com - ובמקום לחפש אותנו באמצעות כתובת בת חמש ספרות, המשתמש יכול להקליד את שם הדומיין שלנו בשורת הכתובת של הדפדפן. כדי להתאים שמות דומיין וכתובות אמיתיות, ישנם שרתי DNS . כאשר משתמש נכנס, למשל, javarush.ru בדפדפן, בקשתו נשלחת לשרת ה-DNS, שם היא הופכת לכתובת אמיתית. חלק 1. מה שאתה צריך לדעת לפני לימוד אביב ו-JavaEE - 4חשוב לנו להבין זאת, כי באפליקציות שלנו נקרא לשירותים מרוחקים גם לפי שם מתחם וגם לפי כתובת אמיתית, ואלה יהיו אותם שירותים. זה הכל! במאמר זה, בדקנו את היסודות של עיצוב רשת, שיהיו שימושיים לפני שתתחיל ללמוד תכנות אינטרנט. בפעם הבאה נבחן מהי ארכיטקטורת שרת-לקוח ומדוע ההבנה שלה כל כך חשובה. חלק 2. בואו נדבר קצת על ארכיטקטורת תוכנה חלק 3. פרוטוקולי HTTP/HTTPS חלק 4. יסודות Maven חלק 5. Servlets. כתיבת יישום אינטרנט פשוט חלק 6. מיכלי Servlet חלק 7. היכרות עם תבנית ה-MVC (Model-View-Controller) חלק 8. כתיבת יישום קפיץ-אתחול קטן
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION