Führt die Java Virtual Machine das Programm aus oder die CPU / Bitte Beschreibung lesen?

3 Antworten

Sowohl als auch.

Das Java-Programm selbst wird in jedem Fall von der JVM ausgeführt. Wenn die JVM selber für den "Host" (den Computer, auf dem das Ganze läuft) ein Programm ist (der Byte-Code also letztlich interpretiert wird), dann tatsächlich, wenn auch eine Virtualisierungsstufe tiefer als das Programm, das die JVM darstellt. Wenn der Java-Bytecode in "nativen" Code (für den Prozessor des Hosts) übersetzt (kompiliert) wird, dann wird die komplette Funktionalität der JVM von dem übersetzten/kompilierten Code (oder einer "Bibliothek" mit vorkompiliertem universell verwendbarem Code) übernommen, insofern existiert die JVM auch hier weiter.

Jede einzelne Operation wird letztlich von der Host-CPU ausgeführt, je nachdem indirekt (interpretiert) oder direkt (kompiliert).

(Übrigens finden sich solche und andere Abstraktionen/Virtualisierungen auf allen Ebenen, von der Hochsprache - z. B. Java- , über das Betriebssystem - Vermittlung zwischen Anwendungsprogramm und Treiberprogramm für die spezifische Hardware -, und sogar bis hinunter zu den Prozessoren selber - "Mikroprogrammierung" / "Mikrobefehl", die üblichen Desktop-Prozessoren sind also ihrerseits virtuelle Maschinen, die Bytecode interpretieren.)


Frage999713 
Beitragsersteller
 08.01.2025, 08:58

Vielen Dank. Ich habe es mir durchgelesen jetzt ist mir aber nicht bewusst wann die JVM etwas ausführt und wann die CPU. Ist hier nur die Übersetzung in Maschinencode das was die JVM ausführt oder führt die JVM noch etwas anderes aus einem Programm aus?

Sofern ich das richtig interpretiere wird Java Bytecode erzeugt. Dieser muss noch mit Hilfe eines Interpreters verarbeitet werden. Damit kann eine CPU diesen Code nicht direkt verarbeiten.


Frage999713 
Beitragsersteller
 07.01.2025, 10:45

aber nachdem die JVM den code interpretiert hat führt doch die CPU das Programm aus und nicht die JVM ist das richtig?

SpezialAntwort  07.01.2025, 10:55
@Frage999713

Rechenoperationen oder das tatsächliche Betreiben von Algorithmen (dazu zähle ich auch Computersprach-Interpreter) unterliegt natürlich der CPU. Aber in diesem Fall über quasi einen aufwendigeren Umweg. Reiner Maschinencode ist die eigentliche Sprache der CPU.