vad är virtuell maskin och byte-kod?
Vad är en virtuell maskin och vad är skillnaden mot en fysisk maskin? Vad är byte-kod och hur skiljer det sig från en exekverbar fil?
En fysisk maskin, eller CPU, exekverar maskinkod för just den här typen av CPU. En x86 CPU exekverar x86-maskinkod, till exempel. För att köra ett C-program på en x86 kompilerar du det till x86 maskinkod.
C --> x86 maskinkod -> x86 CPU
En virtuell maskin är ett program som exekverar byte-kod. Byte-kod är instruktioner på ungefär samma nivå som maskinkod, men som inte är knuten till en viss CPU-typ. Samma byte-kod kan alltså exekvera på olika CPU-typer. JVM (Java Virtual Machine) är ett exempel på en virtuell maskin.
Java -> Byte-kod -> JVM
Till slut måste även den virtuella maskinen exekvera på en CPU. I fallet med Java på x86 behöver du alltså en JVM som är kompilerad för x86.
Java -> Byte-kod -> JVM för x86 -> x86 maskinkod -> x86 CPU