Was ist eine Laufzeitumgebung?
Eine Laufzeitumgebung ist die Software, die ein Programm um sich herum braucht, während es läuft: die Engine, die seinen Code ausführt, die Standardbibliotheken, die es aufruft, und die Dienste, die Speicher, Fehler und den Zugriff auf das Betriebssystem verwalten. Die JVM, Node.js und CPython sind Beispiele.
Aktualisiert am 24. September 2026
Führ console.log(typeof process) in Node.js aus, und es gibt object aus. Füg dieselbe Zeile in die Konsole von Chrome ein, und es gibt undefined aus. Die Sprache ist an beiden Stellen dasselbe JavaScript, aber das Programm läuft in zwei verschiedenen Laufzeitumgebungen, und jede gibt ihm andere Werkzeuge.
console.log(typeof process); // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser
Was eine Laufzeitumgebung bereitstellt
Dein Code beschreibt nur, was zu tun ist. Wenn er läuft, stützt er sich auf eine Softwareschicht, die installiert war, bevor du eine einzige Zeile geschrieben hast. Diese Schicht hat meist fünf Teile:
- Eine Ausführungs-Engine. Irgendetwas muss den Code ausführen: ein Interpreter, eine virtuelle Maschine oder ein Just-in-time-Compiler. CPython, die Java Virtual Machine (JVM) und V8 sind Ausführungs-Engines.
- Eine Standardbibliothek. Fertige Funktionen für Text, Mathematik, Datumswerte, Dateien und Netzwerk, etwa das Python-Modul
jsonoder das Java-Paketjava.util. - Speicherverwaltung. Die Laufzeitumgebung reserviert Speicher für deine Objekte und gibt ihn in Python, Java und JavaScript mit einem Garbage Collector wieder frei, wenn nichts ihn mehr nutzt.
- Fehlerbehandlung. Wenn etwas schiefgeht, stoppt die Laufzeitumgebung das Programm kontrolliert und meldet, wo es passiert ist, als Traceback oder Stacktrace.
- Zugriff auf das Betriebssystem. Dateien lesen, Netzwerkverbindungen öffnen, Umgebungsvariablen und Kommandozeilenargumente lesen: All das läuft über die Laufzeitumgebung, die das Betriebssystem im Auftrag deines Programms fragt.
Du kannst die Python-Laufzeitumgebung über sich selbst befragen:
Die Antworten hängen davon ab, wo der Code läuft. Auf einem Linux-Server gibt platform.system() 'Linux' zurück, auf einem Mac 'Darwin' und unter Windows 'Windows'. Das Rekursionslimit (in CPython standardmäßig 1000) ist eine Regel der Laufzeitumgebung, nicht der Sprache Python, und die Dutzenden Module, die schon vor deiner ersten Zeile geladen sind, zeigen, wie sich die Laufzeitumgebung selbst vorbereitet.
Java: JDK, JRE und JVM
Bei Java sind die Schichten gut sichtbar, weil jede ihren eigenen Namen hat:
| Name | Steht für | Was es enthält | Wer es braucht |
|---|---|---|---|
| JVM | Java Virtual Machine | Die Engine, die Bytecode (.class-Dateien) ausführt und Speicher verwaltet | Teil der beiden Einträge darunter |
| JRE | Java Runtime Environment | Die JVM plus die Standard-Klassenbibliotheken | Wer Java-Programme nur ausführt |
| JDK | Java Development Kit | Das JRE plus Entwicklerwerkzeuge: javac, jar, javadoc, jdb | Wer Java-Programme schreibt |
Der Ablauf: javac Main.java (ein Werkzeug aus dem JDK, der Compiler) macht aus Quellcode die Datei Main.class, und java Main startet die JVM, die die Klasse lädt und mit den Bibliotheken der Laufzeitumgebung ausführt. Die JVM ist der Grund, warum eine einzige .class-Datei unter Windows, macOS und Linux läuft: Jedes Betriebssystem hat seine eigene JVM, und alle verstehen denselben Bytecode.
Seit Java 11 liefert Oracle nur noch das JDK aus, ohne separaten JRE-Download. Manche Distributionen, etwa Eclipse Temurin, veröffentlichen weiterhin ein JRE-Paket. Wenn du Java lernst, installiere ein JDK: Es enthält alles, was auch im JRE steckt. Die Anleitung Java installieren führt dich durch die Schritte.
JavaScript: der Browser und Node.js
JavaScript wurde dafür entworfen, in Webseiten zu laufen, also war seine erste Laufzeitumgebung der Browser. Eine Browser-Laufzeitumgebung gibt deinem Code das document der Seite, window, Timer und fetch für Netzwerkanfragen, und sie blockiert bewusst den direkten Zugriff auf deine Dateien.
Node.js nimmt Googles Engine V8 aus dem Browser heraus und packt sie in eine andere Laufzeitumgebung: kein document, dafür Module wie fs für Dateien, http für Server und das Objekt process für Umgebungsvariablen und Argumente. Deno und Bun sind neuere Laufzeitumgebungen für dieselbe Sprache mit eigenen Werkzeugen. Alle führen dasselbe Kern-JavaScript aus; der Unterschied liegt darin, was es umgibt. Die Seiten zur Node.js-Laufzeitumgebung und zur Event Loop gehen weiter in die Tiefe.
Python: CPython und Verwandte
Wenn Leute „Python installieren“ sagen, meinen sie, eine Laufzeitumgebung zu installieren: den CPython-Interpreter, die Standardbibliothek und pip, um Pakete hinzuzufügen. Für dieselbe Sprache gibt es weitere Laufzeitumgebungen. PyPy ergänzt einen JIT-Compiler für mehr Geschwindigkeit, und MicroPython ist klein genug, um auf Mikrocontrollern zu laufen.
Eine virtuelle Umgebung (python3 -m venv .venv) ist keine neue Laufzeitumgebung. Sie verweist auf einen vorhandenen Interpreter und gibt einem Projekt seine eigene Sammlung installierter Pakete, sodass zwei Projekte verschiedene Versionen derselben Bibliothek nutzen können. Siehe virtuelle Umgebungen.
Kompilierzeit und Laufzeit
„Laufzeit“ bezeichnet auch einen Zeitpunkt: den Zeitraum, in dem das Programm läuft, im Gegensatz zur Kompilierzeit, in der der Quellcode übersetzt wird. Ein Fehler, den der Compiler ablehnt, ist ein Kompilierfehler; einer, der erst während der Ausführung auftritt, etwa eine Division durch null, ist ein Laufzeitfehler. Die Laufzeitumgebung ist die Software, die in diesem zweiten Zeitraum da ist.
Selbst C, das direkt in Maschinencode kompiliert wird, hat eine kleine Laufzeitumgebung. Ein C-Programm startet in Startcode, den die Compiler-Toolchain mitliefert, und Funktionen wie printf und malloc stammen aus der C-Standardbibliothek (glibc auf den meisten Linux-Systemen, die Universal C Runtime unter Windows). Es gibt nur keine virtuelle Maschine und keinen Garbage Collector.
Häufige Irrtümer
- „Die Laufzeitumgebung ist das Betriebssystem.“ Das Betriebssystem verwaltet die Hardware für alle Programme. Die Laufzeitumgebung ist die Schicht eines einzelnen Programms darüber. Die JVM ist selbst ein Programm, das Windows, macOS oder Linux ausführt; sie ersetzt diese Systeme nicht.
- „Node.js ist eine Sprache oder ein Framework.“ Node.js ist eine Laufzeitumgebung für JavaScript. Frameworks wie Express sind Bibliotheken, die darin laufen.
- „Mit einer IDE ist auch die Laufzeitumgebung installiert.“ VS Code enthält weder Python noch Java. Editor und Laufzeitumgebung werden getrennt installiert, auch wenn manche IDEs wie IntelliJ IDEA ein JDK für dich herunterladen können.
- „Gleiche Sprache, überall gleiches Verhalten.“ Was die Laufzeitumgebung bereitstellt, etwa Dateizugriff, Standardgrenzen und verfügbare Module, kann sich unterscheiden. Code, der in Node.js läuft, kann genau deshalb im Browser scheitern.
Wie es weitergeht
Die Ausführungs-Engine in den meisten Laufzeitumgebungen ist ein Interpreter, und diese Seite vergleicht ihn auch mit einem Compiler. Unter jeder Laufzeitumgebung liegt das Betriebssystem. Um in einer Laufzeitumgebung zu üben, die du noch nicht kennst, starte den Java-Kurs oder den JavaScript-Kurs.
Häufig gestellte Fragen
Was ist ein Beispiel für eine Laufzeitumgebung?
Ist Node.js eine Laufzeitumgebung?
Was bedeutet Runtime eigentlich?
Soll ich das JRE oder das JDK installieren?
javac und alles, was im JRE steckt. Das JRE allein führt nur bestehende Java-Programme aus. Seit Java 11 verteilt Oracle nur noch das JDK, also ist für aktuelle Java-Versionen das JDK die normale Wahl.Wofür stehen JDK, JRE und JVM?
javac.