Ein JIT-Compiler übersetzt ein Programm oder Programmteile beim Start oder zur Laufzeit nach Bedarf. Das Programm wird just-ist-time in Maschinensprache kompiliert. Das Programm selbst liegt dabei in einer anderen Sprache als der Maschinensprache vor.
Ein JIT-Compiler übersetzt ein Programm oder Programmteile beim Start oder zur Laufzeit nach Bedarf in Maschinencode.
Die Abkürzung JIT steht für „Just in Time“. Es geht um die bedarfsweise Übersetzung eines Programms in die erforderliche Maschinensprache. Ausschlaggebend ist die Tatsache, dass das zu übersetzende Programm in einer fremden Sprache vorliegt, die nicht der des ausführenden Systems entspricht. Daher besteht bedarf nach Übersetzung beziehungsweise Kompilierung des Programms.
Das Programm liegt meist in einer höheren Programmiersprache vor, beispielsweise Java, C / C++ oder HTML. Ebenso kann es vorkommen, dass ein in einer Zwischensprache (Intermediate Language oder IL) vorliegendes Programm übersetzt werden muss. Aufgabe des JIT-Compilers ist es, diese Übersetzung vorzunehmen. Der Compiler kann entweder das vollständige Programm zum Stard oder aber Programmteile jeweils zur Laufzeit bedarfsweise übersetzen.
JIT-Kompilierung zur Ausführung von Programmen: Einsatz und Ablauf
Die JIT-Kompilierung stellt eine Technik dar, derer sich verschiedene Laufzeitumgebungen und Interpreter bedienen. Sie dient der Ausführung der Programme, die nicht in Maschinensprache geschrieben sind. Ein Beispiel für solche Laufzeitumgebungen ist die Java Virtual Machine (JVM).
JIT-Compiler unterscheiden sich von solchen Compilern, die den vollumfänglichen Quelltext in nur einem Durchgang in ausführbare Programme überführen. Der JIT-Compiler arbeitet nicht in einem Durchgang, sondern gemäß seines Namens just in time, also bedarfsweise. Er wird also in der Praxis im Prozess der Programmausführung erst tätig.
JIT als Kombination zweier Ansätze zur Maschinencode-Übersetzung
Die JIT-Kompilation lässt sich als Verbindung zweier älterer, traditioneller Ansätze zur Code-Übersetzung verstehen. Dies sind die
AOT (Ahead of time Compilation) und die
Interpretation
Damit kombiniert der JIT-Compiler auch die jeweiligen Vorzüge und Schwächen dieser Ansätze. Die JIT Compilation kombiniert das Tempo des kompilierten Codes mit der größeren Flexibilität der Interpretation. Dies ist verbunden mit einem zusätzlichen Kompilierungsaufwand. JIT-Kompilation lässt sich als Variante der dynamischen Kompilierung verstehen. Der Ansatz ermöglicht verschiedene adaptive Optimierungen. Dazu gehört die dynamische Neukompilierung.
Funktionsweise der JIT-Kompilierung
Der JIT-Compiler übersetzt den vorliegenden Code in einen so genannten nativen Maschinen-Code. Dies ist ein Code, den der eingesetzte Prozessor unmittelbar verarbeiten kann. Die Besonderheit der JIT-Compilation besteht darin, dass der Compiler erst während der Laufzeit aktiv wird. Die Kompilierung erfolgt also nicht bereits vorab.
Nach der Kompilierung kommt es zur Ausführung des Maschinen-Codes, der nun vom Prozessor verarbeitet werden kann. Diese Vorgehensweise hat gegenüber herkömmlichen Kompilierung Performance-Vorteile. Bei der Kompilierung werden gesamtheitliche ganze Codeblöcke bearbeitet. Auch dies stellt gegenüber der sonst üblichen zeilenweise erfolgenden Abarbeitung einen Tempovorteil dar.
Besonders hoch entwickelte JIT-Compiler sind imstande, speziell für dynamische Sprachen schneller Code generieren zu können. Die JIT-Kompilierung hat darüber hinaus den Vorteil, dass vor dem Programmstart nur ein geringer Teil überhaupt kompiliert wird. Dies reduziert das Problem der Verzögerungen beim Start des Programms.
Weiterhin besteht ein Vorteil in der Schonung der System-Ressourcen. Bestimmte Programmteile, die ohnehin nicht durchlaufen werden, erfahren auch keine Kompilierung. Bei der JIT Compilation werden einmal fertig kompilierte Programmteile weiterhin in einem Software-Cache gehalten. Dies hat den Vorteil, dass die Programmteile nicht bei jedem zusätzlichen Durchlauf erneut einer Kompilierung bedürfen.
Einsatzbereiche des JIT-Compilers
JIT-Compiler lassen sich auf verschiedenartige Programme anwenden, speziell jedoch für dynamische Kapazitäten. Dazu gehören reguläre Ausdrücke. So kann ein Texteditor beispielsweise reguläre Ausdrücke kompilieren, die während der Laufzeit für den Maschinencode bereitsteht. Auf diese Weise ist ein schnellerer Abgleich möglich. Es ist nicht möglich, dass dies bereits im Vorfeld geschieht, denn die Bereitstellung des Musters muss zur Laufzeit geschehen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Zahlreiche moderne Laufzeitumgebungen verfügen über eine JIT-Kompilierung als Grundlage, wenn es um die Ausführung des Codes in hoher Geschwindigkeit geht. Dazu gehören die meisten Java-Implementierungen, gemeinsam mit Mit dem NET-Framework von Microsoft.
Weitere Beispiele aktueller JIT-Compiler finden sich bei vielen Webbrowsern für Desktop-Betriebssysteme. Hier kommt ein JIT-Compiler zum Einsatz, um die JavaScript-Ausführung zu beschleunigen. Als Teil der virtuellen Maschine ergänzt der JIT-Compiler den Interpreter (wie etwa die Java Virtual Machine (JVM) bei Java oder CLR bei .NET).
Ähnlich bieten zahlreiche Bibliotheken, die mit regulären Ausdrücken arbeiten, eine JIT-Kompilierung an. Die Kompilierung erfolgt in diesen Fällen entweder in Bytecode oder in Maschinencode. Ebenso kommt JIT-Compilation in verschiedenen Emulatoren zum Einsatz, etwa um den Maschinencode der einen CPU-Architektur in eine andere zu übertragen beziehungsweise zu übersetzen.
JIT-Compiler kommen auch zum Einsatz, nachdem bereits eine AOT-Kompilierung in Bytecode (den Code der VM oder Virtual Machine) stattgefunden hat. Der Bytecode-Kompilierung folgt dann eine anschließende JIT-Kompilierung in Maschinencode. Diese dynamische Kompilierung verhindert, dass der Bytecode zunächst mühevoll interpretiert werden muss. Die Laufzeitleistung verbessert sich damit im direkten Vergleich zur regulären Interpretation.