JavaRush /בלוג Java /Random-HE /מדריך למפתח Java לעתיד. Enterprise - חלק 1
Diana
רָמָה

מדריך למפתח Java לעתיד. Enterprise - חלק 1

פורסם בקבוצה
"אל תהיה גאה מדי בהישגים הטכנולוגיים האלה שבנית. היכולת להשמיד כוכב לכת היא כלום בהשוואה לכוחו של הכוח." - דארת' ויידר על כוכב המוות. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 1

הקדמה

כנראה ששני החלקים הבאים בסדרת הכתבות הם הצפויים ביותר עבור רבים, ומסיבה טובה. מה יש, מעבר לאופק, מעבר לג'אווה הטהורה? מה נושמים מפתחי Java בכל פרויקט? ראה זאת כמדריך לימוד עצמי אמיתי ושלם עבור כל מהנדס עורפי ממוצע ששפת התכנות העיקרית שלו היא Java. בכוונתי לכסות ככל האפשר את ממוצע בית החולים ולתאר לא רק את המסגרות הפופולריות ביותר, אלא גם את הפתרונות הנחשבים לרלוונטיים כרגע. מטבע הדברים, יש הרבה כלים, והבנה מה הם החשובים והטובים ביותר היא דרך לשום מקום. כל אחד מכם הסתכל בסעיף "משרות" ב-DOU ומצא ערימה של טכנולוגיות שחוזרות על עצמן כל הזמן משרה פנויה. אני מבין שאי אפשר לתאר הכל, אבל לבוא עם מסגרת כללית זה בסדר, אז בואו ננסה ללכת לפי הכיוון הזה. איכשהו בעבר, באחד הפרויקטים, התרחשה מבוכה די מעניינת, שלדעתי הייתה וחוזרת כל הזמן מדי פעם עבור רבים בתחום זה או אחר. המשימה נקבעה לצרף עיבוד של דף HTML אחד לפונקציונליות המוגמרת פשוט כדי להציג את הסטטוס של ישויות בודדות. כתוצאה מכך, עמיתי החליט לצרף קפיץ קורנית, אשר משך חלק מהתלות המרכזית של אביב עצמו, כאשר איש לא השתמש באביב. וכל זה עבור עמוד רגיל אחד, שפשוט מציג את הסטטוס של 2-3 ישויות. "מעולם לא ראיתי טעם בשימוש בשתי חרבות אור... זה הפגנה לדעתי" - אובי וואן קנובי. מצד אחד, היזם פתר את הבעיה במהירות האפשרית, התקין מסגרת איתה התנסה בשימוש ושילב אותה בפרויקט תוך מספר שעות. אבל מצד שני, התוכנית שלנו גדלה בגודלה, אז השאלה הפשוטה הופכת: האם הוא עשה את הדבר הנכון? למשימות אטומיות כאלה, כשאתה יודע בוודאות שה-TMC הזה של thymeleaf/Spring MVC וכו' גדול יותר. זה לא ישמש בשום מקום, עדיף לא להשתמש בו בכלל. אני תמיד מופתע ממשפטים כמו "אוי! כן, השתמשנו כאן ב-Hibernate! תראה, הכל מגניב, ORM!”, וכשנשאלו את השאלה ההגיונית אם אפשר להסתדר כאן עם JDBC רגיל, הם מושכים בכתפיים. יש ארכיטקטורה רגילה, שצריכה להיות פשוטה, שצריך להתייחס אליה בחשש, לא עמוסה במסגרות אופנתיות וסופר מודרניות. כפי שאמר אובי-וואן למעלה, זה לא יותר מאשר להשוויץ, אם כי יש צורך לדעת כיצד להשתמש בהם. הג'אוויסט הצעיר, לדעתי, הוא חסר המזל מכולם - כל כך הרבה מפרטים, כל כך הרבה ספריות שצריך ללמוד. ל-Java EE לבדה יש ​​תיעוד דרך הגג. נשאלת השאלה, מה צריך למתחיל לקחת על עצמו, מה עליו ללמוד אחר כך, מה עליו לעשות אחרי הורסטמן? תשובה פשוטה: למרבה הצער, תכירו הרבה אנשים. ונתחיל לא במסגרות עסקיות, אלא בדברים נחוצים יותר ארציים.

