Java Runtime Environment (JRE) ist eine Softwareschicht, die auf dem Betriebssystem eines Computers ausgeführt wird und zusätzliche Dienste bereitstellt, die ein bestimmtes Java-Programm ausführen muss. JRE ist eine von drei miteinander verbundenen Komponenten, die ein Trifecta für die Entwicklung und Ausführung von Java-Anwendungen bilden. Die anderen beiden sind:
- Java Development Kit (JDK): Eine Reihe von Tools zum Entwickeln von Java-Anwendungen. JDKs werden von Entwicklern nach Java-Version und Edition ausgewählt, z. B. Java Enterprise Edition. Unabhängig von Version oder Edition enthält JDK immer eine kompatible JRE.
- Java Virtual Machine (JVM): Führt Live-Java-Anwendungen aus. Jede JRE enthält eine Standard-JVM.
JRE kombiniert mit dem JDK erstellten Java-Code mit den Bibliotheken, die zum Ausführen auf einer JVM erforderlich sind. Anschließend wird eine Instanz der JVM erstellt, die das resultierende Programm ausführt.
JRE bietet viele Integrationsbibliotheken wie Java IDL, Java Database Connectivity und Java Naming and Directory Interface, mit denen Entwickler nahtlose Datenverbindungen zwischen Anwendungen und Diensten herstellen können. JRE enthält auch Pakete, die für das Design von Anwendungen grundlegend sind. Einige Pakete enthalten das Sammlungsframework, Parallelitätsdienstprogramme, die Voreinstellungs-API und das Java-Archiv.
Funktionsweise der Java-Laufzeitumgebung
Um eine Laufzeitumgebung zu erstellen, interagieren JDK und JRE, um eine reibungslose Ausführung von Java-basierten Anwendungen in jedem Betriebssystem zu ermöglichen. Folgende Prozesse finden zur Laufzeit statt:
ClassLoader
Der Java ClassLoader lädt dynamisch alle erforderlichen Klassen, die zum Ausführen eines Java-Programms erforderlich sind. Es bietet Sicherheit, indem Namespaces des lokalen Dateisystems von den über das Netzwerk importierten Namespaces getrennt werden. Da Java-Klassen nur dann in den Speicher geladen werden, wenn dies erforderlich ist, verwendet die JRE ClassLoader, um diese Anforderung zu verarbeiten.
Bytecode-Verifizierer
Der Bytecode-Verifizierer stellt das Format und die Genauigkeit des Java-Codes sicher, bevor er an den Interpreter übergeben wird. Es wird auch nach unzulässigem Code gesucht, bei dem es sich um Code handelt, der die Zugriffsrechte auf Objekte oder die Implementierung von Zeigern verletzt. Wenn ein Code verletzt wird, wird die Klasse als beschädigt betrachtet und nicht geladen.
Dolmetscher
Nachdem der Bytecode erfolgreich überprüft wurde, wird er zur Laufzeit vom Interpreter geladen, überprüft und ausgeführt. Der Interpreter erstellt eine Instanz der JVM, mit der das Programm nativ auf der zugrunde liegenden Hardware ausgeführt werden kann.