Bytecode is een binaire codering van computerinstructies die, in tegenstelling tot machinetaal, niet direct door een processor kan worden uitgevoerd. Bytecode kan dienen als interne representatie van een compiler of interpreter, maar vaak is bytecode zelf het eindproduct van een compiler. In dit tweede geval kan het worden uitgevoerd met een virtuele machine. Deze benadering maakt het mogelijk om dezelfde compilatie op meerdere machines en platforms uit te voeren waarop de vereiste virtuele machine is geïnstalleerd.[1] Een voorbeeld is de C#-compiler voor de .NET Common Language Runtime of de javac-compiler voor de Java Virtual Machine.