מערכות הפעלה

לינוקס

בנוסף לחלונות ו/או יוסמיטי הנעים, צריך למתוח את הידיים ללינוקס בחיוך. עבור פרויקטים מסוימים, זה מספיק להיות משתמש ולדעת איך להשתמש בשורת הפקודה, עבור אחרים - הרבה יותר. איזו דרך הכי טובה? יש פשוט טונות של ספרים/הדרכות באינטרנט. התחל בהתקנת אובונטו או כל הפצה אחרת שתרצה ונסה להשתמש בה כמערכת ההפעלה הראשית שלך לחודש-חודשיים הקרובים. זה יהיה הרבה יותר טוב אם תתחיל ללמוד ג'אווה בתוך לינוקס על ידי קומפילציה ועיבוד קבצים באמצעות הטרמינל. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 2שורת הפקודה של לינוקס מאת וויליאם שוטס . קרא את הספר הזה לא כרומן "50 גוונים של אפור", אלא כקורס אינטראקטיבי מן המניין - פתח מסוף וחזור אחרי המחבר. האם אתה רוצה את היסודות ואיך לינוקס עובדת? בואו לא ניקח את קורס מדעי המחשב ומערכות הפעלה - זה בחלק הבא. עבור אל edx.org ונסה את קורס מבוא ללינוקס הקל . יש גם ספר מהסדרה שהוזכרה לעיל How Linux Works: What Every Superuser Should Know מאת בריאן וורד . פרסום מאויר למדי שמקדיש תשומת לב לרשתות, מכשירים וניהול משאבים. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 3לך על זה? יש ספר מצוין, אגב, יש לי איפשהו כאן... כן (מרעיד אבק)... הנה הוא! יוניקס ולינוקס: מדריך למנהל מערכת. אווי נמת. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 4מדריך די גדול, מתורגם היטב. למען האמת, אני אישית לא שלטתי בזה, אבל מאוד אהבתי את יסודות הניהול (החלק הראשון). באופן טבעי, אינך יכול להתעלם מתסריט של Shell. עדיף לנסות את כל זה בפועל, אבל מתוך ספרים אתה יכול להסתכל על Learning the bash Shell: Unix Shell programmering מאת קמרון ניוהם. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 5לא ניתן לכסות כמות עצומה כזו של ספרות על לינוקס/יוניקס במלואה, במיוחד במאמר זה, שבו לינוקס נמצאת ברקע. עמית שלי לעבודה, שאכל את הכלב בעניין הזה, ייעץ דבר מעשי למדי: הורד את ArchLinux ונסה להפעיל אותו. תוך כדי כך תלמד הכי הרבה אני לא רוצה!

חלונות

בקורות החיים של מתכנתים יש עמודה: "ניסיון של Windows יותר מ-10 שנים." כמובן, אני מברך אותך על זה שאתה משחק נגד מגיל 10 בווינדוס, אבל אני מבקש ממך לא לחפור לעצמך בור מראש בראיון, כי על פרויקט שבו אתה עובד בשיתוף פעולה הדוק. IIS, batch/powershell, חלילה, הרישום, הריאיון לא יהיה ממש קשה, וחוץ מזה החיוך מול היושב. לידה תקבלי גם מנה של השפלה. אתה צריך את זה? התשובה מעידה על עצמה. שים בצד את Windows הפיראטי שלך מהטורנט ונסה להתקין אותו על סוג של מחשב וירטואלי של Windows Server. למד אותו לא רק מצד המשתמש ומהתקנת JAVA_HOME. בהקשר זה, קיים מדריך כמעט מלא בדמות הספר Mastering Windows Server 2012 R2 מאת מארק מינסי . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 6לדוגמה, אם אתה משתמש ב-PowerShell, עיין בספר המעולה Windows PowerShell in Action מאת Manning מאת Bruce Payette . אני מבין שאי אפשר לעבור על 1000 עמודים, אבל לפחות אתה יכול לשמור את זה איתך בתור רפרנס. לא צריך שום דבר אחר, אני חושב. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 7כתוצאה מכך, שימו לב לפערים בידע שלכם בשימוש ב-Windows וחפשו באינטרנט את המידע שאתם מעוניינים בו.

