Ahead-of-time-Compiler
# Ahead-of-time-Compiler

Ein Ahead-of-time-Compiler (AOT-Compiler) ist ein Compiler, der im Gegensatz zu Just-in-time-Compilern (JIT-Compiler) Programmcode (lange) vor der Ausführung (und unabhängig von ihr) in native Maschinensprache übersetzt. Dies hat den Vorteil, dass dieser Code zur Laufzeit wesentlich schneller gestartet wird (d. h. die Initialisierungszeit ist kürzer) als bei einem JIT-Compiler, da die Übersetzung bereits durchgeführt wurde.

Der Hauptnachteil eines AOT-Compilers ist, dass der erzeugte Code nicht mehr plattformunabhängig ist, wie es bei JIT-Compilern meist der Fall ist. AOT-Compiler sind herkömmliche Compiler, wie sie schon von C eingesetzt wurden. Aber auch für Sprachen, die normalerweise mit JIT-Compilern arbeiten (z. B. Java), gibt es meist AOT-Compiler. Ggf. kann hier der Compiler anstelle der Quelltexte den Zwischencode (Bytecode) als Eingabe verwenden, was eine doppelte Pflege von Komponenten (wie z. B. die Syntaxanalyse) erspart.

## Java

Mit JEP 295 („JDK Enhancement Proposal“, Erweiterungsvorschläge für das Java Development Kit) wurde 2016 die optionale AOT-Kompilierung mit Java 9 zunächst für eingeschränkte Teile der Java-Plattform eingeführt. Allerdings ist dieses Feature immer noch als experimentell zu betrachten (Stand 2019).

