Definition „Ahead-of-time Compiler“ Was ist ein AOT-Compiler?

Autor / Redakteur: HJL / Stephan Augsten

Der Ahead-of-Time- oder kurz AOT-Compiler erledigt die Aufgabe der vollständigen Kompilation, ehe der Code die für die Ausführung zuständige Funktionsebene erreicht. Das Funktionsprinzip des AOT.Compilers steht damit in direkter Konkurrenz zum JIT-Compiler.

Firmen zum Thema

C und C++ sind Beispiele für höhere Programmiersprachen, bei denen ein AOT-Compiler den Code vor der Ausführung übersetzen muss.
C und C++ sind Beispiele für höhere Programmiersprachen, bei denen ein AOT-Compiler den Code vor der Ausführung übersetzen muss.
(Bild: laurentvalentinjospi0 / Pixabay )

Kompilieren – eine Implementierungsform

Beim Kompilieren (Zusammenstellen; Zusammentragen) handelt es sich um eine Form der Software-Implementierung. Grundsätzlich geht es darum, erstellte Quelltexte in Maschinen-Befehle zu transformieren.

Ist der Quelltext also in einer höheren Programmiersprache erstellt, übernimmt der Compiler den Arbeitsschritt der Umsetzung in Instruktionsstrukturen, die vom Prozessor ausgeführt werden können. Formulierte Anweisungen des Quelltextes werden in adäquate Ablauf-Folgen von Maschinen-Befehlen übersetzt. Im Anschluss an das Kompilieren wird das entsprechende Programm erzeugt, das sich als ausführbarer Code präsentiert.

Kompilierte Programme haben ein optimiertes Ablauf-Verhalten. Insbesondere bei Programmen mit langen Abläufen ist die gesteigerte Geschwindigkeit der Abläufe von großem Vorteil. Mit der Einführung eines neuen Prozessors oder ein anderen Betriebssystems geht – stets abhängig vom Kompatibilitätsmodus – eine Neu-Kompilierung des Quelltextes einher.

AOT-Compiler: Der Laufzeit voraus

Bei der Beschreibung „Ahead-of-Time“ ist die Abgrenzung zum Verfahrensprinzip von „Just-in-Time“ (JIT) wesentlich. Die Begriffskürzel AOT und JIT beziehen sich konkret auf den Zeitpunkt der Kompilierung. Ahead-of-Time, zu Deutsch „Der Zeit voraus“ ist dabei durchaus im Wortsinn zu verstehen.

Bei der AOT-Kompilierung wird der vom Programmierer erzeugte Code vor dem Ausführen einer Applikation in die Maschinensprache des eingesetzten Prozessors übersetzt. AOT-Compiler sind für das Kompilieren von höheren Programmiersprachen wie C und C++, aber auch Zwischendarstellungen wie CIL-Code und Java-Bytecode konzipiert.

Vorteil und Verfahrenskompromiss des AOT Compilers

Die AOZ-Kompilierung ermöglicht zur Laufzeit Geschwindigkeitsvorteile dank der verkürzten Initialisierungszeit. Während der JIT-Compiler zu Beginn eines Verarbeitungsprozesses seinen Übersetzungslauf beginnen würde, ist bei Nutzung eines AOT-Compilers die Übersetzung zu diesem Zeitpunkt bereits abgeschlossen.

Der Verfahrenskompromiss beim Einsatz des AOT-Compilers liegt auf der Hand. Im Zuge der Kompilierung über den AOT-Compiler wird ein Code erzeugt, der seine Plattform-Unabhängigkeit verloren hat.

JAOTC – Ahead-of-Time-Compiler für Java 9

Seit dem Herbst 2016 verfügt das Java-9-Release über einen AOT-Compiler. Dies ist bedeutsam, da Java bis zu diesem Zeitpunkt ausschließlich die JIT-Kompilierung unterstützte. Die Einbindung der AOT-Option hatte zum Ziel, die Start-Zeiten von Java-Programmen zu optimieren. Das entsprechende Tool innerhalb der Java-Welt trägt die Bezeichnung „JAOTC“.

Zusammenfassung

Der im AOT-Compiler beinhaltete Begriff „Ahead-of-Time“ bezieht sich auf den Zeitpunkt der Kompilierung. Er gibt bereits im Namen einen Hinweis auf das Ziel dieses Verfahrens: Es geht darum, die Startzeiten von Programmen auf dem Client zu verbessern. Dieser Vorteil bewirkt auf der anderen Seite, dass der kompilierte Code seine Plattform-Unabhängigkeit verliert.

(ID:47079677)