Cover Page

Inhaltsverzeichnis

Vorwort

Kapitel 1: Ein Loblied auf Java

1.1 Das Profil von Java

1.2 Programmiersprache, Interpreter und Compiler

1.3 Die virtuelle Maschine und das ultimative Wohnmobil

Kapitel 2: Entwicklung mit IDEen und ohne

2.1 Ein kleines Programmbeispiel als Opfer

2.2 Java-Programmierung mit dem JDK

2.3 Eclipse

2.4 Aufgabe: Grüßaugust selbst erstellen

Kapitel 3: Aufstieg zum Programmierer

3.1 Java-Programm-Skelett

3.2 Bezeichnende Namen

3.3 Kommentare sind nett zu lesen

3.4 Aufgaben

3.5 Variable Attribute

3.6 Primitive Typen

3.7 Kleines Rechenwerk

3.8 Zeichen

Kapitel 4: Entscheiden und Wiederholen

4.1 Nur unter einer Bedingung

4.2 Logeleien

4.3 Die Fallunterscheidung – switch/case

4.4 Endlich lernen wir Schleifen zu binden!

4.5 Aufgaben

4.6 Wenn Schleifen brechen müssen

4.7 Überblick behalten mit Struktogrammen

Kapitel 5: Funktionierende Methoden

5.1 Salzkartoffeln kochen für Anfänger

5.2 Methoden mit Datenfluss

5.3 Aufgaben

5.4 Überladen von Methoden

5.5 Rekursionen

Kapitel 6: Klasse Objekte

6.1 Ein Beispiel für objektorientierte Programmierung

6.2 Eine Klasse im Selbstbau

6.3 Die Vorteile der Privatsphäre

6.4 Konstruktionsbedingt

6.5 Statische Attribute und Methoden

6.6 Aufzählungstyp mit enum definieren

6.7 Aufgabe: Setter-Methode

6.8 Verteilung der Klassen auf Pakete

Kapitel 7: Arrays

7.1 Wir bauen ein Array

7.2 Wir spielen Lotto!

7.4 Ein Array für die Monatstage

7.5 Eine spezielle for-Schleife für Arrays

7.6 Arrays von Arrays

7.8 Bermuda: Die Schiffe und das Meer

Kapitel 8: Die Strings: Viele, viele Buchstaben

8.1 Auch Strings haben so ihre Methoden

8.2 Beispiel Pfadumbau

8.3 Aufgaben

8.4 Typwandler

8.5 Das String-Array der Methode main

Kapitel 9: Klassen erweitern

9.1 Noch mal Klasse: Der Mensch als Objekt

9.2 Was den Mensch vom Tier unterscheidet

9.3 Referenzen auf erweiterte Objekte

9.4 Object als der Urahn aller Objekte

9.5 Die Mensa der Universität Norgaardholz

9.6 Ein Objekt weiß, was es tut: Polymorphie

9.7 Eine abstrakte Suppe

9.8 Die Mahlzeit als vollkommen abstraktes Interface

9.9 Das Interface und die Mehrfachvererbung

9.10 Der Beruf wird geschützt

9.11 Aufgaben

Kapitel 10: Hoffentlich Exception-versichert

10.1 Ausnahmsweise Fehler

10.2 Eingabe einer Zahl per Dialogbox

10.3 Der catch-Parameter

10.4 Weiterwerfen

10.5 Selber werfen

10.6 ... und schließlich

10.7 Der Stammbaum der Exceptions

10.8 Die Katzen-Exception

10.9 Noch mal clone

Kapitel 11: Fertige Bausteine zur Selbstbedienung

11.1 Wie der Zufall es will

11.2 Das Datum und der Kalender

11.3 Die Util-Klasse Arrays

11.4 Rechnerisches aus der Math-Klasse

Kapitel 12: Fenster, Mäuse und Grafik

12.1 JFrame: Guck mal durchs Fenster

12.2 Ereignisreichtum

12.3 Zeichnen und Malen

12.4 Modernisierung: Graphics2D

Kapitel 13: Das Spiel Bermuda als Swing-Anwendung

13.1 Objektverteilung

13.2 Auf der Werft: Wir bauen Schiffe!

13.3 Platzwart für das Spielfeld

13.4 Und nun mit Swing

13.5 Bermuda mit Bildern

13.6 Wir erstellen eine Bermuda-JAR-Datei

Kapitel 14: Erstellen eines Layouts

14.1 Noch mal auf Anfang

14.2 Alle bitte nebeneinander aufstellen! FlowLayout

14.3 Gleichmäßig vergittert: GridLayout

14.4 Die Mitte wird fett: BorderLayout

14.5 Kombination der Layouts mit Panels

14.6 GridBagLayout

14.7 BoxLayout

14.8 Null-Diät für Layout-Manager

14.9 Aufgaben

Kapitel 15: Kontrollelemente

15.1 Hochgradiger Simpel: Das Label

15.2 Das Auffangen der Ereignisse

15.3 Druckvolle Buttons

15.4 Ein BMI-Programm als Spielwiese

15.5 Der Button hat einen Haken

15.6 Menüs und Dateidialoge

15.7 Der Fokus und der Multiliner

15.8 Aufgaben

Kapitel 16: Android

16.1 Alles ist ein wenig anders

16.2 Arbeitsumgebung schaffen

16.3 Schnell mal 'ne App

16.4 Weitere Kontrollelemente unter Android

16.5 Bermuda auch auf Android?

Kapitel 17: Datenelemente sammeln und anordnen

17.1 Java Collection Framework

17.2 Ein Ausflug in die Generics

17.3 Ein eigener generischer Container

17.4 Das Interface Collection und seine Methoden

17.5 Listig: ArrayList und LinkedList im Vergleich

17.6 Ausmist: Q-Mist

17.7 Implementierung von Set

17.8 Map-Implementierung: Der assoziative Speicher

17.9 Die Algorithmen des Java Collection Framework

Kapitel 18: Dateien halten die Daten frisch

18.1 Serialisierte Klassen

18.2 Spielstandsicherung für Bermuda

18.3 Sequentielle Dateien

18.4 Random-Access-Dateizugriffe

18.5 Umgang mit dem Dateisystem

Kapitel 19: Datenbankzugriff per JDBC

19.1 Eine Datenbank für die Bonbonbude

19.2 Wenn Datenbanken einmal groß werden

Kapitel 20: Parallelverarbeitung mit Threads

20.1 Leichtgewichtige Threads

20.2 Runnable Thread

20.3 Computer kaputtmachen!

20.4 Synchronschwimmen

Kapitel 21: Schluss

Stichwortverzeichnis

titlepage_image

Vorwort

