In rekenaarwetenskap is 'n virtuele masjien sagteware wat 'n werklike rekenaar naboots. 'n Virtuele masjien is oorspronklik deur Popek en Goldberg as 'n doeltreffende, geïsoleerde duplikaat van 'n werklike masjien beskryf. Huidige gebruike sluit virtuele masjiene in wat geen ooreenkoms met enige werklike hardeware het nie. 'n Voorbeeld: 'n Program wat in Java geskryf is kan dienste van die Java Runtime Environment ontvang deur bevele te voer waarvan die resultate weer deur die Java sagteware weergegee word. Deur hierdie dienste aan die program te verskaf tree die Java sagteware op as 'n "virtuele masjien" deur die plek in te neem van die bedryfstelsel of die hardeware waarvoor die program gewoonlik spesifiek voor geskryf sou moes word. Virtuele masjiene word verdeel in twee hoofkategorieë, gebaseer op hul gebruik en die mate waarin hulle met 'n werklike masjien ooreenstem. 'n Stelsel virtuele masjien verskaf 'n volledige stelselplatform wat die uitvoer van 'n volledige bedryfstelsel ondersteun. In teenstelling daarmee sal 'n proses virtuele masjien ontwerp wees om slegs 'n enkele program of proses te loop.