בניית כלים

מייבן

מה הדבר הכי חשוב להבין ב-Maven? להלן השלבים והמשימות הראשונות:
  1. למד מה מייבן עושה בכל שלב, אתה יכול אפילו לשנן את זה. זהו כמעט 80% הצלחה וייתן לך תמונה ברורה.
  2. צור פרויקטי ארגז חול משלך באופן מקומי עם מערכת מרובת מודולים, עם ניהול תלות מפורש. נסה לצרף ספריות של צד שלישי, נסה ליצור משהו באמצעותן.
  3. תשחק עם הפרופיל
  4. הבן את ניהול התוספים ולמד את רשימת התוספים הפופולריים ביותר באתר הרשמי.
  5. גלה כיצד תוכל להשתמש בצורה הטובה ביותר ב-maven בפרויקט שלך. לדוגמה, בנייה מקבילה יכולה להפחית משמעותית את זמן הבנייה.
לצלילה מהירה, עבור לגרסה הרוסית של אתר Apache Maven , חפש ב-Google כמה מדריכים. ובכל זאת, המהדורה השלישית של אחד הספרים המרכזיים על Maven לא תצא לאור. עד כה זו המהדורה השנייה של Sonatype's Maven: The Definitive Guide . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 8לרמה המתקדמת, יצירת תוסף משלך מתאימה. אל תדאג איזה סוג של תוסף אתה צריך ליצור, כי רבים כבר קיימים! נסה ליצור סוג של אנלוגי, למד את השלבים כשתיים ושתיים.

נְמָלָה

הכלי הזה נראה הרבה יותר קל, אז אין הרבה מה ללמוד כאן. יש עדיין פרויקטים שבהם ANT הוא כלי הבנייה היחיד. זה נורמלי לחלוטין: ANT הוכיחה את עצמה ככלי בנייה פשוט ופשוט בהקשר של ניהול משימות אטומיות קטנות (משימות נמלים). כמובן, יש כאן תוספים רבים, בדיוק כמו Maven. כדי להתחיל עם ANT, בצע את הפעולות הבאות:
  • נסה לתפעל קבצים ותיקיות
  • הטמעת פקודות שונות לביצוע משימות. בהתבסס על זה, למד תלות ותעדוף של משימות ב-ANT.
  • פרק ו/או ארכיון. במשימות נסו לשחק עם תוכן הארכיון וכן הלאה.
אין צורך להציע חבורה של משאבים ללימוד ANT. לצלילה עמוקה יותר או פחות, די בעמוד הרשמי של Apache Ant. ( ant.apache.org ) והספרים Ant in Action מאת Steve Loughran . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 9

גרדל

מבחינתי, Gradle קרוב יותר ל-ANT מאשר ל-Maven, אבל זה לגמרי יכול להיקרא האח למחצה של שני החבר'ה האלה. יש לו מחזור חיים דומה ל-Maven, והגמישות של אותן משימות שיש ל-ANT. ובכן, הדבר החשוב ביותר הוא ש-Gradle לא משתמש ב-XML ויתרה מכך, אתה יכול לעשות איתו מה שאתה רוצה אם אתה פחות או יותר מכיר את Groovy. באופן כללי, דבר די טעים. אל תפחד להשתמש ב-Ant/Maven/Gradle בהקשר של ה-IDE שלך. כלים אלו משולבים היטב ב-Eclipse/IDEA, והשימוש בכלים אלו בהקשר של ה-IDE הוא די נוח.

