01.04.02 Analyse des Quellcodes

Widmen wir uns nun der Analyse des Quellcodes. Es ist wichtig zu wissen, dass Java eine Objekt-Orientierte-Programmiersprache ist. Das heißt, dass jedes Java-Programm in Klassen mit unterschiedlichen Funktionen aufgeteilt wird. Jede Klasse sollte in einer eigenen Datei abgespeichert werden. Unsere Anwendung benötigt aber lediglich eine Klasse – die HelloWorld-Klasse.

package de.helloworld;

Diese Zeile spezifiziert das Package dieser Klasse (Datei). Packages kann man sich wie eine Ordnerhierarchie vorstellen. Der Programmierer definiert verschiedene Packages, um eine klare Struktur in seine Anwendung zu bringen und verschiedene Programmteile voneinander zu trennen. Unterverzeichnisse werden bei Packages durch den „.“ (Punkt) definiert.

public class HelloWorld {

Diese Zeile definiert die Klasse (class) mit dem Namen HelloWorld und der Sichtbarkeit public (öffentlich). Anschließend wird durch eine geöffnete, geschweifte Klammer signalisiert, dass ab hier die Definition/der Gültigkeitsbereich dieser Klasse beginnt. Der Klassenname sollte immer identisch zu dem Dateinamen, in welchem der Quellcode abgespeichert ist, sein. Wenn die Klasse öffentlich ist (was meistens zutrifft), dann müssen Dateinamen und Klassennamen sogar identisch sein. Nennen Sie die Datei also am Besten immer so, wie auch Ihre Klasse heißt (wird in späteren Kapiteln nicht mehr explizit angemerkt).

public static void main(String[] args) {

Das ist die so genannte Main-Methode, welche den Einstiegspunkt eines jeden Java-Programms definiert. Vorerst müssen Sie nicht mehr wissen, wie dass der Code nach der geöffneten, geschweiften Klammer bis zur abschließenden, geschlossenen, geschweiften Klammer immer zuerst in Ihrem Programm ausgeführt wird.

Den Bereich zwischen den beiden geschweiften Klammern nennt man (Methoden-) Körper, Block oder Gültigkeitsbereich

Alles andere wird aus dieser Methode heraus gesteuert/gestartet.

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

Mit diesem Code wird der Text „Hallo Welt“ auf dem Bildschirm/in der Konsole ausgegeben. Grundsätzlich können Sie sich merken, dass mit System.out.println() ein Text ausgegeben wird. Der auszugebende Text wird in die Klammern und in Anführungszeichen geschrieben.

Genau genommen funktioniert System.out.println("Hallo Welt"); so: Es wird die öffentliche Methode println() des öffentlichen, statischen PrintStreams out der Klasse System mit dem Übergabeparameter „Hallo Welt“ aufgerufen. Wenn Sie diese Ausführung nicht verstehen, ist dies nicht weiter schlimm.

Das abschließende Semikolon weißt den Compiler darauf hin, dass dieser Funktionsaufruf hier abgeschlossen ist, und nun weitere Aufrufe folgen können. Generell endet jeder Aufruf, der keinen Gültigkeitsbereich/Block definiert, mit einem Semikolon.

}

Eine geschlossene, geschweifte Klammer schließt den zuletzt geöffneten Gültigkeitsblock (natürlich können mehrere Blöcke ineinander verschachtelt werden) – in diesem Fall den Bereich der Main-Methode.

}

Die letzte, geschlossene, geschweifte Klammer schließt den Gültigkeitsbereich unserer Klasse und stellt somit auch das Ende dieser Klasse dar.

Kompilieren der Klasse

Sie erinnern sich an den javac-Aufruf aus dem letzten Kapitel zum Kompilieren des Programms? Dieser setzt sich wie folgt zusammen:

javac

Javac ist der Java-Compiler. Dieses Programm wird mit bestimmten Parametern aufgerufen, um aus Java-Quellcode Java-Byte-Code zu erstellen. Nach javac folgt eine Leerzeichen und anschließend

de/helloworld/

, was das Package der zu kompilierenden Klasse angibt. Es ist wichtig, dass das Package beim Kompilieren in der Form package/unterpackage/ (sprich: durch Schrägstriche getrennt und nicht etwa durch Punkte) angegeben wird. Anschließend folgt noch der vollständige Dateiname der zu kompilierenden Klasse (inkl. .java Endung).

HelloWorld.java

Ausführen der Anwendung

