3 Das Java–Programmiersystem JDK

Werbung
3
Das Java–Programmiersystem JDK
Im vorigen Kapitel haben Sie erfahren, daß ein Computer nicht in der Lage ist,
von Menschen lesbare Programme direkt zu verstehen. Der Computer benötigt
einen Dolmetscher, der das für Menschen verständliche Programm in seine Sprache übersetzt.
Zum Java–Programmiersystem gehören sogar zwei solche Dolmetscher — der
Java–Compiler und die sogenannte Java–Virtual–Machine. Bevor wir auf die
Programmierung von Java eingehen, müssen wir Sie mit dem Java–Programmiersystem und speziell mit diesen beiden Dolmetschern vertraut machen.
3.1
Bestandteile des JDK
Schon in der Einleitung wurde erwähnt, daß Java8 nicht nur aus einer Programmiersprache besteht. Alles, was man zur Java-Programmierung benötigt,
wurde von den Schöpfern von Java, der Firma Sun9 , in einem Paket zusammengeschnürt, das sich JDK: Java Development Kit nennt.
Das JDK enthält folgende Dinge:
• Eine umfangreiche Sammlung von Programmbausteinen. Im JDK sind
bereits sehr viele Programmbausteine, sogenannte Klassen, enthalten.
Wenn man diese Bausteine in eigene Programme einbaut, kann man mit
Java relativ einfach Internet-, Graphik- oder Fenster-Anwendungen erzeugen.
Wir werden Ihnen in dieser Veranstaltung nur ganz wenige dieser Programmbausteine vorstellen, da wir zum Programmieren lernen lieber selbst
einfache Programme bauen wollen als komplizierte Programme aus diesen
Programmbausteinen zu erstellen.
• Umfangreiche Dokumentation: Für all diese fertigen Programmbausteine
(Klassen) und alle anderen Werkzeuge von Java liegt umfangreiche Dokumentation von HTML–Dateien vor, welche mit einem WWW–Browser
betrachtet werden kann.
Um die von Java bereitgestellten Programmbausteine zu verwenden, muß
man viel mit dieser Dokumentation arbeiten. Daher werden wir im Rahmen dieser Veranstaltung ein paar Aufgaben stellen, bei denen Sie sich in
der Dokumentation zurechtfinden müssen.
• Einige Werkzeuge, zum Beispiel ein Werkzeug, das Ihre Programme liest
und die enthaltene Dokumentation in HTML-Dokumenten zusammenfasst. Dieses Werkzeug werden Sie hier auch kennenlernen.
• Java–Compiler und Java–Virtual–Machine. Diese Programme sind die Dolmetscher zwischen Ihnen und dem Computer.
8 http://www.java.sun.com
9 http://www.sun.com
17
3.2
Übersetzen und Ausführen von Java-Programmen
Ein Java–Programm besteht aus einem oder mehreren Programmbausteinen,
welche Klassen genannt werden. Jede Klasse ist in der Regel in einer eigenen
Textdatei beschrieben und wird mit einem Text-Editor erstellt.
Bevor Sie weiterlesen, sollten Sie daher mit einem Text-Editor umgehen können.
Sie sollten auch mit der Kommandozeile von Unix umgehen können; Hinweise
hierzu finden Sie im Anhang A und in der ersten Hausaufgabe. Wenn Sie unter anderen Betriebssystemen als Unix arbeiten wollen, beschaffen Sie sich die
entsprechenden Informationen bitte selbst.
Beispiel: In dem untenstehenden Kasten sehen Sie ein sehr einfaches
Java–Programm. Wenn man es startet, gibt es den Text Hallo, Welt“
”
aus.
Bitte tippen Sie das Programm in Ihrem Text–Editor ab und speichern
es in einer Datei namens Hallo.java. Beachten Sie hierbei bitte, daß die
Zeilennummern nicht zum Programm gehören — wenn wir Beispielprogramme abdrucken, numerieren wir die Zeilen durch, um auf die einzelnen
Programmteile eingehen zu können.
Außerdem achten Sie beim Abtippen bitte auf die Groß- und Kleinschreibung. Für Java besteht zwischen großgeschriebenen und kleingeschriebenen Buchstaben überhaupt keine Verbindung — so ist das Wort class
für Java etwas völlig anderes als das Wort Class.
Beispiel: Einfache Java–Klasse
1
2
3
4
5
6
7
class Hallo
{
public static void main(String[] args)
{
System.out.println("Hallo, Welt");
}
}
Da in diesem Kapitel nur der Java–Compiler behandelt werden soll, wollen
wir hier auf die Funktionsweise von Java–Programmen noch nicht eingehen. Sie brauchen noch überhaupt nicht zu verstehen, was die ganzen
kryptischen Symbole in dem Programm bedeuten; im nächsten Kapitel
wird das alles viel klarer werden.
Sie sollten nun eine Textdatei namens Hallo.java mit dem Text des vorigen
Beispiels in ihrem Arbeitsverzeichnis besitzen. Als nächstes soll aus dieser Textdatei ein vom Computer ausführbares Programm erzeugt werden.
Dazu verwendet man den Java-Compiler. In Kapitel 2.4 wurde ja bereits
erläutert, daß ein Compiler ein für Menschen verständliches Programm in ein
für Computer verständliches Programm umwandelt.
Bevor Sie den Compiler verwenden können, muß auf Ihrem Computer die JavaProgrammierumgebung installiert und laufbereit sein. Falls Sie im CIP-Pool
der TU Braunschweig arbeiten, dann ist das kein Problem — hier ist alles schon
fertig installiert. Wenn Sie jedoch zuhause arbeiten möchten, müssen Sie selbst
dafür sorgen, daß die Java–Umgebung funktioniert. Dabei helfen Ihnen vielleicht
unsere im WWW verfügbaren Tips weiter (siehe auch WWW-Seite ? ). Wir
18
gehen im weiteren davon aus, daß Sie eine funktionsfähige Java-Programmierumgebung haben.
Aber nun zum Java–Compiler — dieser ist ein Programm namens javac. Um
durch ihn, die zuvor von Ihnen erstellte Datei Hallo.java übersetzen zu lassen,
wechseln Sie bitte auf einer Kommandozeile in das Verzeichnis, in welchem Sie
die Datei abgespeichert haben. Dort geben Sie dann bitte ein:
> javac Hallo.java
Der Compiler prüft darauf zunächst, ob die Textdatei Hallo.java ein gültiges
Java–Programm enthält. Java–Programme müssen einen ganz bestimmten Aufbau haben, damit sie vom Compiler übersetzt werden können. Nur wenn die
Datei tatsächlich ein gültiges Programm enthält, übersetzt der Compiler sie in
eine dem Computer verständliche Form und dient so als Dolmetscher zwischen
uns und dem Computer. Wenn Sie die Klasse korrekt abgetippt haben, sollte
das Kompilier–Kommando zu keiner Bildschirmausgabe führen.
Der Compiler ist auch kleinsten Tippfehlern gegenüber sehr ungnädig — selbst
wenn Sie beim Abtippen des Programms nur kleine Fehler gemacht haben, kann
es ihnen passieren, daß der Compiler ihr Programm mit einer Fehlermeldung
ablehnt. Falls Ihnen das beim Compiler–Aufruf passiert ist, prüfen Sie bitte, ob
Sie das Beispielprogramm exakt abgetippt haben, korrigieren es, speichern die
Änderungen (!) und probieren dann erneut den Aufruf des Compilers. Wenn das
nicht hilft, lesen Sie bitte unsere Hinweise zu Fehlermeldungen in Anhang C.
Wenn Sie auch damit nicht weiterkommen, holen Sie sich bitte einen Hiwi zur
Hilfe.
Wir gehen im folgenden davon aus, daß der Aufruf des Compilers funktioniert
hat. In diesem Fall hat der Compiler Ihr Programm übersetzt und die übersetzte
Fassung in einer neuen Datei namens Hallo.class gespeichert. Schauen Sie
bitte nach, ob diese Datei tatsächlich erzeugt wurde10 .
Die neu erzeugte Datei Hallo.class enthält die für einen Computer verständliche Version unserer Klasse. Wenn Sie diese Datei mit dem cat-Kommando auf
den Bildschirm ausgeben, erhalten Sie eine ganz wilde Ausgabe — außerdem
müssen Sie danach möglicherweise eine neue Kommandozeile öffnen, weil Ihre
alte Kommandozeile nur noch komische Zeichen anzeigt. Wir Menschen können
mit dem Inhalt der erzeugten Datei Hallo.class also nicht viel anfangen.
Wir haben Ihnen bisher aber nur die halbe Wahrheit erzählt — es ist zwar
tatsächlich so, daß der Java–Compiler die Textdatei Hallo.java in eine Maschinnensprache–Datei Hallo.class umgewandelt hat. Es kann jedoch kein tatsächlich
existierender Computer die vom Java–Compiler benutzte Maschinensprache direkt verstehen. Der Java–Compiler übersetzt nämlich jedes Programm in eine
künstliche Maschinensprache, den Java–Bytecode.
Java–Bytecode ist eine Art Computer–Esperanto. Kein Computer versteht es
direkt, doch es ähnelt den meisten Computermaschinensprachen. Soll ein Computer das in einer Java–Bytecode–Datei enthaltene Programm abarbeiten, so
benötigt er einen weiteren Dolmetscher, der den Java–Bytecode für ihn übersetzt. Dieser zweite Dolmetscher nennt sich Bytecode-Interpreter11 .
10 Wenn
11 Das
Sie nicht wissen, wie das geht, haben Sie vermutlich Anhang A noch nicht gelesen
englische Wort Interpreter“ heißt auf deutsch Dolmetscher“
”
”
19
Man tut im übrigen so, als wäre Bytecode tatsächlich eine Maschinensprache
und stellt sich gerne vor, daß irgendwo ein Computer existieren könnte, der den
Bytecode direkt versteht. Da dieser Computer aber nur durch den BytecodeDolmetscher existiert, nennt man den Bytecode-Dolmetscher auch Java Virtual Machine (JVM) (virtueller Java-Computer).
Natürlich können Java-Programme damit nicht so schnell sein wie Programme anderer Programmiersprachen, welche für den jeweilige Computer direkt
verständlichen Programmcode erzeugen. Der Prozessor Ihres Computes führt ja
kompilierte Java–Programme niemals direkt aus sondern benutzt immer seinen
Bytecode–Dolmetscher.
Der Umweg über den Java–Bytecode ist aber auch ein sehr großer Vorteil und
hat den Einsatz von Java im Internet erst ermöglicht — hierdurch werden
Java-Programme nämlich systemunabhängig. In der Theorie läuft jedes JavaProgramm auf jeder Hardware und auf jedem Betriebssystem, für das eine virtuelle Java–Maschine existiert. Man muß sich also nicht mehr entscheiden, ob
man ein Programm für Windows, Macintosh, Unix oder sonst ein Betriebssystem kompiliert. Wenn die virtuelle Java-Maschine auf diesem Betriebssystem
vorhanden ist, läuft hierauf jedes kompilierte Java–Programm.
Das Programm, welches die virtuelle Maschine simuliert, heißt java. Um die
kompilerte Datei Hallo.class auszuführen, geben Sie bitte auf der Kommandozeile das Kommando
> java Hallo
ein. Daraufhin führt der Bytecode-Interpreter den in Hallo.class enthaltenen
Bytecode aus. Es sollte folgende Meldung am Bildschirm erscheinen:
Gratuliere, Ihr erstes Java--Programm funktioniert.
Ein Hinweis noch: Beachten Sie, daß die Endung .class“ beim Aufruf des
”
Bytecode-Interpreters nicht mit angegeben werden darf. Hingegen muß beim
Aufruf des Compilers javac immer die Endung .java“ mit angegeben werden.
”
3.3
Zusammenfassung
⊲ Was ist das JDK ?
⊲ Warum benötigt man einen Compiler ?
⊲ Sie sollten den Java-Compiler aufrufen können.
⊲ Was erzeugt der Java-Compiler ?
⊲ Was ist ein Bytecode-Interpreter, und warum wird er benötigt ?
⊲ Wie unterscheiden sich Java-Compiler und Bytecode-Interpreter
bezüglich der Endung von Dateinamen ?
⊲ Überlegen Sie sich, wieso der Bytecode Java so gut für die Verwendung
im Internet geeignet macht — berücksichtigen Sie hierbei, daß für
Menschen verständlicher Programmtext meist als Geschäftsgeheimnis
angesehen wird.
20
Herunterladen