وقتی برنامه ای رو توی جاوا کامپایل میکنید مستقیما به زبان ماشین تبدیل نمیشه و به ی زبان میانی IL تبدیل میشه. به این ها میگن بایت کدهای جاوا. حالا ماشین مجازی چیزیه که میتونی این بایت کدها رو روی اون اجرا کنی. یعنی شامل ابزارهای RunTime و کلیه کتابخانه های استاندار جاوا که برنامه ازش استفاده کرده.
پس هرجا که این ماشین مجازی نصب باشه این بایت کدها هم قابل اجرا باشن. فرقی نداره چه سیستم عاملی باشه. لینوکس. ویندوز. یا مک