מכונה וירטואלית – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
שורה 28:
==מכונה וירטואלית לשפת תכנות==
[[קובץ:Java-jvm.png|300px|ממוזער|סכימה שמדגימה מכונה וירטואלית ל-JAVA]]
על מנת להריץ [[תוכנה]] על מחשב, יש לתרגם אותה מ[[שפת תכנות|שפת התכנות]] שבה נכתבה, לשפה אותה המחשב מסוגל להבין - [[שפת מכונה]]. בדרך כלל שפות המכונה מכילות מספר קטן של פקודות, וכל פקודה בהן מיוצגת על ידי רצף של אפסים ואחדות בלבד, מה שהופך כתיבת תוכניות בצורה ישירה בשפת מכונה למלאכה טכנית ומייגעת. על כן, רוב התוכנות נכתבות בשפות מתוחכמות יותר ונוחות יותר לשימוש אנושי, ולאחר מכן מתורגמות לשפת מכונה בידי תוכנה מיוחדת הנקראת [[מהדר]]. התהליך בו לוקח המהדר תוכנית הכתובה בשפת תכנות כלשהי ובונה ממנה תוכנה בשפת מכונה הניתנת להרצה על המחשב נקרא '''הידור'''.
מכיוון שלמחשבים שונים יש שפות מכונה שונות, תוכנה שהודרה בידי מהדר כך שתפעל על מחשב אחד אינה שמישה במחשב אחר, בעל שפת מכונה שונה. זוהי בעיה של '''
הדרך שבה מתגברות מכונות וירטואליות על בעיית
מכונה וירטואלית, לפיכך, היא [[תוכנית מחשב]], המקבלת כקלט הוראות הכתובות בשפת ביניים, מתרגמת אותן לשפת מכונה ומריצה אותן. להבדיל ממהדר, אשר מתרגם את התוכנית כולה בטרם ניתן יהיה להריץ אותה, המכונה הווירטואלית מבצעת את התרגום תוך כדי ההרצה עצמה, בדומה ל[[מפרש (תוכנה)|מפרש]]. חשוב להדגיש כי המכונה הווירטואלית לא מתרגמת שפה עילית לשפת ביניים. שלב זה מבוצע על ידי המהדר בשלב הידור התוכנית.
|