Na swoim komputerze osobistym używasz zapewne procesora z architekturą x86. Zwyczajny kompilator, kompiluje kod źródłowy do kodu maszynowego, który jest wykonywany bezpośrednio przez twój procesor. Ale istnieje wiele różnych architektur, oprócz x86 są jeszcze np. ARM, MIPS itd. W tym celu więc wymyślono takie wirtualne maszyny, jak przykładowo JVM. Ona wprowadza swoją architekturę, kod kompilowany jest do tzw. bytecodu. Praktycznie każda platforma, która będzie posiadała jakąś implementację tej wirtualnej maszyny, będzie mogła ten kod uruchomić.