Laufzeitumgebung
Eine Laufzeitumgebung (englisch runtime environment; Abkürzung: RTE oder seltener auch RE), auch Ausführungsumgebung oder seltener Ablaufumgebung, beschreibt die zur Laufzeit von Computerprogrammen verfügbaren und festgelegten Voraussetzungen eines bestimmten Laufzeitsystems (englisch runtime system). Dieses ist durch die elementaren Bestandteile der Programmiersprache wie das Verhalten von Sprachkonstrukten und weitere Funktionen wie Typprüfung, Debugging, Codegenerierung und -optimierung definiert. Zur Laufzeitumgebung gehören weiterhin Laufzeitbibliothek, Standardbibliotheken, Programmierschnittstellen, Laufzeitvariablen sowie auf Hard- und Softwarekomponenten über Betriebssystemfunktionen.
Weitere Einzelheiten
Eine Laufzeitumgebung lädt von Anwendungsprogrammierern entwickelte Programme und lässt diese auf einer Plattform ablaufen, für welche die Laufzeitumgebung gemacht worden ist. Damit stellt sie selbst eine kleine „Plattform“ dar, auf der Programme aufsetzen können.
In manchen Fällen ist eine plattformunabhängige und dadurch portable virtuelle Maschine Bestandteil einer Laufzeitumgebung. Ein bekanntes Beispiel hierfür ist die Programmiersprache Java. Die Laufzeitumgebung eines Java-Programms wird Java Runtime Environment genannt und vereinigt die Java-Klassenbibliotheken, die z. B. für Ein- und Ausgabe verwendet werden, und die Java Virtual Machine, die für die Ausführung des Java-Bytecodes verantwortlich ist.
Ein anderes Beispiel ist Microsofts .NET-Plattform. Die .NET Common Language Runtime (CLR) ist (bei neueren Windows-Betriebssystemen) die Laufzeitumgebung für Programme, die in C#, Visual Basic .NET, J#, JScript .NET und C++/CLI geschrieben wurden.
Basis-Funktionen
Beispiele für die Basis- oder Grund-Funktionen einer Laufzeitumgebung sind:
- Lesen und Schreiben von Dateien
- Daten über Netzwerke transportieren
- Ein- und Ausgabegeräte steuern
- Daten verwalten
- Sortieren und Suchen
Plattformunabhängigkeit
Beispiele, in denen Laufzeitumgebungen Programmen Plattformunabhängigkeit ermöglichen, sind:
- Java-Applets, die von verschiedenen Webbrowsern auf verschiedenen Betriebssystemen in verschiedenen Implementierungen der Java-Laufzeitumgebungen ausgeführt werden
- Windows-Programme, die mit Wine auf x86 und x86-64-basierten Unix-Umgebungen (Linux und verschiedene BSD-Varianten sowie Solaris) laufen
- .NET-Programme, die in der .NET-Reimplementierung Mono unter Linux laufen
- XUL-Programme, die mit der XULRunner-Laufzeitumgebung ausgeführt werden
- Linux-Programme, die auf UNIX-Betriebssystemen wie BSD, Solaris und SCO-Unix in einer speziell angepassten Linux-Umgebung laufen
- IBCS-Programme, die mittels der IBCS-Unterstützung (bestehend aus Kernel-Umgebung, angepassten Systemaufrufen und Laufzeitbibliotheken) unter Linux laufen
- 32-Bit-Linux-Programme, die zusammen mit den zugehörigen 32-Bit-Bibliotheken in der 32-Bit-Umgebung von 64-Bit-Linux-Kerneln laufen. Die 32-Bit-Laufzeitumgebung besteht dabei aus der Unterstützung der 64-Bit-CPUs von Intel für 32-Bit-Code, Kernel-Unterstützung für diesen 32-Bit-Modus, 32-Bit-Betriebssystemaufrufen und einem 32-Bit-dynamischen Linker.
- DOS-Programme, die unter OS/2, UNIX und Linux im DOSEMU laufen
- 16-Bit-Windows-Programme, die unter 32-Bit-Windows, und 32-Bit-Windows-Programme, die unter 64-Bit-Windows laufen