אינטגרציה מתמשכת

תֵאוֹרִיָה

אלו תוכניות מלאכים שמגינות עליך מפני פיטורים. בקיצור, מדובר בתוכנה שמנטרת שינויים בקוד, בונה ומריצה בדיקות שנכתבו עבורכם. אם הכל בסדר אחרי כל commit/מיזוג, אז המבנה זוהר באור ירוק/כחול נעים. ברגע שתשבור משהו, מערכת ה-CI תדווח על כך מיד. עם זאת, קצת תיאוריה - זה קלאסי! אינטגרציה מתמשכת: שיפור איכות תוכנה והפחתת סיכונים מאת פול דובאל . (המכונה "שילוב מתמשך" ברוסית) מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 10ספר זה אפילו דן ביצירת מערכת CI משלך. בואו נסתכל על שני הפתרונות הפופולריים ביותר בתחום זה.

ג'נקינס

ג'נקינס, הלא הוא הדסון. אפליקציה פתוחה, ידידותית וקלה לשימוש. כדי להכיר יותר את ג'נקינס, נסה את הפעולות הבאות:
  1. הורד אותו למחשב שלך. התקן והגדר את JDK, Maven, ANT וכל מה שאתה צריך עבור הפרויקט.
  2. צור את הג'וב הראשון וציין את המיקום של הפרויקט שלך, למשל, ה-pom.xml הראשי. הפעל אותו, וודא שיש לך איזשהו בדיקה כדי שהיא תהיה גלויה בבירור.
  3. למד להפעיל את הפרויקט שלך עם הגדרות ואפשרויות שונות.
  4. צרף תוספים שונים וראה כיצד הם פועלים בשילוב עם הפרויקט שלך.
  5. בניית טריגרים לעבודות שונות. צור צינור קטן.
  6. חקור את ה-DSL ונסה לשלב אותו עם Jenkins.
  7. הגדר עבד ממחשב אחר ו/או הפוך אותו למכונה רגילה להרצת בנייה.
  8. צור בנייה לילית.
מתוך ספרים, פשוט קרא את Jenkins: The Definite Guide מאת ג'ון פרגוסון סמארט . מדריך ברור עם הרבה צילומי מסך. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 11

TeamCity

כן, TeamCity אינו חינמי, אבל תראה כמה טוב הוא משולב במערכת האקולוגית של המוצרים של JetBrains. Intellij Idea ו-TeamCity הם איחוד נהדר. בגדול, אם אתם כבר מכירים את ג'נקינס, TeamCity לא יהיה יער אפל עבורכם, ולהיפך. במקום עבד - סוכנים, אותם טריגרים וכן הלאה. אבל בניגוד לג'נקינס, TeamCity מתגאה בתכונות מדהימות כמו, למשל, ריצה מרחוק, הידועה גם כ-pre-tested commit, הרבה יותר סטטיסטיקה חזותית ועוד הרבה יותר. אני מאוד אוהב את המדריך למשתמש ביוטיוב, ש-JetBrains יצרה בעצמה ( מדריך למשתמש של TeamCity (חלק 1 מתוך 9) - מבוא ). אני מוצא את TeamCity אינטואיטיבית והתיעוד ברמה גבוהה. אבל אם אתם חושבים שיש ספר ששווה לבדוק, אנא השאירו אותו בתגובות. כמובן, רשמתי רק חלק קטן ממערכות ה-CI הללו, אבל יש לנו הכל מוגבל בהיקפו. כנראה המדריך הטוב ביותר ללמידה הוא תרגול. התקנתי אותו על המחשב שלי, הפעלתי אותו, קרסתי/שחזרתי את ה-builds והלכתי לישון. ואז אתה יכול להביא לי בבטחה את ספר השיאים (אם אתה רוצה :).

מערכת בקרת גרסאות

