6.2 Übersetzung des Quellcodes

6.2.1 Übersetzungsprogramme

Grundsätzlich gibt es zwei alternative Ansätze den in einer höheren Programmiersprache verfassten Quellcode in eine Maschinensprache zu übersetzen. Als Übersetzungsprogramm kommt dabei im ersten Fall ein Compiler und im zweiten Fall ein Interpreter zum Einsatz.

Ein Compiler übersetzt den vom Programmierer geschriebenen Quellcode in ein ausführbares Maschinenprogramm. Das Programm kann dann auf jedem Rechner, der über einen geeigneten Prozessortyp verfügt, ausgeführt werden.

Merke: Compiler

Ein Interpreter läuft auf dem Computer des Benutzers und übersetzt eine Anweisung des Quellcodes erst dann in entsprechenden Maschinencode, wenn diese ausgeführt werden soll.

Merke: Interpreter

Im Gegensatz zu einem Compiler erzeugt ein Interpreter also keinen speicherbaren Maschinencode. Der Vorteil eines Compilers liegt daher darin, dass das Programm schneller ausgeführt wird, da es nicht mehr übersetzt werden muss.

Der Interpreter bietet wiederum den Vorteil, ein Programm Schritt für Schritt übersetzen und ausführen zu können. Auf diese Art und Weise lässt sich ein Programm testen und auf Fehler überprüfen.

6.2.2 Übersetzung von Java-Quellcode

Java geht nun einen Mittelweg. Ein Compiler übersetzt den Java-Quellcode zunächst in einen maschinenunabhängigen Bytecode. Die Java Virtual Machine (JVM) übersetzt als Interpreter den Bytecode zur Laufzeit in die für den jeweiligen Prozessortyp verständliche Maschinensprache und führt ihn aus. Auf einem Rechner, auf dem ein in Java geschriebenes Programm ausgeführt werden soll, muss daher immer eine für den jeweiligen Prozessortyp zugeschnittene Java Virtual Machine installiert sein.

Java-Programme können damit auf verschiedenen Computersystemen mit Unterschieden in Architektur, Prozessor, Compiler, Betriebssystem usw. ausgeführt werden, sofern dort die entsprechende Java Virtual Machine installiert ist. Diese so genannte Plattformunabhängigkeit ist ein großer Vorteil der Programmiersprache Java.

img/6_3_JVM.svg
Abb. 6-3: Übersetzung von Java-Quellcode