In diesem Buch lernen Sie, warum Nashörner kein Bankkonto haben, dass Katzen besser kratzen als sich zu übergeben, wie man Bauklötze arrangiert, dass String-Tangas gar nicht so erotisch sind und dann noch die Programmiersprache Java. Sie werden Programme erstellen, um das Übergewicht des Autors zu quantifizieren oder um Schiffe im Bermuda-Dreieck zu suchen.

Ich habe eine ganze Weile überlegt, wer Sie sind, der Sie dieses Buch lesen. Ich gehe mal davon aus, dass Sie vielleicht noch nicht oft oder noch nie programmiert haben. Aber pfiffig sollten Sie schon sein. Das sind nämlich alle Programmierer – fragen Sie doch mal einen!

Wir fangen also bei Null an. Sie werden Variablen, Schleifen und Methoden kennenlernen. Wir werden in die wunderbare Welt der objektorientierten Programmierung eintauchen und Sie können beim nächsten Stammtisch endlich mit Wörtern wie Polymorphie, Interface und Exception protzen. Die Welt der grafischen Oberflächen ist viel zu attraktiv, um sie zu ignorieren. Wir werden in Swing zeichnen und Dialoge erstellen. Und dann werden Sie sehen, wie man Android-Apps programmiert. Nun kommen wir schon in die Regionen für fortgeschrittene Programmierer. Wir sehen uns die Datencontainer des Java Collection Frameworks an, schreiben und lesen Dateien und Datenbanken und schauen zum Schluss noch einmal kurz, wie Programme parallel laufen können.

Gedichte kann man prima auswendig lernen. Programmieren lernt man allerdings nur dadurch, dass man es tut. Sie finden also immer wieder Beispiele, die Sie am besten auch gleich ausprobieren und vielleicht sogar selbstständig erweitern. Als Anregungen sind an verschiedenen Stellen Übungen eingestreut.

Vielleicht sollte ich Sie warnen: Die Leute von Wrox haben mir keine Vorschriften zu diesem Buch gemacht. Alles war erlaubt. Einfach alles. Es gab zwei Bedingungen: Ich darf nicht gegen Gesetze verstoßen und der Leser muss Java lernen. Es ist aber nicht so schlimm, wie Sie jetzt vielleicht fürchten. In weiten Teilen ist es wirklich ein seriöses Fachbuch.

Damit es aber ein Fachbuch wird, haben recht viele Leute ihren Senf dazugegeben. Da wäre einmal meine Lektorin Christine Siedle. Sie hat dieses Buch überhaupt erst möglich gemacht. Dem Verlag hat sie weisgemacht, das Buch hätte das Potential zum Bestseller oder wenigstens eine Chance auf den Friedenspreis des Deutschen Buchhandels. Mir hat sie weisgemacht, ich könne sogar Harry Potter dazu bringen, Java zu lernen, wenn ich mich nur noch ein klein wenig steigere. So hat sie als Anwalt des Lesers das Buch in eine gute Richtung gedrängt.

Fachlich hat Ralf Dilger-Klett geprüft, ob das, was ich erzähle, überhaupt stimmt. Er ist ein erfahrener Dozent für Java, C++ und alles was objektorientiert ist. Er kennt sich auch mit Entwurfsmustern und Android gut aus und konnte darum gute Hilfestellung geben.

Auch meine ehemaligen Kollegen bei der Firma Tacoss, insbesondere Christian Tank und Claus Erichsen haben mir mit Hinweisen und Rat zur Seite gestanden.

Auch meine Familie hat indirekt an diesem Buch mitgewirkt. Sie haben mich mit Nahrungsmitteln versorgt und versucht, mir die Ruhe zu verschaffen, die überhaupt möglich ist, wenn zwei pubertierende Jungen das Haus bevölkern und ein dritter gerade seine Trotzphase auslebt. Selbst die Katze hatte ihren Anteil, wie Sie am Kapitel über Exceptions feststellen werden. Allerdings ist sie inzwischen verstorben. Aber ich bin unschuldig. Ehrlich!

Arnold Willemer
Norgaardholz

Kapitel 1

Ein Loblied auf Java


Inhalt

Von dem Autor eines Fachbuchs für eine Programmiersprache erwartet man, dass er im ersten Kapitel ein Loblied auf diese Sprache singt. Wenn Sie dieses Buch kaufen, haben Sie vermutlich gute Gründe, Java lernen zu wollen. Warum soll ich dann noch etwas dazu sagen? Ich werde doch einem potentiellen Leser nicht von Java abraten und so einen weiteren Verkauf verhindern! Wie soll ich dann denn Bestseller-Autor werden? Aber gut! Natürlich bin ich gern bereit, etwas Gutes über Java zu sagen.

1.1 Das Profil von Java

Java! Kaum eine Programmiersprache hat solch einen hübschen Namen! Klingt Java nicht nach Südsee, Urlaub und weißen Stränden? Benannt wurde Java aber eigentlich nach Kaffee. Auch das ist schön. Denn wer von uns mag denn keinen Kaffee? Wer dann tatsächlich weder Kaffee noch Südseeinsel mag, wird wohl Python programmieren müssen. Aber ob Schlangen wirklich schöner sind? Vielleicht sollte ich doch erzählen, welche Besonderheiten Java so hat.

Objektorientiert

Java ist objektorientiert. Und weil objektorientiert beim Programmieren heutzutage ganz wichtig ist, zwingt Java den Programmierer dazu, ob er will oder nicht. Nun ist die objektorientierte Programmierung, von ihren Fans auch kurz OOP genannt, wirklich hilfreich bei der Bewältigung großer Projekte. Darum sollten Sie Java diesen Zwang nicht übel nehmen. Damit ich nicht allzu sehr ins Schwärmen gerate, werde ich hier auf Details zur OOP verzichten und dies an geeigneter Stelle nachholen. Beispielsweise im Abschnitt 6.1.

Abgesichert und gut gepolstert

Ein typisches Merkmal von Java ist der Versuch, so viele Fehlerquellen auszuräumen wie irgend möglich und so den Programmierer vor seinem eigenen Fehlverhalten zu beschützen. Ein gutes Beispiel ist die Müllabfuhr, die Garbage Collection. Programmierer vergessen schon mal die Beseitigung ihrer Speicherleichen. Und wir wissen ja alle, was mit alterndem Müll geschieht: Er beginnt langsam aber sicher intensiv zu stinken. Aber trotz aller Vorsichtsmaßnahmen durch Java ist eine sorgfältige Programmierung nicht überflüssig geworden. Ja, es gibt das Gerücht, dass auch schon einmal ein Java-Programm abgestürzt sei.

Portabel