אין טעם לדבר הרבה על VCS. זה פשוט משהו שצריך להיות, ובלעדיו ניהול פרויקטים יהיה כמו עידן המזוזואיקון. בדומה למערכות CI, בואו נסתכל על שניים מהפתרונות הפופולריים ביותר: Git ו-SVN.

Git

Git שלנו הוכיחה את עצמה כמערכת בקרת גרסאות מבוזרת יציבה. התחל ללמוד מכאן ולעבור על כל הפרקים כאשר Git כבר מוגדר. אז יש סדרה נפלאה של הדרכות אינטראקטיביות מבית הספר Code. יש גם מדריך קצר מהם בשם Try Git: Code School . מתוך ספרים אני יכול להמליץ ​​על בקרת גרסה עם Git מאת Jon Loeliger מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 12 אם אתה כל כך רגיל לצב (TortoiseSVN, הערת המחבר) וחושש מהקונסולה, אתה כמובן יכול להוריד את האנלוגי שלה TortoiseGit, אבל, לדעתי, הרבה יותר נעים ואסתטי הפתרון הוא מוצר מבית Atlassian - SourceTreeApp. אתה יכול להתאמן עם מאגרים מרוחקים, מכיוון שיש מספיק שירותי אירוח באינטרנט. אם אתה רוצה, תתאמן במקום. לא? לאחר מכן צור חשבון ב-GitHub ועבוד במצב מלא: בצע כמה התחייבויות, תפרק איזה פרויקט פתוח, בצע כמה מיזוגים בין סניפים, וכן הלאה.

SVN

עוד VCS פופולרי לא פחות הוא SVN. מערכת זו לא יכולה להתפאר בהפצה. לכל אחד מהם יש גישות משלו, יתרונות וחסרונות משלו. הקפד לקרוא את השיחה המעניינת בין משתמש חדש למשתמש SVN . יש ספר חינם מ-read-bean.com עם תרגום לרוסית. גם מיני-קורס מ- TutorialsPoint יהיה שימושי ביותר . אל תחמיצו את אתר Apache הרשמי subversion.apache.org . הלקוח המעניין ביותר עבורי הוא TortoiseSVN שהוזכר לעיל. בין הספרים, אפשר להדגיש: בקרת גרסאות עם חתרנות מאת מייקל פילאטו . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 13אהבתי את זה כי זה שם לב לניהול של שרת SVN עצמו. אני מקווה שלא פספסתי את עיקרי הדברים.

כלי בדיקה

זה יהיה רעיון טוב להבין בפרויקטים הקטנים של ארגז החול מה הם מבחני יחידות, אינטגרציה ובדיקות רגרסיה. JUnit התיאוריה של מבחני יחידות מתוארת היטב בספרים מהמאמר הקודם. בפרט, Clean Code אפילו מתאר את Junit כאחת הספריות הפופולריות באזור זה. אבל כשזה נוגע ל-JUnit ספציפית, יש ספר קטן ומעולה בשם Practical Unit Testing with JUnit and Mockito מאת Tomek Kaszanowski מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 14 כמובן, יש בו יותר מסתם JUnit ו- Mockito. כאן המחבר מציג את Matchers, מציע דוגמאות למבחנים עם פרמטרים, ועובר בקצרה על TDD. יש גם ספר שיצא לא מזמן. זהו Pragmatic Unit Testing in Java 8 מאת Jeff Langr. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 15 המחבר מציג את Hamcrest, מתאר Best Practices, וכמובן, Java 8. אתה יכול לקרוא בבטחה אחרי הספר של Tomek. אגב, לגבי TDD. אני לא רוצה להעלות הוליבר אם כדאי להשתמש בהם, אם זה טוב או רע, אם הלקוחות צריכים אותם. רק זכרו: עבודה ב-TDD אינה חידוש, ופרויקטים רבים משתמשים במתודולוגיה זו, ועבור אנשים רבים זהו הכלל היחיד והבלתי ניתן לערעור. בתיאוריה, אתה יכול לקרוא את הקלאסיקה. קנט בק - פיתוח מונחה מבחן: לפי דוגמה . מה שהכי אהבתי היה החלק על דפוסי TDD. מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 16באופן מפתיע, יש קורס טוב בגוף ראשון - Let's Play TDD (200 סרטונים!) ביוטיוב. מעניין לא פחות הוא הדיון של פאולר עצמו בשאלה האם כדאי או לא כדאי להשתמש ב-TDD, האם זה מקלקל את העיצוב וכדומה. רק זכרו זאת אחת ולתמיד: TDD לא יוצר עיצוב רע, אתם יוצרים אותו. אם אתה משתמש יותר ב-BDD (אחד לא מפריע לשני) ולמשל משתמש ב-Ccucumber בפרויקט, אז זה מישור קצת שונה. ספר טוב על זה הוא Manning BDD in Action: Behavior-driven Development for the whole cycle life software מאת John Ferguson Smart . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 17אגב, ג'ון פרגוסון סמארט מקדם באופן פעיל את הנושא הזה להמונים. אם אתה Scrum Master או PM שסוף סוף לא פוגע בעיניים שלו, אבל נהנה להסתכל במבחנים מתי-אם-אז, אז הקפד לעקוב אחרי ג'ון בטוויטר . לגבי מלפפון, עיין ביישום Java באתר הרשמי וקרא את הספר The Cucumber Book: Behavior-Driven Development מאת מאט וויין . מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 18

