"אל תהיה גאה מדי בהישגים הטכנולוגיים האלה שבנית. היכולת להשמיד כוכב לכת היא כלום בהשוואה לכוחו של הכוח." - דארת' ויידר על כוכב המוות.
הקדמה
כנראה ששני החלקים הבאים בסדרת הכתבות הם הצפויים ביותר עבור רבים, ומסיבה טובה. מה יש, מעבר לאופק, מעבר לג'אווה הטהורה? מה נושמים מפתחי Java בכל פרויקט? ראה זאת כמדריך לימוד עצמי אמיתי ושלם עבור כל מהנדס עורפי ממוצע ששפת התכנות העיקרית שלו היא Java. בכוונתי לכסות ככל האפשר את ממוצע בית החולים ולתאר לא רק את המסגרות הפופולריות ביותר, אלא גם את הפתרונות הנחשבים לרלוונטיים כרגע. מטבע הדברים, יש הרבה כלים, והבנה מה הם החשובים והטובים ביותר היא דרך לשום מקום. כל אחד מכם הסתכל בסעיף "משרות" ב-DOU ומצא ערימה של טכנולוגיות שחוזרות על עצמן כל הזמן משרה פנויה. אני מבין שאי אפשר לתאר הכל, אבל לבוא עם מסגרת כללית זה בסדר, אז בואו ננסה ללכת לפי הכיוון הזה. איכשהו בעבר, באחד הפרויקטים, התרחשה מבוכה די מעניינת, שלדעתי הייתה וחוזרת כל הזמן מדי פעם עבור רבים בתחום זה או אחר. המשימה נקבעה לצרף עיבוד של דף HTML אחד לפונקציונליות המוגמרת פשוט כדי להציג את הסטטוס של ישויות בודדות. כתוצאה מכך, עמיתי החליט לצרף קפיץ קורנית, אשר משך חלק מהתלות המרכזית של אביב עצמו, כאשר איש לא השתמש באביב. וכל זה עבור עמוד רגיל אחד, שפשוט מציג את הסטטוס של 2-3 ישויות. "מעולם לא ראיתי טעם בשימוש בשתי חרבות אור... זה הפגנה לדעתי" - אובי וואן קנובי. מצד אחד, היזם פתר את הבעיה במהירות האפשרית, התקין מסגרת איתה התנסה בשימוש ושילב אותה בפרויקט תוך מספר שעות. אבל מצד שני, התוכנית שלנו גדלה בגודלה, אז השאלה הפשוטה הופכת: האם הוא עשה את הדבר הנכון? למשימות אטומיות כאלה, כשאתה יודע בוודאות שה-TMC הזה של thymeleaf/Spring MVC וכו' גדול יותר. זה לא ישמש בשום מקום, עדיף לא להשתמש בו בכלל. אני תמיד מופתע ממשפטים כמו "אוי! כן, השתמשנו כאן ב-Hibernate! תראה, הכל מגניב, ORM!”, וכשנשאלו את השאלה ההגיונית אם אפשר להסתדר כאן עם JDBC רגיל, הם מושכים בכתפיים. יש ארכיטקטורה רגילה, שצריכה להיות פשוטה, שצריך להתייחס אליה בחשש, לא עמוסה במסגרות אופנתיות וסופר מודרניות. כפי שאמר אובי-וואן למעלה, זה לא יותר מאשר להשוויץ, אם כי יש צורך לדעת כיצד להשתמש בהם. הג'אוויסט הצעיר, לדעתי, הוא חסר המזל מכולם - כל כך הרבה מפרטים, כל כך הרבה ספריות שצריך ללמוד. ל-Java EE לבדה יש תיעוד דרך הגג. נשאלת השאלה, מה צריך למתחיל לקחת על עצמו, מה עליו ללמוד אחר כך, מה עליו לעשות אחרי הורסטמן? תשובה פשוטה: למרבה הצער, תכירו הרבה אנשים. ונתחיל לא במסגרות עסקיות, אלא בדברים נחוצים יותר ארציים.מערכות הפעלה
לינוקס
בנוסף לחלונות ו/או יוסמיטי הנעים, צריך למתוח את הידיים ללינוקס בחיוך. עבור פרויקטים מסוימים, זה מספיק להיות משתמש ולדעת איך להשתמש בשורת הפקודה, עבור אחרים - הרבה יותר. איזו דרך הכי טובה? יש פשוט טונות של ספרים/הדרכות באינטרנט. התחל בהתקנת אובונטו או כל הפצה אחרת שתרצה ונסה להשתמש בה כמערכת ההפעלה הראשית שלך לחודש-חודשיים הקרובים. זה יהיה הרבה יותר טוב אם תתחיל ללמוד ג'אווה בתוך לינוקס על ידי קומפילציה ועיבוד קבצים באמצעות הטרמינל. שורת הפקודה של לינוקס מאת וויליאם שוטס . קרא את הספר הזה לא כרומן "50 גוונים של אפור", אלא כקורס אינטראקטיבי מן המניין - פתח מסוף וחזור אחרי המחבר. האם אתה רוצה את היסודות ואיך לינוקס עובדת? בואו לא ניקח את קורס מדעי המחשב ומערכות הפעלה - זה בחלק הבא. עבור אל edx.org ונסה את קורס מבוא ללינוקס הקל . יש גם ספר מהסדרה שהוזכרה לעיל How Linux Works: What Every Superuser Should Know מאת בריאן וורד . פרסום מאויר למדי שמקדיש תשומת לב לרשתות, מכשירים וניהול משאבים. לך על זה? יש ספר מצוין, אגב, יש לי איפשהו כאן... כן (מרעיד אבק)... הנה הוא! יוניקס ולינוקס: מדריך למנהל מערכת. אווי נמת. מדריך די גדול, מתורגם היטב. למען האמת, אני אישית לא שלטתי בזה, אבל מאוד אהבתי את יסודות הניהול (החלק הראשון). באופן טבעי, אינך יכול להתעלם מתסריט של Shell. עדיף לנסות את כל זה בפועל, אבל מתוך ספרים אתה יכול להסתכל על Learning the bash Shell: Unix Shell programmering מאת קמרון ניוהם. לא ניתן לכסות כמות עצומה כזו של ספרות על לינוקס/יוניקס במלואה, במיוחד במאמר זה, שבו לינוקס נמצאת ברקע. עמית שלי לעבודה, שאכל את הכלב בעניין הזה, ייעץ דבר מעשי למדי: הורד את ArchLinux ונסה להפעיל אותו. תוך כדי כך תלמד הכי הרבה אני לא רוצה!חלונות
בקורות החיים של מתכנתים יש עמודה: "ניסיון של Windows יותר מ-10 שנים." כמובן, אני מברך אותך על זה שאתה משחק נגד מגיל 10 בווינדוס, אבל אני מבקש ממך לא לחפור לעצמך בור מראש בראיון, כי על פרויקט שבו אתה עובד בשיתוף פעולה הדוק. IIS, batch/powershell, חלילה, הרישום, הריאיון לא יהיה ממש קשה, וחוץ מזה החיוך מול היושב. לידה תקבלי גם מנה של השפלה. אתה צריך את זה? התשובה מעידה על עצמה. שים בצד את Windows הפיראטי שלך מהטורנט ונסה להתקין אותו על סוג של מחשב וירטואלי של Windows Server. למד אותו לא רק מצד המשתמש ומהתקנת JAVA_HOME. בהקשר זה, קיים מדריך כמעט מלא בדמות הספר Mastering Windows Server 2012 R2 מאת מארק מינסי . לדוגמה, אם אתה משתמש ב-PowerShell, עיין בספר המעולה Windows PowerShell in Action מאת Manning מאת Bruce Payette . אני מבין שאי אפשר לעבור על 1000 עמודים, אבל לפחות אתה יכול לשמור את זה איתך בתור רפרנס. לא צריך שום דבר אחר, אני חושב. כתוצאה מכך, שימו לב לפערים בידע שלכם בשימוש ב-Windows וחפשו באינטרנט את המידע שאתם מעוניינים בו.בניית כלים
מייבן
מה הדבר הכי חשוב להבין ב-Maven? להלן השלבים והמשימות הראשונות:- למד מה מייבן עושה בכל שלב, אתה יכול אפילו לשנן את זה. זהו כמעט 80% הצלחה וייתן לך תמונה ברורה.
- צור פרויקטי ארגז חול משלך באופן מקומי עם מערכת מרובת מודולים, עם ניהול תלות מפורש. נסה לצרף ספריות של צד שלישי, נסה ליצור משהו באמצעותן.
- תשחק עם הפרופיל
- הבן את ניהול התוספים ולמד את רשימת התוספים הפופולריים ביותר באתר הרשמי.
- גלה כיצד תוכל להשתמש בצורה הטובה ביותר ב-maven בפרויקט שלך. לדוגמה, בנייה מקבילה יכולה להפחית משמעותית את זמן הבנייה.
נְמָלָה
הכלי הזה נראה הרבה יותר קל, אז אין הרבה מה ללמוד כאן. יש עדיין פרויקטים שבהם ANT הוא כלי הבנייה היחיד. זה נורמלי לחלוטין: ANT הוכיחה את עצמה ככלי בנייה פשוט ופשוט בהקשר של ניהול משימות אטומיות קטנות (משימות נמלים). כמובן, יש כאן תוספים רבים, בדיוק כמו Maven. כדי להתחיל עם ANT, בצע את הפעולות הבאות:- נסה לתפעל קבצים ותיקיות
- הטמעת פקודות שונות לביצוע משימות. בהתבסס על זה, למד תלות ותעדוף של משימות ב-ANT.
- פרק ו/או ארכיון. במשימות נסו לשחק עם תוכן הארכיון וכן הלאה.
גרדל
מבחינתי, Gradle קרוב יותר ל-ANT מאשר ל-Maven, אבל זה לגמרי יכול להיקרא האח למחצה של שני החבר'ה האלה. יש לו מחזור חיים דומה ל-Maven, והגמישות של אותן משימות שיש ל-ANT. ובכן, הדבר החשוב ביותר הוא ש-Gradle לא משתמש ב-XML ויתרה מכך, אתה יכול לעשות איתו מה שאתה רוצה אם אתה פחות או יותר מכיר את Groovy. באופן כללי, דבר די טעים. אל תפחד להשתמש ב-Ant/Maven/Gradle בהקשר של ה-IDE שלך. כלים אלו משולבים היטב ב-Eclipse/IDEA, והשימוש בכלים אלו בהקשר של ה-IDE הוא די נוח.אינטגרציה מתמשכת
תֵאוֹרִיָה
אלו תוכניות מלאכים שמגינות עליך מפני פיטורים. בקיצור, מדובר בתוכנה שמנטרת שינויים בקוד, בונה ומריצה בדיקות שנכתבו עבורכם. אם הכל בסדר אחרי כל commit/מיזוג, אז המבנה זוהר באור ירוק/כחול נעים. ברגע שתשבור משהו, מערכת ה-CI תדווח על כך מיד. עם זאת, קצת תיאוריה - זה קלאסי! אינטגרציה מתמשכת: שיפור איכות תוכנה והפחתת סיכונים מאת פול דובאל . (המכונה "שילוב מתמשך" ברוסית) ספר זה אפילו דן ביצירת מערכת CI משלך. בואו נסתכל על שני הפתרונות הפופולריים ביותר בתחום זה.ג'נקינס
ג'נקינס, הלא הוא הדסון. אפליקציה פתוחה, ידידותית וקלה לשימוש. כדי להכיר יותר את ג'נקינס, נסה את הפעולות הבאות:- הורד אותו למחשב שלך. התקן והגדר את JDK, Maven, ANT וכל מה שאתה צריך עבור הפרויקט.
- צור את הג'וב הראשון וציין את המיקום של הפרויקט שלך, למשל, ה-pom.xml הראשי. הפעל אותו, וודא שיש לך איזשהו בדיקה כדי שהיא תהיה גלויה בבירור.
- למד להפעיל את הפרויקט שלך עם הגדרות ואפשרויות שונות.
- צרף תוספים שונים וראה כיצד הם פועלים בשילוב עם הפרויקט שלך.
- בניית טריגרים לעבודות שונות. צור צינור קטן.
- חקור את ה-DSL ונסה לשלב אותו עם Jenkins.
- הגדר עבד ממחשב אחר ו/או הפוך אותו למכונה רגילה להרצת בנייה.
- צור בנייה לילית.
GO TO FULL VERSION