Wirklich brillieren kann Java allerdings auf dem Gebiet der Portabilität. Der Programmierer schreibt ein Programm, übersetzt es und es läuft auf Linux, Mac und Windows. Das ist schon sehr beeindruckend. Bei vielen anderen Programmiersprachen müssten Sie das Programm für jede Plattform neu schreiben. Ein Java-Programm sollte hingegen eigentlich auch auf jedem Telefon, der programmierbaren Fernbedienung, dem Toaster und auf allen Internetseiten laufen. Aber da ist sie wieder, die lästige Realität. Bei den Telefonen sind die Displays sehr klein, und bei Webanwendungen gibt es aus Sicherheitsgründen keinen Zugriff auf die lokalen Dateien. So müssen vielleicht nicht immer gleich Extra-Süppchen gekocht werden, aber manchmal muss die Beilage an das jeweilige Ziel angepasst werden. Weniger kulinarisch gesagt: Sie können zwar auch auf exotischen Umgebungen Java programmieren, müssen aber ein paar Einschränkungen und Besonderheiten in Kauf nehmen.

Und dann gibt es noch marktpolitische Gründe, warum Java-Programme nicht überall da laufen dürfen, wo sie könnten. So hat Microsoft schon früh seine Unterstützung für Java zurückgezogen, als klar wurde, dass der Benutzer bei portablen Programmen frei wählen kann, ob er statt Windows vielleicht ein ganz anderes Betriebssystem verwenden möchte. Microsoft konnte zwar nicht verhindern, dass Java-Programme auch auf Windows laufen, sie müssen sich die Umgebung, in der sie laufen, aber selbst mitbringen. Apple unterbindet die Programmierung von iPhone-Apps in Java, angeblich um Sicherheitslücken zu vermeiden. Ein Schelm, der »Android« dabei denkt.

Alle Standards eingebaut

Wenn eine Anwendung überall laufen soll, ergibt sich zwangsläufig, dass alles an Bord von Java sein muss, was das Programm je benötigen könnte. So ist insbesondere die grafische Oberfläche der Programme aus der Sicht des Java-Programmierers überall gleich. Andere Programmierer müssen für Windows entweder Win32, MFC oder .NET lernen. Für Linux sollten Sie GTK oder Qt beherrschen. Und natürlich hat der Mac auch eine ganz eigene Programmierschnittstelle. Dasselbe gilt auch für Datenbanken oder die Prozessverwaltung. Der Java-Programmierer programmiert alle Datenbanken gleich. Willkommen in der wunderbar langweiligen Welt der standardisierten Umgebung!

Performance

Ja, zugegeben: Java-Programme haben nicht den Ruf, mit quietschenden Reifen ihre Aufgaben zu erledigen. Das beginnt schon beim Start einer Java-Anwendung. Da startet nämlich zunächst die virtuelle Maschine durch, bevor das Programm das erste Mal husten kann. Nun weiß jeder Power-User, dass Java-Programme interpretiert werden (was das ist, steht im nächsten Abschnitt), und Interpreter haben seit den Zeiten von BASIC den Ruf elender Schnarchnasen.

Nun übersetzt das Java-Laufzeitsystem einen vorkompilierten Code, der auf schnelle Ausführung optimiert ist, und nicht irgendwelche BASIC-Textzeilen. Außerdem ist es auch schon über zwanzig Jahre her, dass die meisten C-64 ihren Weg in den Elektronikschrott gefunden haben. Und seither sind unsere Computer so schnell geworden, dass Sie einen aktuellen Computer vom Discounter nur an seine Grenzen fahren können, indem Sie ihm mit der Konvertierung von Spielfilmen drohen oder einen Ego-Shooter spielen wollen, bei dem Sie das Blut in 3D spritzen sehen wollen. Auf einem Durchschnittsrechner werden Sie also keine Verzögerung bei der Ausführung der Java-Programme bemerken. Überraschenderweise benutze ich gerade für den Videoschnitt seit Jahren ein Java-Programm, das ich unter anderem wegen seiner Geschwindigkeit schätze.

1.2 Programmiersprache, Interpreter und Compiler

Java ist eine Programmiersprache. Programmiersprachen sind für Menschen gemacht, damit sie darin Anweisungen für Computer codieren können. Das Problem ist, dass Computer eigentlich solche Sprachen nicht verstehen. Sie schwärmen eher für Zahlenkombinationen, die sie dann für Befehle halten und ausführen. Diese Diskrepanz muss irgendwie überbrückt werden. Es gibt zwei Arten von Programmen, die genau dies tun:

Und was macht nun Java? Beides! Ich habe ja gesagt, dass der Java-Code interpretiert wird. Aber das ist nur die halbe Wahrheit. Zuvor übersetzt der Java-Compiler, der von seinen Freunden javac genannt wird, den Quellcode in einen Maschinencode für eine Maschine, die es gar nicht gibt. Und dieser Maschinencode wird dann auf jeder Zielmaschine interpretiert.

1.3 Die virtuelle Maschine und das ultimative Wohnmobil

Sowohl Compiler als auch Interpreter einzusetzen, erscheint zunächst völlig sinnlos, das dahinterstehende Prinzip lässt sich aber an meinem Traum eines ultimativen Wohnmobils recht anschaulich erläutern: Es ist zusammengebaut aus einem Kleinlaster und einem alten Wohnwagen. Da sind richtig gute Ideen eingebaut. Die Betten sind bequem und mit einem Griff zur Sitzecke umgebaut. Die energieeffiziente Küche nutzt den kleinen Platz ideal. Die Dusche verbraucht kaum Wasser und hat doch einen vollen Strahl. Jetzt stellen Sie sich noch vor, das Wohnmobil habe einen speziellen Antrieb, der auf Solarenergie und Wasserstoff basiert. Wenn es nicht fährt, nutzt es die Sonne, um das bei Regen aufgefangene Wasser in Wasserstoff und Sauerstoff aufzuteilen.

Das Super-Wohnmobil hat nur einen Nachteil. Es fährt nur auf der Straße. Das ist für ein Wohnmobil nicht ungewöhnlich, ich fahre aber nun mal genauso gerne mit einem Boot in Urlaub. Es wäre also toll, wenn ich als Unterbau auch einen Bootsrumpf darunter setzen könnte. Es gibt eine klare Verbindung, an denen die Anschlüsse und das Zahnrad für den Antrieb sitzen und schon kann die Wohnzelle einfach von einem Kran vom Boot auf den Laster und umgekehrt gesetzt werden. Wenn man nun noch jemanden findet, der einen Luftkissenunterbau herstellt, könnte man sogar in den Everglades Urlaub machen und Alligatoren füttern. Letzteres ist aber vermutlich verboten. Vor allem wenn man dazu die Schwiegermutter verwendet.