Der Aufruf zum Ausführen einer Anwendung ist dem zur Kompilierung von Quelltext sehr ähnlich:

  1. javac durch java ersetzen
  2. „/“ (Slash) im Package durch „.“ (Punkt) ersetzen
  3. Die Dateiendung wird nicht mit angegeben. Aus HelloWorld.java wird also HelloWorld

6 Replies to “01.04.02 Analyse des Quellcodes”

  1. Niko

    Warum ist es wichtig, dass das Package in der Form package/unterpackage/ angegeben wird?

    Bei mir sieht die Ordner-Struktur ungefähr so aus:

    Uebungen(hier kommen alle Beispiele rein) \Beispiel1(hier kommt das erste Beispiel „Hello World“ rein) \ HelloWorld.java

    Ist so eine Ordner-Struktur für die Zukunft ein Hinderniss beim Programmieren bzw macht es schwerer sich auszukennen?

    Sollte ich bei dem Ordner Beispiel1 noch einen Unterordner machen wie z.B. src? Wenn ja, warum?

    Habe ein bisschen gegoogelt aber keine für mich verständliche und logische Antwort gefunden.

  2. Stefan Kiesel

    Hallo Niko,

    da hast du etwas falsch verstanden. Diese Aussage, die du in deinem Kommentar zitierst, steht unter der Überschrift Kompilieren der Klasse. Es ist nur wichtig, dass beim Kompilieren über die Konsole auch die Package-Struktur mit angegeben wird. Wie du deine Package- und/oder Projektstruktur gestaltest, bleibt ganz dir überlassen (und soll in diesem Kapitel auch noch gar nicht behandelt werden). Sie sollte nur logisch sein. Für weitere Informationen über Packages kannst du im Kapitel 04.03.10 Pakete nachschlagen.

    Gruß
    Stefan

    PS: Ich werde mal betreffende Zeile etwas umformulieren, dass es im Kapitel etwas deutlicher wird. Danke für den Hinweis 🙂 .

  3. Niko

    Okay.

    Gerne doch.
    Hab bisher auch 2 Schreibfehler gesehen. Aber ich glaube das ist unwichtig oder möchtest du sie wissen? 😀

    Und Kapitel 04.03.10 Pakete hat meine weiteren Fragen zu diesem Thema großteils beantwortet.

    Ist es denn in Ordnung das ich Fragen hier als Kommentar schreibe oder gibt es auch ein Forum speziell zu diesem Blog-Buch?

  4. Stefan Kiesel

    Abend Niko,

    da haben wir ja einen Stammleser gewonnen 🙂 .

    Rechtschreibfehler kannst du mir gerne mitteilen – die gehören einfach nicht in ein Buch. Würde aber bevorzugen, wenn diese per Mail an mich kommen, oder wenn ich den Kommentar danach wieder löschen darf. Nicht etwa, weil wir den Anspruch erheben unfehlbar zu sein ( 😉 ), sondern vielmehr damit die Kommentare sachlich und für den Leser nützlich und übersichtlich bleiben.

    Wenn du weitere Fragen zu Paketen hast, kannst du diese gerne beim entsprechenden Kapitel stellen. Ein separates Forum gibt es nicht. Dies ist auch so gewollt. So können andere Leser (falls sie evtl. die selben Fragen haben sollten) die Antwort direkt in den Kommentaren finden – ohne sich umständlich registrieren, oder lange auf eine Antwort warten zu müssen.

    Gruß
    Stefan

  5. Xnilagor

    Ein paar kleine Anmerkungen die nicht veröffentlicht werden müssen (post kann gelöscht werden)

    Oben steht „.. können getrost einige Kapitel überspringen“ widerspricht sich irgendwie mit „Vermeiden Sie Kapitelsprünge (jeder Aspekt einer Programmiersprache ist wichtig)“ aus ‚Lernen Sie Schritt für Schritt!‘

    Das ist aber nicht was ich eigentlich sagen wollte.
    Ich wollte eigentlich nur darauf aufmerksam machen das unter ‚Kompilieren der Klasse‘ folgendes steht: „Nach javac folgt eine LeerZEILE und anschließend“.

    Es soll bestimmt LeerZEICHEN heißen. Oder?

    X!

  6. Stefan Kiesel

    Hallo Xnilagor,

    danke für die Hinweise. Ich habe das Kapitel soweit angepasst.

    Das Überspringen der Kapitel bezog sich darauf, dass jemand, der schon Erfahrungen mit Java gesammelt hat, sich nicht mit einem Hello-World-Programm beschäftigen muss. Aber Sie haben recht. Meistens werden in solchen Fällen ohnehin die ersten Kapitel übersprungen.

    Gruß
    Stefan

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.