Einrichten

Herzlich willkommen zum ersten Kapitel des Java Tutorials! :)

Die Verzeichnisstruktur

Bevor wir lernen können „richtig“ zu programmieren, müssen wir uns ein paar Gedanken machen, wie wir die dazu notwendigen Dateien organisieren wollen. Ein Java Projekt besteht immer aus mindestens einer Datei, in der die Quellcode, also das, was wir schreiben wollen, steht.

Größere Projekte werden dann auf mehrere (teilweise sehr viele) Dateien aufgeteilt, so dass nicht das ganze Programm in einer einzigen Datei geschrieben werden muss. Da es ziemlich unpraktisch ist, sehr viele Dateien innerhalb eines Ordners zu managen, also auch zu überblicken, teilt man die Dateien auf mehrere Ordner auf, um (wie der Name ja schon sagt) Ordnung in das Chaos zu bringen. Was im Dateisystem Ordner sind, sind für Java sogenannte Packages

Packages dienen also dazu, viele Dateien mit Quelltext zu ordnen. Ein Package kann auch Unter-Packages enthalten, so wie es in einem Ordner ja auch Unterordner geben kann.

Üblicherweise fasst man in einem Package Programmcode zusammen, der für eine bestimmte Aufgabe gedacht ist. So könnte es z.B. ein Package „math“ geben, in welchem wir Code zusammenfassen, mit dem mathematische Probleme gelöst/berechnet werden können.

Stellen wir uns vor, wir möchten zwei unterschiedliche Programme schreiben. Eines, um Winkel zu berechnen, und eines, um Polynome zu lösen. Beide Programme müssen in der Lage sein, bestimmte mathematische Berechnungen durchzuführen. Damit wir nicht alles doppelt und dreifach programmieren müssen, könnten wir diese Berechnungen in ein Package „math“ packen, das dann von beiden Programmen verwendet werden kann. Packages dienen also nicht nur zur Ordnung, sondern auch zur Wiederverwendbarkeit von Quelltexten.

Ein neues Java Projekt

Aber was hat das mit unseren einfachen Programmen zu tun, die wir nun erst einmal schreiben möchten?

Wir werden unsere Programme auch in verschiedene Packages packen, damit wir nicht den Überblick verlieren.

Nun aber zum praktischen Teil: Zunächst brauchen wir ein Arbeitsverzeichnis. Dazu können wir zum Beispiel auf dem Desktop (es geht auch über all anders) einen Ordner „Java“ anlegen. Dieser Ordner ist nun unser Arbeitsverzeichnis. In diesem Ordner werden wir uns während des gesamten Tutorials bewegen.

Nun legen wir ein neues Package an, um darin unsere Programme, die wir während des Tutorials schreiben werden zu ordnen. Das ist einfacher als gedacht, denn ein Package ist nichts weiter als ein Unterordner unseres Arbeitsverzeichnisses. Legen wir also den Ordner „tutorial“ in unserem Arbeitsverzeichnis „Java“ an. Per Konvention werden Packages immer komplett klein geschrieben.

Außerdem legen wir noch ein Package innerhalb von „tutorial“ an, nennen wir es „helloworld“.

Wir haben nun also folgende Verzeichnisstruktur:

 Java/tutorial/helloworld/


Ordner alleine reichen natürlich nicht aus. Um unseren Quelltext zu speichern benötigen wir noch eine Datei. Legen wir also „HelloWorld.java“ unter Java/tutorial/helloworld/ an. In dieser Datei werden wir unser erstes Programm schreiben. Per Konvention beginnt der Dateiname immer mit einem Großbuchstaben.

Die Erklärung des Programms wird im nächsten Kapitel folgen, Ziel ist es nun erst einmal nur, aus Quelltext ein Programm zu erstellen und dieses dann auszuführen. Kopieren wir also den folgenden Quelltext in unsere Datei:

package tutorial.helloworld;
 
class HelloWorld
{
  public static void main(String[] args)
  {
    System.out.println("Hello World!");
  }
}


Ganz schön kurz, oder? Was die einzelnen Zeilen bedeuten werden wir bald sehen.

Das Programm ausführen

Um das Programm ausführen zu können brauchen wir zunächst ein mal das Programm. Bis jetzt haben wir nichts weiter als ein bisschen Text in einer Datei. Das ist noch kein Programm. Ein Programm ist - vereinfacht gesagt - eine Folge von Anweisungen für den Computer, und zwar in Maschinencode. Wir müssen aus unserem Java-Quellcode also Maschinencode machen.

Computer „verstehen“ nur bestimmten Maschinencode. Welchen, ist abhängig von der Computerarchitektur bzw vom Prozessor und dessen Architektur. Aber nicht jeder Prozessor braucht einen anderen Maschinencode. Der Prozessor in einem Handy braucht aber anderen Maschinencode, als der Prozessor in einem Desktop-PC.

Eigentlich müssten wir unseren Quelltext also in möglichst viele „Dialekte“ von Maschinencode übersetzen, damit das Programm auch auf verschiedenen Prozessorarchitekturen ausgeführt werden kann.

In Java wurde aber ein Zwischenschritt eingeführt, der uns diese Aufgabe abnehmen soll. Unseren Quelltext verwandeln wir zunächst in sogenannten Bytecode. Um unser Programm dann zu starten, müssen wir die Java VM (Virtual Machine) starten. Sie macht aus dem Bytecode Maschinencode, und zwar für genau die „Maschine“, auf der die Java VM gerade selbst läuft.

Um unseren Quelltext in Bytecode umzuwandeln starten wir den „Java Compiler“, und teilen ihm mit, in welcher Datei der Quelltext steht, der in Bytecode „compiliert“ werden soll:

 javac tutorial/helloworld/HelloWorld.java

(Wir müssen uns dazu im Arbeitsverzeichnis befinden)

Jetzt sollte sich unter Java/tutorial/helloworld eine Datei „HelloWorld.class“ befinden. In dieser ist der Bytecode gespeichert, der aus unserem Quelltext in „HelloWorld.java“ erstellt wurde.

Diesen Bytecode können wir nun von der Java VM starten lassen. Dazu müssen wir ihr nur mitteilen, in welchem Package der Bytecode zu finden ist.

 java tutorial.helloworld.HelloWorld


Diese Angabe ist fast identisch mit dem Pfad, an dem sich die Datei befindet:

 tutorial/helloworld/HelloWorld.class  (Pfad im Dateisystem)
 tutorial.helloworld.HelloWorld        (Pfad, angegeben durch Packages)


Die Ausgabe sollte

 Hello World!

lauten.

Herzlichen Glückwunsch! :) Damit haben wir unser erstes Java Programm ausgeführt. Es ist nicht das Letzte, versprochen!