1

Abbildung 1.1 Vom Wohnmobil zum Wohnboot

 

Und was hat das jetzt mit der virtuellen Maschine zu tun? Ganz einfach! Das Programm ist die Kabine. Sie verändert sich nicht. Sie setzt auf einem Unterbau auf, der sie von der harten Wirklichkeit trennt. Ob das Vehikel zu Wasser oder zu Land unterwegs ist, muss die Kabine nicht wissen. Der Unterbau ist also die Virtuelle Maschine und die Kabine die Java-Anwendung. Die virtuelle Maschine ist das Java Runtime Environment (JRE). Bei einigen Systemen ist es bereits installiert oder eingebaut, beispielsweise bei Android-Handys oder bei Webbrowsern. Bei anderen Systemen muss man es im Zweifelsfall nachinstallieren.

Wo wir gerade bei dreibuchstabigen Kürzeln sind: Es gibt da noch das JDK. Das JDK ist das Java Development Kit. Das ist der Werkzeugsatz, den der Programmierer benötigt, um Java-Programme zu entwickeln. Es enthält beispielsweise den Compiler, der aus dem Source-Code den Zwischencode erzeugt, der dann später von der JRE ausgeführt werden kann. Das JDK enthält den Compiler für den Code der virtuellen Maschine, und das JRE interpretiert diesen Code für die Zielmaschine.

Kapitel 2

Entwicklung mit IDEen und ohne


Inhalt

Ich denke, dass nun der Tatendrang aus Ihnen hervorbricht, denn es sollen Programme entstehen. Dazu benötigen Sie als Programmierer Werkzeug und davon gibt es reichlich und erstaunlicherweise alles kostenlos. Die meisten Programmierer bevorzugen eine IDE. IDE hat leider nicht zwangsläufig etwas mit Idee zu tun, sondern ist die Abkürzung für Integrated Development Environment, also integrierte Entwicklungsumgebung. Diese Programme enthalten einen Editor, den Compiler, einen Debugger, eine Projektverwaltung und einige sehr praktische Tools. Aber wo wir gerade bei Idee sind: Es ist nicht falsch, wenn ein Java-Programmierer eine Idee davon hat, wie es unter der Motorhaube seiner IDE aussieht. Dazu besuchen wir das Java Development Kit.

2.1 Ein kleines Programmbeispiel als Opfer

Um mit den Entwicklungsumgebungen wenigstens kurz spielen zu können, brauchen wir erst einmal ein kleines Java-Programm. Seit dem Erscheinen der Programmiersprache C hat es sich eingebürgert, ein Minimalprogramm zu erstellen, das Hallo Welt! auf den Bildschirm schreibt. In Java sieht das so aus:

public class ErsteKlasse {
    public static void main(String[] args) {
        System.out.println(Hallo Welt!);
    }
}

Listing 2.1 Erster Versuch

 

Viele Details dieses kleinen Programms werden erst im Laufe des Buchs genauer erläutert. Aber damit nicht der Eindruck entsteht, die Zeilen seien vom Himmel gefallen, darf ich Sie vielleicht mit ihnen kurz bekannt manchen.

Der Programmtext steht in einer Datei, die den Namen der Klasse tragen muss und auf die Extension java endet, hier also ErsteKlasse.java. Die Groß- und Kleinschreibung ist dabei signifikant. Das birgt eine Überraschung, weil es bei Windows anders ist. Dort würden ErsteKlasse.java und ersteklasse.java dieselbe Datei bezeichnen.

Der Quelltext darf übrigens nicht mit einer Textverarbeitung wie Word oder OpenOffice.Writer geschrieben werden. Ein Quelltext wird mit einem Editor geschrieben, der keinerlei zusätzliche Informationen wie Schriftarten oder Ausrichtungen hinterlegt. All das würde einen Compiler nur irritieren. Stattdessen werden nur die nackten Texte geschrieben. Man spricht auch von rohem Text (raw text).

Dafür sind viele dieser Editoren auf Programmierung spezialisiert und färben beispielsweise die Quelltexte schön bunt, damit der Programmierer schnell erkennt, was Schlüsselworte sind oder ob alle geöffneten Klammern auch wieder geschlossen werden. Da können Textteile zusammengeklappt werden oder auch Referenzhilfen angezeigt werden. Sie werden Ihre Textverarbeitung deshalb langfristig bestimmt nicht vermissen!


Warnung
Verwenden Sie zum Programmieren einen Editor statt einer Textverarbeitung! Der Compiler verzehrt Quelltexte am liebsten schön roh.

2.2 Java-Programmierung mit dem JDK

Alles, was Sie für die Java-Programmierung brauchen, finden Sie grundsätzlich im Java Development Kit (JDK). Allerdings enthält es keine grafischen Werkzeuge, sondern Programme, die in klassischer Weise über die Kommandozeile aufgerufen werden. Zwar haben Programmierer, die auf diese Weise arbeiten, den Ruf von Leuten, die sich lieber im Wald ein Zelt aus Zweigen bauen, als eine Ferienwohnung auf Mallorca zu mieten, aber dennoch sollten Sie sich ein wenig mit dem JDK anfreunden. Es gibt Fälle, in denen ein Griff zur Kommandozeile der schnellste Weg zur Lösung ist. Außerdem verstehen Sie so besser, was Ihre Java-Entwicklungsumgebung so treibt.

Dafür müssen Sie das JDK aber erst mal haben. Linux-Benutzer installieren das JDK über das distributionseigene Installationstool. Windows- und Mac-Benutzer laden das JDK von der Website von Oracle:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Hier suchen Sie nach dem Link zum Download des JDK der Java Standard Edition (Java SE). Nun können Sie Ihre Betriebssystemversion auswählen. Bei Windows gibt es für 32-Bit- und 64-Bit-Versionen je eine EXE-Datei. Nun müssen Sie noch die Lizenzbedingungen akzeptieren. Anschließend können Sie die Datei herunterladen. Diese klicken Sie doppelt an und folgen den Installationsanweisungen. Auch für Mac finden Sie eine Standardinstallationsdatei, die Sie ebenso herunterladen und doppelklicken.

Windows

Das JDK kommt in Form einer ausführbaren Datei, die eine ganz normale Installation durchführt, wie Sie sie auch von anderen Programmen her kennen. Sie können alle Schritte einfach bestätigen. An der Stelle, wo die Installation fragt, wo sie alles abladen soll, sollten Sie sich mindestens merken, wo das Paket hingekommen ist. Typischerweise installiert die Routine in ein Verzeichnis, das mit C:\Program Files\Java\jdk beginnt. Das Verzeichnis enthält dann die Versionsnummer. Merken Sie sich diesen Pfad!

