Vorwort

Dieser Java-Kurs richtet sich an Programmieranfänger. Nach meiner Überzeugung eignet sich Java genau wie jede, oder zumindest fast jede Programmiersprache zum Erlernen der Anfangsgründe des Programmierens. Aber sobald man die ersten Hürden hinter sich hat, bietet Java eine reichhaltige Umgebung für die weitere Entwicklung. Und das kann eben nicht jede Programmiersprache von sich sagen.

In meinen Anfangszeiten wurde Pascal als die ideale Anfangssprache propagiert. Pascal ist stark typisiert und vermeidet einige Designfehler von C, wie etwa den fehlenden boolean-Typ und die freie Verwendung der Zuweisung mit =. Außerdem bietet Pascal nur eingeschränkte Zeiger, die sich schwerer missbrauchen lassen. Das alles war sicher schön, aber das überzeugendste Argument war letztlich die Entwicklungsumgebung Turbo-Pascal, die eben für Pascal zuerst und preisgünstig zur Verfügung stand.

Das alles lasse ich heute nicht mehr gelten. Die Zeiten, wo wir die Studenten mit Sandkastenprogrammen auf das Leben vorbereiten konnten, sind vorbei. Und Pascal war nicht mehr als eine Sandkastensprache. Erst umfangreichere Bibliotheken und ein objekt-orientierter Zuschnitt, vereint mit einer guten Programmieroberfläche, machten Pascal zu einer brauchbaren Sprache. Ich glaube wirklich, dass die Zukunft in Komplettsystemen mit visueller Programmierung und einem großen Vorrat an fertigen Tools liegt. Systeme wie Delphi oder Visual Basic zeigen das.

Und ich glaube, das Java dieses Ziel erreicht hat. Java ist eine Sprache, die sich Wiederverwendbarkeit und visuelle Programmierung auf die Fahnen geschrieben hat. Und Java kommt mit einem großen Vorrat an fertigen Programmteilen, die sich dank des objekt-orientierten Ansatzes leicht verwenden lassen. Das absolute Highlight aber ist die Portablilität der Programme. Wer wie ich schon zweimal das Betriebssystem gewechselt hat, weiß, was ich meine.

Hier nehme ich ein wenig Performance-Einbuße gerne in Kauf. Übrigens zeigen Messungen, dass Java bei reinen Rechenoperationen nicht wesentlich langsamer ist als optimiertes C. Dies ist eine Folge der guten Just-In-Time Compiler, die etwa für Java zur Verfügung stehen. Auch die umfangreiche und aufwändige Swing-Bibliothek ist inzwischen sehr effizient programmiert worden und kann für echte Java-Anwendungen verwendet werden.

Ein Wort an den Lernenden

Es ist wahr: Programmieren lernt man nur durch Programmieren! Vieles daran ist ein Handwerk und nicht mehr. Manches ist eine Kunst. Aber man muss wirklich selbst vor einer Schwierigkeit gestanden haben, um die Lösung dazu auch schätzen zu lernen.

Manches wird man am Anfang nur umständlich lösen. Vieles gar nicht. Aber nur durch dieses Suchen und Probieren findet man heraus, wie die Sprache im Innern funktioniert. Und manchmal stellt sich der berühmte Aha-Effekt erst spät ein.

Programmieren Sie also! Aber Vorsicht! Das kostet Zeit. Und nicht alles muss perfekt sein.

Ich habe die einzelnen Kapitel mit reichlich Übungsaufgaben versehen und dabei versucht, nicht zu trivial, aber auch nicht zu anspruchsvoll zu sein. Im Rückblick erscheint mir vieles als etwas zu schwierig. Lassen Sie sich nicht entmutigen!

Der gesamte Kurs lässt sich nicht in einem Semester bewältigen. Ich schlage einen zweisemestrigen Kurs mit reichlich Übungsstunden vor. Bei einem ersten Kontakt mit dem Programmieren sollte man in einem Semester nicht weiter als bis zu der Einführung der Klassen gehen. Natürlich ist die Versuchung groß, im Kurs gleich bis zu einem der Höhepunkte von Java, der Grafikprogrammierung oder dem objekt-orientierten Design zu kommen. Aber man sollte dieser Versuchung zugunsten der Übungen widerstehen.

Das Skript zum Kurs

Dies ist meine erste Erfahrung mit einem längeren HTML-Text. Ich bitte alle Designer und Schriftästheten um Nachsicht. Gerne hätte ich einiges anders gestaltet. Für den Hintergrund entschuldige ich mich bei denen, die er stören sollte. Ich meine, er gibt den Seiten einen einheitlichen Touch. Ich finde die Schrift trotzdem noch sehr gut lesbar. Ich hoffe Sun verzeiht mir die verfremdete Verwendung des Java-Logos.

Ich bin auch nicht der vorherrschenden Tendenz gefolgt, den gesamten Text in Mosaikteile zu zerschneiden und dann zu versuchen, diese Teile wieder mit Hyperlinks zusammenzuhalten. Ich glaube, dass es diesem zum Teil recht schwierigen Subjekt angemessen ist, auf einer traditionellen Leseweise zu beharren. Daher gibt es hier Seiten mit ungewöhnlich viel Text.

Die Beispiele zum Kurs sind etwas mathematiklastig. Dies entspricht dem Zielpublikum meines Kurses. Ich bitte eventuelle Nicht-Mathematiker über solche Beispiele hinweg zu lesen. Es sind genügend andere Beispiele vorhanden.

Überarbeitung März 2006

Obwohl wir inzwischen Java 1.5 (von Sun auch Java 5 genannt) schreiben, ist dieser Kurs nach wie vor aktuell. Ich bekomme noch immer regelmäßig Mail, und ein Suche mit Google ergibt, dass dieser Kurs an verschiedenen Universitäten und Fachhochschulen vorgehalten wird.

Ich habe jetzt auch die neuen Dinge, zum Beispiel die generischen Objekte, in den Text eingefügt, und dafür einige alten Dinge entfernt. Außerdem werden nun die Grundlagen von Swing eingeführt.

Überarbeitung Januar 2009

Ich habe lediglich das Design etwas den modernen Webdesigns angepasst. Das Layout der Seiten ist noch das alte.

René Grothmann