Damit ein Java-Programm ablaufen kann, muss es zuerst vom vorliegenden Quelltext in eine Zielsprache übersetzt werden, die der Rechner interpretieren kann. Den Übersetzer nennen wir Compiler.

Wie der Compiler gestartet wird, hängt von der Entwicklungsumgebung ab. Im einfachsten Falle verwenden wir den Java Entwicklungs-Baukasten (Java Development Kit, JDK) oder den Software Entwicklungs-Baukasten (SDK) von Sun. JDK ist der ältere Name, SDK der neuere.

Um den Quelltext übersetzen zu lassen, geben wir das folgende Kommando ein:

javac Hallo.java

javac ist der Sun-Java-Compiler. Beim Aufruf übergeben wir diesem den Namen der zu übersetzenden Java-Datei. Der Compiler versucht nun, aus dem Quelltext ein ablauffähiges Programm zu machen. Wenn ihm das nicht gelingt, versorgt er uns mit Fehlermeldungen.

Beispiel:
Ich habe mich bei der Eingabe versehen und system klein geschrieben.

Hallo.java:5: Undefined variable, class, or package name: system
system.out.println("Hallo!");
^
Der Compiler teilt mir den Namen der fehlerhaften Quelltextdatei mit (Hallo.java). Darin gibt es in Zeile 5 einen Fehler, den er mir genauer beschreibt:
Undefinierter Variablen-, Klassen- oder Packet-Name: system
Mit einem Dachzeichen (^) versucht er möglichst genau die Fehlerstelle anzuzeigen, was hier sehr treffsicher gelingt.

Wenn keine Syntaxfehler im Quelltext vorliegen, erzeugt der Compiler einfach die Zieldatei mit dem Namen Hallo.class. Diese Datei enthält keinen lesbaren Text mehr.