PracticU

מושגי יסוד בשפת ג'אווה

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים › מושגי יסוד בשפת ג'אווה
מושגי יסוד בשפת ג'אווה
בשיעור הזה נכיר את המונחים הבסיסיים של Java ושל הסביבה שמריצה אותה. הבנת המונחים תעזור להבין מה קורה מאחורי הקלעים כשכותבים ומריצים תוכנה.
מערכת ההפעלה והמעבד
1. מערכת הפעלה (OS): התוכנה הראשונה שמותקנת במחשב. היא מנהלת את החומרה ומאפשרת לתוכנות אחרות לרוץ. שלוש מערכות ההפעלה הגדולות הן Windows, Linux ו-macOS.
2. מעבד (CPU): היחידה שמריצה את התוכנות.
3. קוד המקור (Source Code): הקוד שהמתכנת כותב בשפה, לדוגמה תוכנית שמדפיסה Hello על המסך.
מקוד מכונה לבייטקוד
1. קוד מכונה: שפה שבנויה מאפסים ואחדים, שה-CPU מבין ומריץ. ה-CPU מכיר רק קוד מכונה.
2. קומפיילר קוד מכונה: ממיר את קוד המקור לקוד מכונה. שפות כמו C ו-C++ עובדות כך.
3. הבעיה: קוד מכונה שנוצר עבור מערכת הפעלה אחת לא רץ על מערכת אחרת, גם אם קוד המקור זהה.
4. בייטקוד: ייצוג ביניים שה-CPU לא מבין ישירות. הקומפיילר של Java, JavaC, הופך את הקוד לבייטקוד ושומר אותו בקבצי .class.
5. מפרש (Interpreter): קורא את הבייטקוד בזמן הריצה ומתרגם אותו לקוד מכונה שמתאים למערכת ההפעלה. לכן אותו בייטקוד רץ על Windows, Linux ו-macOS. הטכניקה נקראת Write Once Run Anywhere.
סביבות הפיתוח והריצה
1. JVM: Java Virtual Machine, הסביבה שמריצה את הבייטקוד, וכוללת את המפרש.
2. JRE: Java Runtime Environment, מכיל את ה-JVM ואת הספריות שהוא צריך בזמן הריצה.
3. JDK: Java Development Kit, כלי הפיתוח של המתכנת. הוא מכיל את הקומפיילר, דיבאגר ו-JRE.
4. IDE: סביבת פיתוח משולבת, שמרכזת במקום אחד את עורך הקוד, הקומפיילר והדיבאגר. דוגמאות הן Eclipse ו-IntelliJ.
שלוש המהדורות של Java
1. Standard Edition (SE): הליבה של השפה והדברים הבסיסיים.
2. Enterprise Edition (EE): בנוי על SE, ומוסיף ספריות לאתרים, לשירותים ולגישה למסדי נתונים. מתאים לחברות גדולות.
3. Micro Edition (ME): חלק מ-SE, עם ספריות מותאמות לכתיבת אפליקציות לטלפונים ניידים.
עם המונחים האלה אפשר להתחיל לצלול לקוד.
השיעור הבא בקורס: תרגול לפרק ראשון של מבוא

פרקי ההרצאה: מושגי יסוד בשפת ג'אווה

  1. 00:00

    מונחי יסוד: מערכת הפעלה ו-CPU

  2. 01:02

    קוד מקור Source Code ודוגמה ב-Java

  3. 02:29

    Machine Code Compiler ודוגמת C++

  4. 03:25

    הבעיה: קוד מכונה שונה בכל מערכת

  5. 05:04

    מטרת כתיבה פעם אחת והרצה בכל מקום

  6. 06:16

    בייטקוד: קוד ביניים שאינו Machine Code

  7. 09:16

    Interpreter שמתרגם את הבייטקוד

  8. 10:18

    הרצת Bytecode בכל מערכת הפעלה

תמלול ההרצאה: מושגי יסוד בשפת ג'אווה