Wenn Sie den Java-Compiler und andere Tools von der Kommandozeile aufrufen wollen, dann sollten Sie nun noch die Umgebungsvariable PATH anpassen. Diese können Sie bei Windows erreichen, indem Sie die Windows-Taste mit der Pause-Taste zusammen drücken. Es erscheint ein Fenster, in dem Sie Erweiterte Systemeinstellungen anklicken. Es erscheint ein weiteres Fenster. Unter dem Reiter Erweitert finden Sie den Button Umgebungsvariablen. Es startet ein weiteres Dialogfenster, in dem Sie PATH als neue Variable anlegen können. Als Wert hängen Sie den Pfad des JDK an, dem Sie noch ein Verzeichnis bin anhängen, weil sich darin die ausführbaren Programme befinden.

PATH=%PATH%;C:\Programme\Java\jdk\bin

Sollten Sie noch Windows XP verwenden, öffnen Sie das Start-Menü und klicken mit der rechten Maustaste auf Arbeitsplatz. Im Kontextmenü wählen Sie Eigenschaften aus und kommen dann über Erweitert zu Umgebungsvariablen.

MacOS

Liebhaber des Macintoshs finden auf ihrem Gerät bereits ein komplettes JDK, sofern ihr Gerät mit einem Betriebssystem bis 10.6 ausgestattet ist. Besitzer einer neueren Version müssen sich auf die Website von Oracle begeben und dort das JDK herunterladen. Die Datei ist eine typische Installationsdatei für den Mac und wird genauso installiert wie jedes andere Programm auch. Allerdings sind Administrationsrechte erforderlich, weil das JDK grundsätzlich für alle Benutzer des Rechners eingerichtet wird.

Linux

Wenn Sie das JDK unter Linux installieren wollen, tun Sie sich den Gefallen und halten Sie sich an die normalen Paket-Installationen Ihrer Linux-Distribution. Erstens ist es der leichteste Weg. Zweitens sind Sie sicher, dass Sie keine Programme zweifelhafter Herkunft installieren. Und drittens sorgt die Installationsroutine dafür, dass alle Umgebungsvariablen korrekt gesetzt sind und Sie einfach anfangen können.

Rufen Sie das zu Ihrer Distribution gehörige Installationstool auf. Das könnte Synaptec, Software-Center oder Muon heißen, je nachdem, welche Distribution und welchen Desktop Sie verwenden. Darin suchen Sie nach JDK und finden das Paket default-jdk. Dieses Pseudopaket verweist auf die aktuellste Version des Standard-JDKs. Dieses installieren Sie. Alle weiter benötigten Pakete werden automatisch mitinstalliert. Alle Umgebungsvariablen werden automatisch gesetzt.

Compiler aufrufen

Damit haben Sie das Werkzeug an Bord, um Ihre Java-Programme kompilieren und dann auch ausführen zu können. Der Java-Compiler heißt javac und kann direkt mit dem Namen der Quelltextdatei von der Konsole aus gestartet werden. Unter Windows heißt diese cmd.exe. Sie können sie direkt über das Menü Start | Ausführen aufrufen. Sie finden sie auch unter dem Namen Eingabeaufforderung im Zubehör. Auf dem Mac suchen Sie beispielsweise über (⌘)+(Leertaste) nach dem Programm Terminal. Unter Linux gibt es an jeder Ecke eine Terminal-Emulation, meist unter dem Namen Terminal oder Konsole in den Untermenüs Zubehör oder System.

Sie wechseln mit dem Befehl cd in das Verzeichnis, in dem Ihr Java-Quelltext ErsteKlasse.java steht und rufen dann den Compiler auf:

javac ErsteKlasse.java

Falls Sie Fehlermeldungen bekommen, die besagen, dass javac nicht gefunden wurde, prüfen Sie Ihre Installation. Sollte der Compiler den Quelltext beanstanden, schieben Sie bitte zuerst mir die Schuld in die Schuhe und prüfen Sie dann, ob Sie beim Abtippen einen Fehler gemacht haben. Sollten hingegen keine Fehler gemeldet werden, erzeugt der Compiler aus der Datei ErsteKlasse.java eine Datei namens ErsteKlasse.class.

Diese Datei kann nicht einfach gestartet werden, weil sie weder unter Windows, noch Mac oder Linux selbstständig läuft, deswegen kommt jetzt das Java Runtime Environment ins Spiel. Das Runtime Environment starten Sie von der Konsole aus mit java. Als Parameter erhält es den Dateinamen der vorkompilierten Java-Klasse, aber bitte ohne die Extension .class, denn sonst gibt es böse Fehlermeldungen.

java ErsteKlasse

Wenn alles gut gegangen ist, erscheint auf der Konsole die Zeile:

Hallo Welt!

Nun bestehen große Programme aus ganz vielen Klassen und so auch aus ganz vielen Dateien. Braucht das Programm weitere Klassen, so wird es im aktuellen Verzeichnis nach den passenden Dateien mit der Erweiterung class suchen. Das ist auch der Grund, warum der Dateiname dem Klassennamen entsprechen muss.

Aber was macht man jetzt unter Windows, wenn eine Klasse MyClass und die andere myclass heißt? Java unterscheidet zwar Groß- und Kleinschreibung, aber Windows tut dies bei Dateinamen nicht. Beide Klassen könnten also gar nicht nebeneinander in einem Verzeichnis stehen. An dieser Stelle helfen aber die Konventionen. Bei Klassennamen pflegt man den ersten Buchstaben groß zu schreiben. Wortanfänge werden gern durch Großbuchstaben angezeigt, wie bei ErsteKlasse. Der Klassenname ersteklasse widerspräche also der Konvention.

Auch wenn Sie das bei den ersten Programmen noch nicht betrifft, stellt sich natürlich die Frage, ob das nicht sehr lästig ist, wenn man bei einem großen Projekt vielleicht mehrere hundert Dateien installieren muss. So viele Klassen kommen da schon locker zusammen. Irgendwie sollte man das ganze zusammenpacken können.

Die Freude ist groß! Das geht. Geben Sie zu, Sie hatten es nach dieser Einleitung schon vermutet. Es war einfach zu leicht zu durchschauen. Aber nun kommen wir zum komplizierteren Teil: Wie funktioniert es? Das Packprogramm heißt jar. Übersetzt heißt es zwar Krug, was irgendwie passt, aber eigentlich ist der Name eine Abwandlung von tar, dem Standard-Packprogramm von Linux, dessen Syntax das Programm auch folgt. Sie müssen aber nicht alle Möglichkeiten kennenlernen. Es reicht zu wissen, wie Sie eine gepackte Anwendung zusammensetzen können.

