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.

Die Zeiten, wo wir die Studenten mit Sandkastenprogrammen auf das Leben vorbereiten konnten, sind vorbei. Ich glaube, dass die Zukunft in Komplettsystemen mit visueller Programmierung und einem großen Vorrat an fertigen Tools liegt. 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.

Messungen zeigen, dass Java bei reinen Rechenoperationen nicht wesentlich langsamer ist als optimiertes C. Dies ist eine Folge der guten Just-In-Time Compiler, die 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.

Die Alternative Python ist nicht wirklich eine Alternative. Sie ist mindestens genauso schwer zu erlernen und viel langsamer. Das einzige, was für Python spricht, sind die Bibliotheken, die man genausogut in Java erstellen könnte. Es muss allerdings zugegeben werden, dass diese Bibliotheken eben in Python existieren und in Java nicht. Das ist das Geheimnis des Erfolgs von Python. Man hat sofort Zugriff auf Optimierung, Statistik, moderne numerische Verfahren, Statistik, oder auch neuronale Netze. Python holt auch bei systemübergreifenden grafischen Benutzeroberflächen auf.

Eine andere Alternative ist Javascript. Das war eigentlich eine Skriptsprache, genau wie Python. Dadurch, dass sich aber Browser fast nur noch in Javascript programmieren lassen, hat diese Sprache einen gewaltigen Aufschwung genommen. Sie wird inwzischen auch für alleinstehende Programme verwendet, wie das Beispiel des Microsoft Flight Simulator zeigt.

Natürlich gibt es zahlreiche weitere Alternativen, weit verbreitete oder exotische. Für den Anfänger bedeutet das, dass es wichtiger ist, die Prinzipien des Programmierens zu verstehen als die Details einer Programmiersprache. Java ist dazu bestens geeignet.

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

Ich bin 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 Sommer 2023

Nach meiner Pensionierung möchte ich den ganzen Kurs in diesem Jahr überarbeiten. Dies wird Seite für Seite geschehen müssen. Ich denke, es ist eine lohnenswerte Aufgabe.

René Grothmann