dh-Materialien
Java Tutorial
 

Der Anfang

Das hier angebotene Tutorial beschreibt keineswegs die gesamte Programmiersprache Java (Java SE 17 & JDK 17) umfassend und in allen Details, bietet aber insbesondere Programmierneulingen die Möglichkeit, anhand einiger Projektbeispiele wichtige Elemente dieser Sprache kennenzulernen und mittels der entsprechenden Erläuterungen einen ersten Einblick in die Grundlagen der objektorientierten und strukturierten Programmierung zu bekommen.

Allgemeine Informationen

Java ist eine objektorientierte Programmiersprache, die ursprünglich in den 1990er-Jahren von James Gosling und anderen entwickelt und von der Firma Sun Microsystems 1995 veröffentlicht wurde. Aufgrund der Übernahme von Sun Microsystems durch die Firma Oracle Corporation im Jahr 2010 wird Java seitdem von Oracle zur Verfügung gestellt.

Um Java-Programme ausführen zu können, wird (nur) eine Java-Laufzeitumgebung (Java Runtime Environment) benötigt. Ein Hauptbestandteil einer solchen Laufzeitumgebung ist die Virtuelle Maschine (Java Virtual Machine). Die JVM ist das einzige Element von Java, das von der Plattform, auf welcher das jeweilige Programm ablaufen soll, abhängig ist.

Für die Herstellung von Java-Programmen braucht man eine Java-Entwicklungsumgebung (Java™ Platform, Standard Edition & Java Development Kit), welche eine Laufzeitumgebung bereits umfasst. Zusätzlich ist die Dokumentation dieser Entwicklungsumgebung unentbehrlich. Hier ist vor allem die API Spezifikation zur Unterstützung der Programmierarbeit von Interesse.

[Download JRE externer Link
[Download Java SE Development Kit externer Link]

Quellcode von Java-Programmen wird in Textdateien mit der Dateiendung .java abgespeichert. Man benötigt daher grundsätzlich nur einen Texteditor zum Programmieren. Wesentlich komfortabler ist es natürlich, etwa mit der Integrierten Entwicklungsumgebung Eclipse (Eclipse Java Integrated Development Environment) zu arbeiten. Die Installation von Eclipse setzt voraus, dass zuvor eine Java-Entwicklungsumgebung installiert worden ist.

[Download Eclipse IDE externer Link]

Das allererste Javaprogramm

Das erste und einfachste Programm soll den Text "Hello World!" ausgeben (dies ist traditionell das erste Programm in jeder Programmiersprache). Klicke hierzu im Eclipse-Fenster auf File, dann auf New und schließlich auf Java Project, um ein neues Projekt zu generieren:

Eclipse - New Project

Es öffnet sich das Fenster New Java Project. Gib den Projektnamen "HelloWorld" ein, wähle Use project folder as root for sources and class files und schließe das Fenster mit Klick auf Finish:

Eclipse - New Project

Quittiere die folgende Warnung "No source folder exists in the project." mit Klick auf OK. Mache dann einen Rechtsklick auf "HelloWorld" im Project Explorer, klicke danach auf New und im sich öffnenden Untermenü auf Class:

Eclipse - New Class

Wähle im sich öffnenden Fenster New Java Class als Name "HelloWorld", mache einen Klick bei "public static void main(String[] args)" und schließe danach das Fenster mit Klick auf Finish:

Eclipse - New Java Class

Bis jetzt ist im Wesentlichen das Folgende passiert: Im Eclipse-Workspace ist der Projektordner mit dem Namen HelloWorld angelegt worden, danach wurde in diesem Ordner eine Datei namens HelloWorld.java erzeugt, welche die Definition der Klasse HelloWorld beinhaltet. Zu dieser Klasse gehört die (zunächst inhaltsleere) Methode main :

Eclipse - HelloWorld Java

Ersetze den Kommentar "//TODO Auto-generated method stub" durch die Programmzeile "System.out.println("Hello World!");". Durch einen Klick auf den Run-Button Run wird 1. der Inhalt des Editorfensters in der Datei HelloWorld.java gespeichert, 2. HelloWorld.java in die Datei HelloWorld.class übersetzt, 3. die Virtuelle Maschine (JVM) gestartet und 4. das in HelloWorld.class codierte Programm von der JVM ausgeführt. Nach der Ausgabe der Zeichenkette "Hello World!" im Konsolenfenster von Eclipse wird das Programm automatisch beendet:

Eclipse - HelloWorld

Das Ganze kann man auch ohne Eclipse bewerkstelligen (damit man wenigstens einmal sieht, wie während der Arbeit mit Eclipse im Hintergrund die Java-Entwicklungsumgebung funktioniert): Starte mit einem leeren Ordner namens HelloWorld, kreiiere mit einem simplen Texteditor die Textdatei HelloWorld.java und speichere diese Datei im Ordner HelloWorld  ab:

HelloWorld.java

Beispielsweise vorausgesetzt, dass das JDK auf einem Windows-Rechner im Ordner C:\Programme\Java\jdk installiert und in den erweiterten Systemeinstellungen von Windows eine Umgebungsvariable mit dem Wert "%ProgramFiles%\Java\jdk\bin\" definiert wurde, können nun in der Windows-Eingabeaufforderung mit den im Ordner ..\jdk\bin zu findenden Applikationen javac.exe und java.exe folgende Schritte erledigt werden:

javac HelloWorld.java

Durch diesen Aufruf des Java-Compilers javac.exe wird die Textdatei HelloWorld.java in die binäre Klassendatei HelloWorld.class übersetzt. Vom Java-Compiler generierte Klassendateien können von jeder Virtuellen Maschine (JVM) unabhängig von der jeweiligen Plattform gelesen und interpretiert werden.

java HelloWorld

Duch diesen Aufruf wird die JVM gestartet und das in der Datei HelloWorld.class codierte Programm ausgeführt. Die Ausgabe von "Hello World!" erfolgt jetzt im Fenster der Windows-Eingabeaufforderung:

HelloWorld - Eingabeaufforderung

In welchem Fenster der Inhalt der mit der JVM verknüpften Konsole ausgegeben wird, hängt davon ab, von wo aus die JVM gestartet wurde. Die JVM kann statt mit java.exe auch mit javaw.exe gestartet werden; es steht dann jedoch keine Konsole zur Verfügung. Das heißt, nach dem Aufruf

javaw HelloWorld

wird das Programm fehlerfrei ausgeführt, aber man sieht nichts :)