Das Runtime Environment würde beim Start eines solchen Pakets natürlich schon gern wissen, in welcher der vielen Klassendateien eigentlich die Hauptfunktion main steckt. Dazu schreiben Sie ein Manifest. Das mag hochgestochen klingen, aber ausnahmsweise habe ich mir das nicht ausgedacht. Es heißt wirklich so. Das Manifest könnte in der einfachsten Form den folgenden Aufbau haben:

Manifest-Version: 1.0
Main-Class: ErsteKlasse

Im Abschluss muss noch eine Leerzeile hinzugefügt werden, sonst bekommt das Laufzeitsystem wieder seine Migräne. Welchen Dateinamen Sie für die Manifest-Datei verwenden, ist egal. Das Manifest wird vom Befehl jar später immer unter dem Namen MANIFEST.MF im Archiv abgelegt. Im folgenden Aufruf gehen wir davon aus, dass Ihr Manifest unter dem Dateinamen manifest.txt erstellt wurde.

Der folgende Befehl erzeugt ein Programmpaket namens MeinProgramm.jar, entnimmt das Manifest der Datei manifest.txt und bindet die beiden Klassendateien ErsteKlasse.class und NochEine.class ein:

jar -cfm MeinProgramm.jar manifest.txt ErsteKlasse.class NochEine.class

Die entstandene Datei MeinProgramm.jar kann fast wie die Klassendateien über das Runtime Environment System aufgerufen werden. Allerdings muss die Option -jar noch angegeben werden:

java -jar MeinProgramm.jar

Wenn Sie die jar-Dateien als ausführbar auf Ihrem Computer anmelden, können Sie sie sogar direkt von der grafischen Oberfläche doppelklicken. Sie haben jetzt gesehen, wie Sie Java-Programme über die Konsole ausführen können. Zugegebenermaßen ist das alles etwas umständlich, sodass Sie sich freuen werden, wenn ich Ihnen sage, dass Ihnen Entwicklungsumgebungen die Arbeit deutlich erleichtern können. Allerdings sollte man auch da den Tag nicht vor dem Abend loben.

2.3 Eclipse

Die Suche nach einem freundlichen Partner für die Java-Programmierung führt oft zu Eclipse. Eclipse enthält einen Editor, der Gedanken lesen kann. Jedenfalls schlägt er oftmals vor, wie ein Befehl weitergehen könnte. Das ist mehr als mancher Programmierer kann. Bei jeder Sicherung wird schnell das Programm kompiliert und die noch vorhandenen Fehler angezeigt. Mit dem Debugger können Sie Ihr fertiges Programm Schritt für Schritt durchlaufen und feststellen, warum der Computer vielleicht ganz andere Vorstellungen von Ihrer Logik hat als Sie.

Im Buch wird entweder mit Eclipse oder dem JDK gearbeitet, allerdings dürften Sie keine Probleme haben, wenn Sie eine andere IDE verwenden. Lediglich bei der Entwicklung von Android-Apps werden Sie an Eclipse nur schwer vorbeikommen.

2.3.1 Installation

Von der Seite www.eclipse.org können Sie sich die aktuelle Version von Eclipse herunterladen. Sie geben an, auf welchem Betriebssystem Sie entwickeln dürfen oder müssen. Auf der Website finden Sie auch Unterstützung, wenn Sie Probleme haben, allerdings ist dort alles sehr englisch, vor allem die Sprache.

Unter Windows

Nach dem Download der passenden Windows-Version von www.eclipse.org erhalten Sie eine ZIP-Datei. Darin finden Sie einen Ordner namens eclipse. Diesen legen Sie dann von Hand an eine freie Stelle im Computer. Da es ein Programm ist, passt es am besten in das Verzeichnis C:\Programme. Natürlich dürfen Sie das nur mit Administratorrechten. Leider gibt es kein Symbol auf dem Desktop oder im Hauptmenü. Es ist aber leicht möglich, im Ordner C:\Programme\eclipse die Datei namens eclipse.exe mit der rechten Maustaste anzuklicken und dort auszuwählen, dass ein Eintrag im Hauptmenü erfolgen soll.

Das Starten funktioniert nicht? Eclipse nörgelt, das Development Kit sei nicht vorhanden? Dann haben Sie das JDK vermutlich noch nicht installiert, wie im Abschnitt »Java-Programmierung mit dem JDK« beschrieben. Blättern Sie also noch einmal zurück und schauen Sie nach, wie es installiert wird.

Unter Linux

Am einfachsten haben es wieder einmal die Benutzer von Linux, denn die können ihren Lieblings-Software-Installationsdienst (wie das Software-Center unter Ubuntu oder Yast unter SUSE) nach dem Stichwort »Eclipse« befragen und zur Installation auffordern. Eclipse ist anschließend Bestandteil des Systems und kann direkt über die Menüs zur Software-Entwicklung gestartet werden.

Auch wenn es möglich ist, sollten Sie eine Installation von der Website von Eclipse vermeiden. Erstens unterliegt ein direkt installiertes Programm nicht der Aktualisierungskontrolle des Systems und zweitens wird von den Distributionen die Systemintegrität wie beispielsweise die Mehrplatzfähigkeit besser berücksichtigt als von Eclipse selbst.

Auf dem Mac

Zunächst laden Sie sich das passende Eclipse für den Macintosh von www.eclipse.org herunter. Die Datei ist eine gepackte tar-Datei. Nach einem Doppelklick entpackt sich die Datei von selbst. Sie finden einen Ordner namens eclipse, den der Administrator des Rechners einfach in den Ordner Programme schiebt. Nun kann jeder Benutzer über Gehe zu... | Programme den Ordner eclipse öffnen und darin das Programm Eclipse starten. Und schon läuft es. Beim Mac wird das JDK mit Eclipse automatisch mitinstalliert.

2.3.2 Anlegen eines neuen Projekts

Noch bevor Eclipse mit dem Hauptfenster erscheint, fragt es, wo denn bitte der Workspace liegen soll. Das ist das Verzeichnis, in dem später alle Projekte und deren Dateien abgelegt werden sollen. Sie wissen es auch nicht? Nicht so schlimm, denn Eclipse macht selbst einen Vorschlag, den man in der Regel akzeptieren kann.

Beim allerersten Start erscheint zunächst ein Willkommensbildschirm, der Ihnen anbietet, ein paar Informationen über Eclipse zu erfahren und andere Dinge mehr. Wenn Sie davon ermüdet sind, können Sie diesen durch das kleine Kreuz rechts neben dem Wort »Welcome« entfernen.