ספריות צד שלישי

חשוב להיות מסוגל להשתמש בספריות פופולריות במידת הצורך - הן מפשטות את חיי היומיום של כל מפתח ג'אווה. פתרונות פופולריים כוללים את הבאים: Joda Time. מציע להחליף לחלוטין את התאריך והשעה המקוריים והלא נוחים ב-JodaTime הנוחים יותר. הנה התייחסות אחת טובה . שים לב שאם אתה כבר משתמש ב-Java 8, אז JodaTime לא יעזור הרבה. העובדה היא שה-DateTime API החדש החליף לחלוטין את הספרייה הזו, ובמקומות מסוימים הוא אפילו העתיק והדבק בחוכמה. על פי המאמר של המחבר עצמו , כל מחלקה של Joda ניתנת להחלפה נוחה באנלוגי מ-java.time. גוגל גויאבה. במובנים רבים, Java 8 אפילו מחליף את Guava. אותם אובייקטים, Stream API, Java Predicate ועוד הרבה דברים אחרים מציעים להחליף אותו ולא להשתמש בו כלל. אני חוזר, אם אין לך Java 8, אין דבר טוב יותר מהמדריך הזה ומהידיים הישירות שלך.

אפאצ'י קומונס

המפלצת הזו לא כל כך קלה להתמודדות: כ-40 ספריות לכל אירוע, מ-commons.lang הידוע ועד אימות xml, מ-DBUtils ועד commons.io . כמובן, אתה לא צריך להכיר הכל, אבל ספרי בישול ומדריכים יהיו שימושיים שיש איתך. לדוגמה, כדי להבין מה זה אפאצ'י קומונס, אתה יכול לעיין בספר הבישול של ג'קרטה קומונס מאת טימותי אובריין מדריך למפתח Java לעתיד.  Enterprise - חלק 1 - 19

סיכום

Enterprise כל כך עצום שזה יהיה טיפשי להתחיל לדון ב-JavaEE ובמסגרות אחרות בלי כל מה שמקיף את ה-Enterprise הזה. לכן, בחלק השני נתמקד בכל שכבה של הארכיטקטורה הרב-שכבתית, נשקול שירותים וכן הלאה. תודה רבה על תשומת הלב. סוף החלק הראשון. חלקים קודמים של הסדרה:
  1. מדריך למפתח Java לעתיד. יסודות Java
  2. מדריך למפתח Java לעתיד. קוד אלגנטי
מקורי עם DOU
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION