11. Packages

 

 

Bis hierher haben Sie einen "Crash Kurs" Java mitgemacht: Sie kennen nun die allerwichtigsten Grundlagen. Hier geht es vorallem darum, sich umzusehen, was Java noch alles zu bieten hat. Also machen Sie in diesem Kapitel eine Besichtigungs - Tour durch die Klassenbibliothek von Java. Diese Tour soll Ihnen einen Überblick verschaffen über das, was in Java schon vorhanden ist. In den folgenden Kapiteln werden wir uns dann einige Sachen herausgreifen und genauer ansehen.
 

  • Die Tour beginnt bei der SDK Dokumentation, die sie schon einmal kennengelernt haben. Öffnen Sie also wieder die Dokumentation auf eine der drei damals vorgestellten Arten. Falls Sie nicht mehr wissen wie, klicken Sie hier.
  • Wählen Sie "API & Language Documentation", "Java 2 Platform API Specification" so dass Sie folgendes Fenster sehen:

Sie sehen die Übersicht (Overview) zum API (Application Programmers Interface) Specification. Wir sind Application Programmers und über das Programmers Interface haben wir Zugriff auf das, was Java uns zur Verfügung stellt. Dieses etwas sind Klassen und Interfaces mit ihren Methoden etc. Das Ganze ist wie schon früher erwähnt in Packages geordnet, wobei diese wie Ordner eine hierarchische Struktur haben. Unterpackages werden durch einen Punkt von ihren Superpackages getrennt.

Sie sehen im Hauptframe die Zusammenstellung der Standard - Packages. Das wichtigste Package ist java. Es enthält die grundlegendsten Klassen. Später wurde es ergänzt durch das Package javax (x für extended). Und schlussendlich gibt es Packages verschiedener Open Source Organisationen, welche hier beigepackt wurden im Package org. In der Spalte rechts von den Packagenamen sehen Sie jeweils eine kurze Beschreibung.

  • Ein Package sehen Sie sich am besten an, indem Sie es im Frame oben links anklicken: Klicken Sie auf java.awt.
  • Die Klassen und Interfaces dieses Packages sehen Sie im Frame unten links.Durch einen Klick auf eine Klasse erhalten Sie im Hauptframe die Beschreibung. Klicken Sie auf die Klasse Point. Wie zu erwarten, ist ein Point ein Punkt in einem Koordinatensystem. Man kann seine Koordinaten setzen und abfragen, man kann den Point aber auch verschieben, etc. Viele Grafikmethoden arbeiten mit Points.
  • Wir wollen uns aber jetzt nicht in den Einzelheiten einzelner Klassen verlieren, sondern uns mit einer Übersicht befassen, viel mehr sollen Sie sich merken, in welchen Packages Sie suchen müssen, wenn Sie etwas brauchen. Drucken Sie sich zuerst das Besprechungsblatt, damit Sie sich eventuelle Fragen notieren können. Gehen Sie dann die einzelnen Subpackages von java durch und sehen Sie meine nachfolgenden Kommentare an:

java.applet:
Klasse Applet, von welcher Applets abgeleitet werden. Hilfsklassen, insbesondere für Bild und Ton, welche sehr einfach in Applets einzubauen sind.

java.awt:
Abstract Window Toolkit, enthält alles, was wir für einfache Grafik brauchen. Klassen für raffiniertere Grafiken sind in den Unterpackages von awt.

java.beans:
Beans (Bohnen) sind Programmteile, welche wie im Baukasten zu Applikationen zusammengebaut werden können. Werden in grösseren Projekten verwendet.

java.io:
Input - Output, also der Transfer von Daten von und zur Aussenwelt, insbesondere Dateien.

java.lang:
Das Hauptpackage. Vielleicht ist Ihnen aufgefallen, dass Sie bei Klassen wie System nicht sagen mussten, wo sich diese befinden. java.lang wird standardmässig importiert.

java.math:
Die normale Mathematik wie Winkelfunktionen etc. befindet sich nicht hier, sondern in der Klasse Math im package java.lang. Im Package java.math befinden sich Klassen für beliebig grosse bzw. beliebig genaue Zahlen.

java.net:
Die Unterstützung von Java für Netzwerkverkehr. Da lassen sich Verbindungen mit Servern aufbauen, aber auch sehr grundlegende Protokolle wie TCP/IP verwenden.

java.nio:
?

java.rmi:
Remote Method Invocation. Applikationen können Methoden von andern Applikationen im (Inter - ) Netz aufrufen. So lassen sich vernetzte Applikationen programmieren.

java.security:
Sicherheit, wie's der Name sagt: Zertifikate, Schlüssel, etc.

java.sql:
Standard Query Language, die Standard - Datenbanksprache. Sie wird von Java unterstützt, zu verschiedensten Datenbanksystemen können Verbindungen aufgenommen werden.

java.text:
Bearbeitung von Text (Strings).

java.util:
Hilfsklassen und -methoden, die man sonst nirgends findet.

  • Ganz am Schluss sehen Sie Packages, die weder mit java, noch mit javax beginnen. Es handelt sich um Zusatzpackages, die nicht von Sun selber stammen. Wer selber zusätzliche Packages herstellt - und es gibt deren viele!!! - sollte sich an die hier aufgeführte Konvention halten: org.omg.CORBA ist eine Webadresse, nämlich CORBA.omg.org. Wenn wir am Deutschen Gymnasium Packages erstellen, sollten diese also alle beginnen mit ch.dgb. Die Konvention ist genial: Weil alle Adressen im Web eindeutig sind, sind auch alle Package - Namen eindeutig. Vorausgesetzt man hält sich an die Konvention.

Das war eine erste Tour durch die Java Klassenbibliothek. Sie haben aber erst einen ganz kleinen Teil der Dokumentation kennengelernt. Vielleicht ist Ihnen aufgefallen, dass Teile der Dokumentation gar nicht "lokal", auf Ihrem PC, gespeichert ist:

  • Wählen Sie mit dem Browser nochmals die Datei index.html im Ordner docs: In der Kolonne "location" wird angegeben, wo die Dokumentation ist: "docs" ist lokal, "website" befindet sich auf dem Server von Sun.

  • Wählen Sie z.B. im Abschnitt "API & Language Documentation" den Link "The Java Language Specification": Sie lesen ab dem Server von Sun ein wunderbares Buch, welches die Sprache Java in allen Details darstellt, geschrieben von einem der Entwickler von Java. Lesen Sie bitten nicht gerade das ganze Buch - wir haben noch anderes vor! Das Buch ist auch in Papierform erhältlich, bei Amazon z.B. für EUR 42,56:

  • Bei Sun ist aber noch viel mehr zu finden. Die Startseite auf dem Java Server ist http://java.sun.com/. Die Site von Sun ist riesig und verwirrlich. Greifen wir nur eine Sache heraus:
  • Hier finden Sie z.B. ein sehr schönes Tutorial zu Java - Konkurrenz zu meinem Text ;-) !

Jetzt sollen Sie auf einer zweiten Tour das JDK selber etwas kennenlernen:

  • Wählen Sie mit Ihrem Browser den Hauptordner Ihrer JDK - Installation - Dieser Ordner enthält das gesamte JDK, das Sie jetzt immer verwendet haben:

  1. Im Ordner "bin" sind all die Programme wie javac, java, appletviewer, etc.
  2. Der Ordner "demo" enthält eine ganze Reihe Demoprogramme, die wir uns ganz am Schluss noch anschauen.
  3. Im Ordner "docs" enthält die gesamte Dokumentation (muss speziell heruntergeladen werden!), welche Sie am Anfang dieses Kapitels angeschaut haben.
  4. "include"enthält C++ Header - Dateien, welche es ermöglichen, dass Java - Applikationen C++ Programmteile verwenden können und umgekehrt.
  5. "jre" (= Java Runtime Environment) kann auch allein heruntergeladen werden und enthält alles was nötig ist um Java auszuführen.
  6. "lib" enthält die Klassenbibliothek in übersetzter Form.
  7. "src" ist ein riesiges Archiv, welches die Quelltexte der Klassenbibliothek enthält. Wenn Sie Lust haben, können Sie das Archiv öffnen und z.B. die Klasse Color aus java.awt anschauen. So haben die Entwickler von Java definiert, was eine Farbe ist!
     

Zum Schluss unserer Tour noch zu den Demos. An Beispielprogrammen lernt man oft am besten. Also schauen Sie sich die Demoprogramme an und merken Sie sich, welches Feature in welcher Demo vorkommt. Überall sind die Quelltexte dabei, so dass Sie nachsehen können, wie's gemacht ist.

  • Browser unter "Datei öffnen" wieder den Ordner des SDK suchen und hier "demo" öffnen. Sehen Sie sich im Ordner "applets" etwas um, er enthält je wieder in einem Ordner verschiedenste Beispielapplets von ganz einfach wie z.B. NervousText über JumpingBox (erwischen Sie das Quardat mit einem Klick?) bis zu Fractal, etc. Viel Vergnügen und: Mit "The Source" können Sie sich jeweils den Quelltext ansehen!