Die Sprachelemente des HelloWorld-Programms

Der Quellcode des Projekts HelloWorld ist sehr kurz. Dennoch kann man anhand dieses Programmbeispiels bereits einige wichtige Dinge besprechen.

Java-Programmcode besteht ausschließlich aus der Definition von Klassen. In jedem Javaprojekt muss es eine (und nur eine) Klasse geben, die eine Methode mit dem Namen main beinhaltet. Wird die JVM via java.exe oder javaw.exe aktiviert, so sucht die JVM im jeweiligen Programm zuerst nach der Methode main und führt die Dinge aus, die innerhalb von main definiert sind.

In jedem Projektbeispiel dieses Tutorials ist es so, dass die Methode main Bestandteil derjenigen Klasse ist, die den gleichen Namen trägt wie das gesamte Projekt. Die Klasse Example eines Projekts Example hat die (einzige) Aufgabe, die Methode main, mit der das Programm gestartet werden kann, zur Verfügung zu stellen.

public class Example {
...
}

Der Modifikator public deklariert im vorstehenden Beispiel die Klasse Example als öffentliche Klasse, das heißt, dass Instanzen anderer Klassen auf die (öffentlichen) Eigenschaften und (öffentlichen) Methoden der Instanzen vom Typ Example zugreifen können.

public static void doSomething() {
...
}

Das Schlüsselwort static definiert in diesem Beispiel die Methode doSomething() als Klassenmethode. Mit Klassenmethoden werden Operationen implementiert, die unabhängig von Instanzen existieren. Klassenmethoden einer Klasse können auch aufgerufen werden, wenn keine Instanz der Klasse existiert oder auch dann, wenn eine Klasse garnicht instanziierbar ist. Der Modifikator public macht doSomething() zudem zu einer öffentlichen Klassenmethode.

Die Syntax von Java verlangt, dass für jede Methode ein Rückgabetyp angegeben werden muss; wenn kein Wert zurückgegeben wird, steht statt des Rückgabetyps stattdessen void. doSomething() in diesem Beispiel ist demnach eine Methode ohne Rückgabewert.

Die Methode main ist also eine öffentliche Klassenmethode, die beim Aufruf nichts zurückliefert:

public static void main(String[] args) {
...
}

Der Klammerausdruck „(String[] args)“ bedeutet, dass der Methode main bei Bedarf beim Start des jeweiligen Programms gewisse Argumente übergeben werden können:

java Example arg1 arg2 arg3

Wie lernt man Programmieren?

Man lernt das Programmieren, indem man mindestens drei Dinge tut: 1. Viele fertige Programmbeispiele gründlich studieren, ausprobieren und verändern; 2. Anfangen, die Grundlagen der Theorie der jeweiligen Programmiersprache zu verstehen; 3. Mit eigenen Programmentwürfen experimentieren. Wenn man dann genügend Zeit und Ausdauer und zudem noch eine ausreichend hohe Frustrationstoleranz hat, kann es gelingen :)