כיצד המכונה הווירטואלית של ג'אווה מטפלת בהפעלה והחזרת שיטות

החודש Under The Hood מתמקד בהפעלת שיטות והחזרתה למכונה הווירטואלית של Java (JVM). הוא מתאר את ארבע הדרכים בהן ניתן להפעיל שיטות ג'אווה (וטבעיות), נותן דוגמת קוד הממחיש את ארבע הדרכים ומכסה את קודי ה- BYT הרלוונטיים.

קריאת שיטה

שפת התכנות של Java מספקת שני סוגים בסיסיים של שיטות: שיטות מופע ושיטות מחלקה (או סטטיות). ההבדל בין שני סוגים אלה של שיטות הוא:

  1. Instanceשיטות דורשות מופע לפני שניתן להפעיל אותן, ואילו classשיטות לא.
  2. Instanceהשיטות משתמשות בכריכה דינמית (מאוחרת) ואילו classבשיטות משתמשים בכריכה סטטית (מוקדמת).

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

JVM משתמשת בשתי הוראות שונות, מוצגות בטבלה הבאה, להשתמש בשני סוגים שונים אלה של שיטות: invokevirtual עבור instanceשיטות, ואת invokestatic עבור classשיטות.