Wenn Sie mit Eclipse ein Programm schreiben wollen, macht Eclipse etwas hochgestochen sofort ein Projekt daraus. Ein neues Projekt legen Sie über die Menüpunkte File | New | Java Project an. Es baut sich ein Dialog auf, in dem Eclipse Genaueres wissen will. Da wäre zunächst der Projektname. Wir verwenden hier mal den Namen ErsterTest. Sie mögen meinen Einfallsreichtum bezüglich der Namenswahl nicht schätzen, aber es steht Ihnen völlig frei, einen besseren Namen zu wählen. Ich gebe mir Mühe, nicht beleidigt zu sein. Unten im Dialog wird nun der Button Finish sichtbar. Den klicken Sie an und Ihr erstes Projekt ist angelegt.

Abbildung 2.1 Eclipse nach Anlegen des Projekts

 

In der linken Spalte sehen Sie nun das Projekt ErsterTest. Um mit einem Projekt etwas zu tun, können Sie es mit der rechten Maustaste anklicken. Für ein Programm benötigen wir eine Klasse, weil in Java ohne Klasse gar nichts geht. Also wählen wir aus dem Kontextmenü New und dann Class. Und wieder erfreut uns ein Dialog mit Eingabemöglichkeiten:

Nun klicken Sie auf Finish. Und wie von Zauberhand entsteht ein Programmrahmen, den ich auch nicht hätte besser machen können.

package erstesPaket;
public class ErsteKlasse {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}

Listing 2.2 Von Eclipse generiertes Programm

 

In der Zeile unter TODO können Sie nun die folgende Zeile einfügen, die Sie schon von unserem Kleinprogramm her kennen.

System.out.println("Hallo Welt!");

In der Programmanweisung wird über das Objekt out der Klasse System die Methode println aufgerufen. Sollten Sie den letzten Satz nicht ganz verstehen, ist das ein guter Grund, das Buch noch ein wenig weiter zu lesen. Vielleicht haben Sie gesehen, wie während des Eintippens immer wieder Menüs aufgeklappt sind. Eclipse ahnt schon, dass Sie auch nicht genau wissen, welche Bestandteile welche Klassen haben und schlägt Ihnen darum immer wieder etwas vor. Die Methode println jedenfalls druckt alles, was in der Klammer steht, auf dem Bildschirm aus. Diesen Text werden Sie bei der Ausführung des Programms also irgendwo finden.

2.3.3 Übersetzung und Testlauf

Bevor das Programm gestartet werden kann, muss der Compiler es in die Finger bekommen. Tatsächlich müssen Sie sich darum nicht kümmern, weil unter dem Menü Project ein Haken bei Build automatically steht. Das ist der Normalzustand. Und so übersetzt Eclipse von sich aus das Programm immer dann, wenn es meint, dass es mal wieder angebracht wäre.

Sollte es dabei Fehler finden, setzt es eine rote Markierung neben die Zeile. Auch rechts neben dem Scrollbar erscheint eine kleine rote Markierung, die Sie in einer längeren Quelltextdatei durch Anklicken direkt zum Fehler führt.

Abbildung 2.2 Ein Fehler im Eclipse-Editor

 

Wenn Sie die Maus über die Fehlermarkierung schieben, erzählt Ihnen Eclipse, was es an dem Programm nicht so toll findet. Klicken Sie die Fehlermeldung links neben der Zeile an, unterbreitet Eclipse sogar Vorschläge, wie Sie diese missliche Situation beheben können. Durch Anklicken des Vorschlags erscheinen noch weitere Hinweise in einem Nachbarfenster. Doppelklicken Sie den Vorschlag und Eclipse setzt ihn sofort um und erzeugt dazu selbstständig Quellcode, wenn es erforderlich ist. Eine Übersetzung wird auf jeden Fall erzwungen, wenn Sie über das File-Menü sichern.

Nun wollen wir das Programm starten. Sie finden in der Menüleiste den Punkt Run, der vielversprechend aussieht. Und tatsächlich. Dort gibt es noch einmal den Punkt Run. Eclipse will nun wissen, ob Ihr Programm ein Java-Applet oder eine Java-Application ist. Ich kann Ihnen versichern, dass es eine Applikation ist.

Nun fragt Eclipse eventuell, ob es nicht sicherheitshalber mal Ihr Programm speichern sollte, bevor es gestartet wird. Das ist eigentlich eine ganz tolle Idee. Nachdem Sie dies mit OK bestätigt haben, passiert nichts. Oder? Wenn Sie genau hinsehen, können Sie unterhalb Ihres Programmtextfensters ein schmales Fenster sehen, das mit Console überschrieben ist. Dort steht nun plötzlich: Hallo Welt! Schlagen Sie sich auf die Schulter: Sie haben Ihr erstes Programm unter Eclipse zum Laufen gebracht.

2.3.4 Erzeugen einer JAR-Datei

Sie wollen Ihr Programm nun aber auf einen USB-Stick schieben und an alle Ihre Freunde schicken, damit die sehen, dass Sie programmieren können. Bei der Gelegenheit können Sie gleich prüfen, ob ich Ihnen die Wahrheit erzählt habe und Java-Programme wirklich auf Windows, Linux und Mac laufen. Dazu klicken Sie das Projekt mit der rechten Maustaste an. Im Menü wählen Sie Export... Es erscheint ein Dialog, in dem der Typ der Zieldatei ausgewählt werden kann. Unter der Gruppe Java finden Sie den Punkt Runnable JAR file.

Ein Klick auf Next führt zu dem Dialog, in dem der Name der Datei und ihr Ort bestimmt wird. Mit dem Button Browse... können Sie einen Ordner auswählen, in den die Datei geschrieben werden soll. Als Dateiname hinter JAR File geben Sie beispielsweise gruss.jar an. Nun klicken Sie Finish und finden an der Stelle, die Sie angegeben haben, die Datei gruss.jar.

2.4 Aufgabe: Grüßaugust selbst erstellen

Lassen Sie sich nichts von mir erzählen, was alles angeblich klappt und was nicht. Programmieren lernt man wie gesagt in erster Linie dadurch, dass man es tut. Erstellen Sie deswegen ein neues Programm mit dem JDK oder mit Eclipse oder mit was auch immer Sie möchten. Grüßen Sie doch mal jemand anderen als die Welt: den Mond, den Nachbarn, Ihren Lieblingsautor! Und grüßen Sie anschließend in zwei oder mehr Zeilen zum Beispiel alle Verwandten auf einmal. Vielleicht grüßt ja mal einer zurück. Für diese Aufgabe gibt es aus naheliegenden Gründen noch keine Musterlösung, für die späteren Aufgaben können Sie sich diese dann von www.downloads.wrox-press.de herunterladen.