הטקסט המלא של הדקות הראשונות בהרצאה «מושגי יסוד בשפת ג'אווה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    אנחנו מגיעים למונחים בסיסיים בשפת ג'אווה ובמערכת עצמה של שפת ג'אווה. דבר ראשון, Operating System, OS, מערכת הפעלה.

  2. 00:16

    זה בעצם התוכנה שמותקנת לראשונה במחשב, מנהלת את החומרה של המחשב ומאפשרת לתוכנות אחרות להיות מותקנות, לרוץ, היא מנהלת אותן, מאפשרת להן להשתמש עם ה-facilities של המחשב, עם כל החומרה של המחשב.

  3. 00:36

    שלושת מערכות ההפעלה הגדולות שיש היום בעולם הן Windows, Linux ו-MacOS. יש עוד מערכות הפעלה חוץ מהן. Central Processing Unit, CPU.

  4. 00:51

    זה בעצם המעבד של המחשב. זה בעצם היחידה במחשב שמריצה את התוכנות שאנחנו כותבים. ככה היא נראית. Source Code.

  5. 01:07

    Source code זה הקוד שאנחנו כותבים בשפת התכנות. הרבה פעמים מתייחסים אליו פשוט בתור קוד. הנה לדוגמה קטע קוד בשפת Java שמדפיס את השם Hello או את הטקסט Hello על המסך.

  6. 01:27

    Machine code, קוד מכונה. קוד מכונה זה שפה שבנויה אך ורק ב-0 ו-1' שהיא בעצם נכנסת ל-CPU וה-CPU, ה-Central Processing Unit, המעבד של המחשב יודע לקרוא אותה ולהוציא לפועל את מה שכתוב בשפה הזאת.

  7. 01:47

    ה-CPU מכיר אך ורק Machine Code וזה הדבר היחידי שהוא יכול לקבל בתור input, בתור קלט, ולהוציא אותו לפועל. זה הדבר היחידי שהוא מבין.

  8. 02:01

    אז יש לנו פה את הקוד מכונה שפשוט אנחנו מכניסים אותו לתוך ה-CPU וה-CPU קורא אותו ומוציא אותו לפועל. צריך בעצם ה-source code שאנחנו כותבים בסופו של דבר מתורגם ל-0 ו-1 עם הקוד המכונה בשביל שהוא ייכנס ל-CPU ויצא לפועל על ידי ה-CPU.

  9. 02:25

    Machine code compiler מהדר בעברית. Machine code compiler זה מנגנון שמה שהוא יכול לעשות זה לקחת את ה-source code שלנו ופשוט להפוך אותו לקוד מכונה. כל מיני שפות ידועות בעולם שעובדות עם קומפיילר כזה הן Fortran, Pascal, C, C++ ויש עוד הרבה אחרות.

  10. 02:49

    אז הנה לדוגמה קטע קוד ב-C++ ואנחנו פשוט לוקחים את קטע הקוד הזה, מכניסים אותו ל-Machine Code Compiler של C++, שהוא יודע לקחת קוד של C++ ולהפוך אותו לקוד מכונה וזה כמובן יכול להיכנס לאחר מכן ל-CPU, לרוץ אבל קיימת בעיה עם Machine Code Compiler איזה בעיה קיימת עם הסוג של הקומפיילר הזה

  11. 03:19

    כל מיני מערכות הפעלה מדברות טיפה שונה עם ה-CPU זאת אומרת שה-CPU עצמו מושפע ממערכות ההפעלה השונות ולכן מכיר קוד מכונה שהוא קצת שונה בין מערכת הפעלה אחת למערכת הפעלה אחרת אז הקוד מכונה שאמור להיכנס ל-CPU הוא שונה בין מערכת הפעלה אחת למערכת הפעלה אחרת, אפילו שה-source code עצמו הוא אותו ה-source code.

  12. 03:52

    Windows לדוגמה מכירה סוג אחד של קוד מכונה ומתקשרת איתו, לינוקס מכירה סוג טיפה אחר ומאק מתקשרת עם סוג טיפה אחר של קוד מכונה. אז אם יש לנו קטע קוד שכתבנו, או אפליקציה למעשה, תוכנה שכתבנו אותה ב-C++, ואנחנו מכניסים אותה לתוך Machine Code Compiler של C++ אבל ה-Machine Code Compiler הזה רץ על Windows כי אנחנו

  13. 04:19

    בעצם רצים על Windows אז ה-Compiler הזה יתרגם את הקוד מכונה, סליחה, את ה-Source Code ל-Machine Code שמסוגל לרוץ רק על Windows.

  14. 04:34

    ואם אנחנו לוקחים את אותו ה-Source Code שלנו ומריצים אותו על קומפיילר של לינוקס, אז אנחנו נקבל קוד מכונה שמסוגל לרוץ רק על לינוקס ורק לינוקס מכיר את הקוד המכונה הזה.

  15. 04:50

    אותו הדבר מתרחש עם macOS, אם אנחנו מפתחים איזושהי תוכנה, במקרה הזה c++ ומריצים אותה על קומפיילר של macOS אז הקומפיילר יהפוך את ה-source code שלנו לקוד מכונה שמסוגל לרוץ אך ורק על macOS.

  16. 05:11

    ולכן אם אנחנו לוקחים c++ ומריצים אותה על קומפיילר של Windows אנחנו נקבל קוד מכונה של Windows ואנחנו לא נוכל להריץ את קוד המכונה הזה לא על Linux ולא על Mac OS. אם אנחנו נבצע את אותו הדבר על Linux הקומפיילר של Linux ייצר קוד מכונה שמתאים אך ורק ללינוקס ואנחנו לא נוכל להריץ אותו על Windows או על Mac OS.

  17. 05:38

    ואם אנחנו ניקח את ה-thrive code שלנו ונפתח על Mac OS, הקומפיילר יהפוך את זה לקוד מכונה של Mac OS ואנחנו לא נוכל להריץ אותו על Windows ולא על Linux.

  18. 05:50

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

  19. 06:05

    אנחנו רוצים שכל הלקוחות שלנו יוכלו ליהנות מהתוכנות שאנחנו כותבים. אז מה בעצם הפתרון לכל הסיפור הזה? בייט קוד. בייט קוד זה ייצוג לול-לבל של הקוד שאנחנו כותבים, ה-source code שלנו.

  20. 06:26

    לפעמים מתייחסים לזה בתור intermediate code, כלומר קוד ביניים. זה לא machine code, זה בעצם סוג של קוד ביניים בין ה-source code שאנחנו כותבים, לדוגמה ב-FAT Java, לבין המשין קוד הסופי שאמור להיכנס ל-CPU אבל ה-CPU עצמו לא יכול להבין את הבייט קוד הזה ולא יכול לקרוא אותו ולא יכול להוציא

  21. 06:56

    אותו לפועל. הנה לדוגמה מצב שבו יש לנו source code ב-Java ואנחנו רוצים להוציא ממנו את אותו בייט קוד שפחות או יותר ככה הוא נראה בכדי לפתור את הבעיה שדיברנו עליה לפני זה.

  22. 07:15

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

  23. 07:29

    לפעמים בייטקוד קומפיילר נקרא בילדר. שפות ידועות שעובדות עם סוג כזה של קומפיילר הן csharp, vb.net, פייתון, php וגם שפת Java וכמובן יש עוד הרבה אחרות.

  24. 07:47

    אז יש לנו את הקטע קוד שאנחנו כותבים ב-FAT Java ואנחנו מכניסים אותו לבייט קוד קומפיילר ולא משין קוד קומפיילר, זה סוג של קומפיילר אחר, בהקשר הזה זה נקרא בילדר והוא מוציא לנו את הבייט קוד הזה, הייצוג הנמוך הזה של ה-Solve code שאנחנו כותבים.

  25. 08:07

    אבל איך הדבר הזה נכנס בסופו של דבר ל-CPU בשביל להוציא לפועל את הפקודות? אז קודם כל יש משהו שנקרא Java בייט קוד, וזה בעצם הבייטקוד שנוצר בשפת Java. הסורס קוד שלנו כתובים בקבצים עם סיומת Java.

  26. 08:27

    Java בייטקוד קומפיילר נקרא JavaC, או בקיצור JavaC. הבייטקוד שנוצר על ידי JavaC, הקומפיילר של Java, נקרא Java בייטקוד.

  27. 08:41

    Java בייטקוד הזה מאוחסן בקבצי .class. אז יש לנו לדוגמה את הסורס קוד שלנו שאנחנו עובדים איתו. יש לנו לדוגמה קובץ שנקרא גריטר נקודה ג'אווה שבו אנחנו כותבים פונקציה, יש כמובן עוד הרבה דברים אחרים בקובץ הזה בסוס קוד אבל לצורך הפשטות כתבנו איזשהו קטע קוד שמציג הלו

  28. 09:03

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

  29. 09:19

    אינטרפרטר. אינטרפרטר הוא בעברית פרשן ומנגנון שמסוגל לקרוא את הבייט קוד בזמן הריצה ולתרגם אותו בזמן הריצה למאשין קוד וכך הוא יכול להכניס פקודה פקודה לתוך ה-CPU.

  30. 09:39

    אז יכול להיות אינטרפרטר לכל מערכת ההפעלה. יש אינטרפרטר מסוימים שקיימים ממש לכל מערכת ההפעלה ויש אינטרפרטר אחרים של שפות אחרות שקיימים עבור חלק ממערכות ההפעלה. אז יש לנו את ה-Java bytecode ואנחנו מכניסים אותו ל-interpreter זה כמובן מתבצע בזמן הריצה של התוכנית וה-interpreter הזה מוציא קוד מכונה שמותאם ל-CPU.

  31. 10:07

    אז הבעיה נפתרת בצורה הזאת אנחנו כותבים פעם אחת את הקוד לדוגמה בשפת Java שלנו אנחנו מכניסים את זה ל-Builder או ל-Java Compiler אנחנו מקבלים את קבצי הדוט קלאס שמכילים את ה-Java bytecode ואז אנחנו מכניסים את זה כתלות במערכת ההפעלה לאינטרפרטר המתאים.

  32. 10:30

    אם אנחנו כרגע מריצים את זה על מערכת ההפעלה Windows אז במערכת ההפעלה Windows יושב אינטרפרטר שמתאים ל-Windows והאינטרפרטר הזה מוציא לנו on the fly תוך כדי הריצה קוד מכונה שמתאים ל-Windows וכך התוכנה שלנו יכולה לרוץ על Windows.

  33. 10:50

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

  34. 11:05

    ואם אנחנו נרצים על Mac OS, אותו הדבר, יושב

ההרצאה הקודמת: מה היא ג'אווה

ההרצאה הבאה: תרגול לפרק ראשון של מבוא

הרצאות קשורות מקורסים אחרים

  • מושגי יסוד ב-QA
  • מושגי יסוד ב-Security
  • מושגי יסוד בקורס Appium
  • מושגי יסוד הכי חשובים לראיון עבודה ב-QA

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס סלניום מתקדם - CI/CD - Continues Integration
  • קורס מייבן - Maven