Nach dieser langen Rundumsicht wieder etwas praktisches: Sie sollen ein Applet erstellen, welches auf Grund der Angaben der Benutzer deren Body Mass Index ausrechnet und meldet ob man über-, unter- oder normalgewichtig ist. Ich stelle mir vor, dass Sie an Hand dieser Aufgabe viele von den neuen Kenntnissen der letzten Kapitel repetieren. Und in diesem Kapitel haben Sie ja gelernt, wo nachschauen, wenn Sie etwas nicht wissen. Nachfolgend ein paar Hilfestellungen, Schritt für Schritt:

  • Erstellen Sie ein neues Projekt vom Typ "Basic Java Applet" und nennen Sie es z.B. "BMI".
    g.drawString() könnte schon mal einen Titel schreiben.
    Testen Sie das neue Projekt.
  • Das Programm soll Angaben des Benutzers übernehmen, auf Tastendruck die Berechnung ausführen und dann das Resultat zeigen. Sie brauchen also sicher eine Taste (Button) und Eingabefelder (TextField). Weiter würde ich die Beschriftungen ("Ihr Gewicht in kg: ", etc.) als Label realisieren. Ich schlage vor, dass Sie als erstes mal diese GUI Elemente erstellen. Ich würde das alles in der Methode init() machen. Es ist halt alles auf einer Zeile. Am Schluss kommen dann Ideen, wie man das schöner machen kann.Testen Sie immer wieder jede kleine Erweiterung!
  • Wenn Sie die Oberfläche haben, können Sie die Taste programmieren (addActionListener...). Den Inhalt eines TextField erhalten Sie mit seiner Methode getText(). Aber Achtung: Diese Methode liefert einen String zurück. Der String muss in eine Zahl, z.B. einen float umgewandelt werden. Für diese Umwandlung hat die Klasse Float eine Methode parseFloat(). Bei mir sieht das dann folgendermassen aus (Mein TextField heisst tmasse. Das Ergebnis von getText() ist gerade der Parameter von parseFloat() ):

    float masse = Float.parseFloat(tmasse.getText());
  • Der BMI berechnet sich folgendermassen: BMI = m / (h * h), wobei m = Masse (Gewicht) in kg und h = Höhe in m.
  • Das Ergebnis können Sie z.B. mit einem Label herausschreiben. Sie können zum Beispiel am Anfang ein leeres Label machen und dann beim Tastendruck seinen Text ändern mit der Methode setText(). Logischerweise erwartet diese Methode den zu setzenden Text als Parameter. Denken Sie daran, dass man mit + auch eine Zahl an einen String anhängen kann!
  • Damit sollte Ihr Projekt schon das machen, was es soll. Ab jetzt kommt Kosmetik. Bis hierher sieht mein primitives Applet so aus:



    Und hier ist es in Aktion:

Ideen für die Kosmetik:

  • Das Applet soll nicht den BMI angeben, sondern melden ob man Normalgewicht, Übergewicht, etc. hat. Dazu brauchen Sie die folgende Entscheidungstabelle. Denken Sie an if. Wenn Sie wollen, können Sie sich auch mit case beschäftigen:

    Die BMI Skala:  
    BMI Kategorie
    bis 18.5 Untergewicht
    18.5 bis 24.9 Normalgewicht
    25.0 bis 29.9 Übergewicht
    30.0 bis 34.9 Mässige Fettsucht
    35.0 bis 39.9 Schwere Fettsucht
    über 40.0 krankhafte Fettsucht
  • Falls Sie die GUI Elemente schöner anordnen möchten, brauchen Sie ein Layout Sehr schön ist in der Dokumentation der Border Layout beschrieben: Suchen Sie in der Dokumentation im Package java.awt die Klasse BorderLayout und lesen Sie dort den Anfang der Einleitung. Ich denke, dass Sie mit dem Beispiel durchkommen. Es gibt auch einen GridLayout, der die GUI Elemente tabellenartig anordnet. Der Rolls Royce unter den Layouts ist der GridBagLayout - auf eigene Gefahr!

Und hier wieder mal ein Link, der zeigt, was man mit Java so alles machen kann. Aber achtung: man kann süchtig werden ...