Ein Compiler ist ein Softwareprogramm, das von einem menschlichen Programmierer geschriebenen Computerprogrammiercode in Binärcode (Maschinencode) umwandelt, der von einer bestimmten CPU verstanden und ausgeführt werden kann. Das Umwandeln von Quellcode in Maschinencode wird als "Kompilierung" bezeichnet. Wenn der gesamte Code auf einmal transformiert wird, bevor er die Plattformen erreicht, auf denen er ausgeführt wird, wird der Prozess als AOT-Kompilierung (AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT = AOT.
Viele bekannte Programmiersprachen erfordern einen Compiler, einschließlich:
Vor Java und C # wurden alle Computerprogramme entweder kompiliert oder interpretiert.
Interpretierter Code führt Anweisungen in einem Programm aus, ohne sie in Maschinensprache zu übersetzen. Der interpretierte Code analysiert den Quellcode direkt, wird mit einer virtuellen Maschine gepaart, die den Code für die Maschine zum Zeitpunkt der Ausführung übersetzt, oder nutzt vorkompilierten Code. Javascript wird normalerweise interpretiert.
Kompilierter Code wird schneller ausgeführt als interpretierter Code, da er zum Zeitpunkt der Ausführung der Aktion keine Arbeit ausführen muss. Die Arbeit ist bereits erledigt.
Java und C # verwenden Just-in-Time-Compiler. Just-in-Time-Compiler sind eine Kombination aus AOT-Compilern und -Interpreten. Nachdem ein Java-Programm geschrieben wurde, wandelt der JIT-Compiler den Code in Bytecode und nicht in Code um, der Anweisungen für den Prozessor einer bestimmten Hardwareplattform enthält. Der Bytecode ist plattformunabhängig und kann auf jeder Plattform gesendet und ausgeführt werden, die Java unterstützt. In gewisser Weise wird das Programm in einem zweistufigen Prozess kompiliert.
Ebenso verwendet C # einen JIT-Compiler, der Teil der Common Language Runtime ist und die Ausführung aller .NET-Anwendungen verwaltet. Jede Zielplattform verfügt über einen JIT-Compiler. Solange die Zwischen-Bytecode-Sprachkonvertierung von der Plattform verstanden werden kann, wird das Programm ausgeführt.
Die AOT-Kompilierung (Ahead-of-Time) ermöglicht eine schnellere Startzeit, insbesondere wenn ein Großteil des Codes beim Start ausgeführt wird. Es erfordert jedoch mehr Arbeitsspeicher und mehr Speicherplatz. Die JOT-Kompilierung muss auf die am wenigsten fähigen aller möglichen Ausführungsplattformen abzielen.
Durch die Just-in-Time-Kompilierung (JIT) wird die Zielplattform während der Ausführung profiliert und im laufenden Betrieb neu kompiliert, um eine verbesserte Leistung zu erzielen. JIT generiert verbesserten Code, da es auf die aktuelle Plattform abzielt, obwohl die Ausführung normalerweise länger dauert als der mit AOT kompilierte Code.