Interpreter
Ein Interpreter ist ein Programm, das Bytecode, also kompilierten Quellcode zur der Laufzeit einliest, analysiert und ausführt. Der Java-Interpreter gehört zur JRE und läuft auf einer virtuellen Maschine (VM). Für die meisten Betriebssysteme sind JREs verfügbar, so dass ein einmal geschriebener und kompilierter Java-Code ohne Weiteres auch auf anderen Betriebssystemen lauffähig ist. Voraussetzung ist also, dass auf dem Host-System eine Java Laufzeit Umgebung installiert ist.
Maschinencode, wie er bspw. von einem C/C++-Compiler und Linker erzeugt wird, ist immer nur für ein bestimmtes Betriebssystem kompiliert und optimiert.
Ein JIT-Compiler kann die Effizienz eines ausgeführten Java-Programms (Bytecode) noch einmal zur Laufzeit verbessern.