Kapitel 3

Aufstieg zum Programmierer


Inhalt

Das erste Kleinprogramm und die Arbeitsumgebung habe ich Ihnen nun vorgestellt. Nichts hält uns davon ab, mit dem Programmieren zu beginnen.

3.1 Java-Programm-Skelett

Ich werde nicht müde, Ihnen das hinreißende Programm unseres letzten Kapitels immer wieder vorzulegen. Mit zehn Wiederholungen habe ich nämlich bereits eine Seite herausgeschunden und nach nur 5000 Wiederholungen könnte ich allein damit das komplette Buch füllen. Aber viel wichtiger ist, dass ich Ihnen daran das Grundgerüst von Java-Programmen noch einmal genauer vorführen kann.

public class ErsteKlasse {
    public static void main(String[] args) {
        System.out.println("Hallo Welt!");
    }
}

Listing 3.1 Hallo Welt zum Dritten

 

3.1.1 Ordnende Elemente

Die geschweifte Klammer öffnet einen Block, der bis zur zugehörigen geschlossenen Klammer reicht. Der Block kann eine beliebige Fülle von Anweisungen aufnehmen, die er zu einer Anweisung zusammenfasst. Verwechseln Sie nicht die geschweiften mit den runden Klammern. Beide haben sehr unterschiedliche Aufgaben. Und nur keine Sorge: Die runden Klammern werden zu einem passenden Zeitpunkt ausführlich erläutert.

In Listing 3.1 sehen Sie, wie in der Folgezeile wiederum eine geschweifte Klammer geöffnet wird. Die nächste schließende Klammer gehört logischerweise zu der zuletzt geöffneten. Das hört sich jetzt sehr mathematisch geschwollen an, ist aber genau das, was Sie bei Klammern in einer Formel auch erwarten würden. Man spricht in solchen Fällen von verschachtelten Blöcken.


Spicker
Geschweifte Klammern fassen einen Block von Anweisungen zu einer Anweisung zusammen.

3.1.2 Einrückung

Sie können sehen, dass ich nach dem Öffnen der Klammer die nächste Zeile ein paar Leerzeichen eingerückt habe und mit dem Schließen einer Klammer wieder zurückgegangen bin. Das schreibt der Compiler zwar nicht vor, sorgt aber für eine bessere Übersicht. Darum tun dies die meisten Java-Programmierer. Am besten tun Sie es auch.

Für die Gestaltung von Java-Programmen gibt es Konventionen, die im Java Style Guide vorgeschlagen werden. Sie finden diesen unter dem Titel Code Conventions for the Java Programming Language auf der Website von Oracle zum Download als PDF oder online zum Stöbern (www.oracle.com/technetwork/java/codeconv-138413.html). Leider liegen die Originale in englischer Sprache vor. Sie finden aber über eine Suchmaschine auch reichlich deutsche Übersetzungen.

3.1.3 Semikolon

Java ist es eigentlich recht egal, wie Sie den Quelltext über die Datei verteilen. Das Ende einer Anweisung erkennt Java am Semikolon. Fehlt es, kann der Compiler recht maulig werden, weil er nicht weiß, wann der Befehl aufhört und wo der neue Befehl anfängt. Und natürlich schiebt er Ihnen die Schuld in die Schuhe. Die geschweiften Klammern sind bereits ein Abschluss. Darum benötigen sie kein Semikolon.

3.2 Bezeichnende Namen

Auch falls Sie keine Kinder haben, können Sie als Programmierer in den Genuss kommen, Namen zu vergeben. Unter Java dürfen Sie Programme, Klassen, Attribute, Methoden, Pakete und einige weitere Dinge benennen.

Falls Sie doch Kinder haben, wissen Sie, wie lange es dauert, sich auf einen einzigen Namen zu einigen. Wenn es genauso lange dauert, bis alle Variablen eines Programms benannt sind, können Jahre vergehen. Aber zum Glück müssen die Namen nicht mit der Verwandtschaft abgeglichen werden, sondern nur mit dem Compiler. Und der ist da sehr anspruchslos.

Nun hat Java etwas originelle Ansichten darüber, was eigentlich ein Buchstabe ist, der für Bezeichner gewählt werden darf. Im Gegensatz zu vielen anderen Programmiersprachen sind neben a bis z auch die nationalen Sonderzeichen erlaubt. Sie können also deutsche oder dänische Umlaute oder griechische Buchstaben verwenden. Auch Währungszeichen und Sonderzeichen wie der Unterstrich sind erlaubt.

Da aber diese Zeichen nicht von jeder Tastatur leicht zu erzeugen sind und die Lesbarkeit der Programme nicht unbedingt erhöhen, verwenden die meisten Programmierer nur Zeichen ohne nationale Sonderzeichen. Grundsätzlich gilt, dass Java Groß- und Kleinschreibung genau unterscheidet. Ein Haus ist etwas anderes als ein haus.


Tipp
Vergeben Sie Namen, die möglichst klar zu verstehen sind. Sparen Sie nicht mit Buchstaben!

3.3 Kommentare sind nett zu lesen

Java ermöglicht es dem Programmierer, Texte in den Quellcode zu schreiben, die vom Compiler übersprungen werden. Diese Texte nennt man Kommentare. Diese Texte sollten erzählen, warum Sie etwas auf diese Weise programmiert haben.

Kommentieren Sie bitte Ihre Programme! So wissen Ihre Kollegen, die später das Programm weiterentwickeln sollen, was Sie sich dabei gedacht haben. Ein Programm wird öfter gelesen als geschrieben. Bedenken Sie, dass derjenige, der das Programm fluchend überarbeiten muss, Sie selbst sein könnten.

Ein Kommentar beginnt mit der Kombination aus /* und wird so lange vom Übersetzungsvorgang ignoriert, bis die Kombination */ erscheint. Ein solcher Kommentar kann über mehrere Zeilen gehen.

/* Diesen Kommentar kann man über mehrere Zeilen ziehen.
   Er hört auf, wenn ein Stern und ein Schrägstrich
   aufeinanderfolgen, etwa so: */

Etwas tückisch ist, dass Kommentare im Gegensatz zu Blöcken nicht verschachtelt werden können. Sollten Sie also einen Bereich auskommentieren wollen, der bereits einen solchen Kommentar enthält, wird das erste */ den Compiler dazu motivieren, wieder zu arbeiten. Spätestens das zweite */ wird dann als Fehler interpretiert.

Es gibt noch ein weiteres Kommentarzeichen. Es besteht aus zwei Schrägstrichen. Sie sorgen dafür, dass der Rest der Zeile für den Übersetzer nicht mehr relevant ist.

class Datum { // Restkommentar

Hinweis