Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 1 Schon wieder eine neue Sprache?
  gp 1.1 Der erste Kontakt
  gp 1.2 Historischer Hintergrund
  gp 1.3 Eigenschaften von Java
    gp 1.3.1 Bytecode und die virtuelle Maschine
    gp 1.3.2 Kein Präprozessor für Textersetzungen
    gp 1.3.3 Keine überladenen Operatoren
    gp 1.3.4 Zeiger und Referenzen
    gp 1.3.5 Bring den Müll raus, Garbage-Collector!
    gp 1.3.6 Ausnahmenbehandlung
    gp 1.3.7 Objektorientierung in Java
    gp 1.3.8 Java-Security-Modell
    gp 1.3.9 Wofür sich Java nicht eignet
  gp 1.4 Java im Vergleich zu anderen Sprachen
    gp 1.4.1 Java und JavaScript
    gp 1.4.2 Normierungsversuche
    gp 1.4.3 Die Rolle von Java im Web
    gp 1.4.4 Vollwertige Applikationen statt Applets
  gp 1.5 Die Java Platform Standard Edition (Java SE)
    gp 1.5.1 JDK und JRE
    gp 1.5.2 Java-Versionen
    gp 1.5.3 Java für die Kleinen
    gp 1.5.4 Java für die Großen
    gp 1.5.5 Direkt ausführbare Programme, native Compiler
  gp 1.6 Entwicklungsumgebungen
    gp 1.6.1 Sun ONE Studio und NetBeans von Sun
    gp 1.6.2 IBM und Eclipse
    gp 1.6.3 Together
    gp 1.6.4 Ein Wort zu Microsoft, Java und zu J++
  gp 1.7 Installationsanleitung für Java 2
    gp 1.7.1 Das Java SE beziehen
    gp 1.7.2 Java SE unter Windows installieren
    gp 1.7.3 Compiler und Interpreter nutzen
    gp 1.7.4 Installation der Laufzeitumgebung (1.4) unter Linux
  gp 1.8 Das erste Programm compilieren und testen
    gp 1.8.1 Häufige Compiler- und Interpreterprobleme
  gp 1.9 Eclipse
    gp 1.9.1 Eclipse starten
    gp 1.9.2 Das erste Projekt anlegen
    gp 1.9.3 Eine Klasse hinzufügen
    gp 1.9.4 Übersetzen und Ausführen
    gp 1.9.5 JDK statt JRE
    gp 1.9.6 Start eines Programms ohne Speicheraufforderung
    gp 1.9.7 Projekt einfügen oder Workspace für die Aufgaben wechseln
    gp 1.9.8 Allgemeine Plugins für Eclipse
    gp 1.9.9 Eclipse Web Tools Platform (WTP)


Galileo Computing

1.8 Das erste Programm compilieren und testedowntop

Nachdem wir die groben Konzepte von Java besprochen haben, wollen wir ganz dem Zitat von Dennis M. Ritchie folgen, der behauptet: »Eine neue Programmiersprache lernt man nur, wenn man in ihr Programme schreibt.« Das erste Programm zeigt einen Algorithmus, der die Quadrate der Zahlen von 1 bis 4 ausgibt. Die ganze Programmlogik sitzt in einer Klasse Quadrat, die drei Funktionen enthält. Alle Funktionen in einer objektorientierten Programmiersprache wie Java müssen in Klassen platziert werden. Die erste Funktion quadrat() bekommt als Übergabeparameter eine ganze Zahl und berechnet daraus die Quadratzahl, die sie anschließend zurückgibt. Eine weitere Funktion übernimmt die Ausgabe der Quadratzahlen bis zu einer vorgegebenen Grenze. Die Funktion bedient sich dabei der Funktion quadrat(). Zum Schluss muss es noch ein besonderes Unterprogramm main() geben, das für den Java-Interpreter den Einstiegspunkt bietet. Die Methode main() ruft dann die Funktion ausgabe() auf.


Hinweis   Der Java-Compiler unterscheidet sehr penibel zwischen Groß- und Kleinschreibung.

Listing 1.1   Quadrat.java

/**
 * @version 1.01    6 Dez 1998
 * @author Christian Ullenboom
 */
public class Quadrat
{
  static int quadrat( int n )
  {
    return n * n;
  }
  static void ausgabe( int n )
  {
    String s;
    int    i;
    for ( i = 1; i <= n; i=i+1 )
    {
      s = "Quadrat("
          + i
          + ") = "
          + quadrat(i);
      System.out.println( s );
    }
  }
  public static void main( String[] args )
  {
    ausgabe( 4 );
  }
}

Der Quellcode (engl. source code) Quadrat.java soll exemplarisch im Verzeichnis D:\projekte\ gespeichert werden. Wir wechseln dann auf der Konsole in das Verzeichnis und werden zunächst das Programm übersetzen (mit dem Dienstprogramm javac) und anschließend mit dem Java-Interpreter ausführen (java). Beide Programme sollten im Suchpfad zu finden sein.

Liegt die Quellcodedatei vor, kann sie compiliert werden. Die Datei muss so heißen wie ihre Klasse, andernfalls kann sie das Laufzeitsystem nicht finden. Ist die Datei richtig benannt, lässt sich der Compiler erfolgreich aufrufen.

D:\projekte>  javac Quadrat.java  

Die Beachtung der Groß- und Kleinschreibung ist wichtig. Eine andere Endung wie etwa ».txt« oder ».jav« ist nicht erlaubt und mündet in einer Fehlermeldung.

D:\projekte>javac Quadrat  .txt
  Quadrat.txt is an invalid option or argument.
Usage: javac <options> <source files>

Der Compiler legt, vorausgesetzt, das Programm war fehlerfrei, die Datei Quadrat.class an. Diese enthält den Bytecode. Mit dem Interpreter kommt das Programm zur Ausführung:

D:\projekte>  java Quadrat  

Die erwartete Ausgabe:

Quadrat(1) = 1
Quadrat(2) = 4
Quadrat(3) = 9
Quadrat(4) = 16

Als Parameter für den Interpreter wird der Name der Klasse übergeben, die eine main()-Funktion enthält und somit als ausführbar gilt. Der Dateiname ist daher auch nicht mit der Endung »class« zu versehen, da es keine Klasse mit dem Namen Quadrat.class gibt.


Galileo Computing

1.8.1 Häufige Compiler- und Interpreterprobleme  toptop

Arbeiten wir auf der Kommandozeilenebene (Shell) ohne integrierte Entwicklungsumgebung, können verschiedene Probleme auftreten. Ist der Pfad zum Compiler nicht richtig gesetzt, wird unter DOS (NT-Shell) eine Fehlermeldung der Form

D:\>  javac Quadrat.java
  Der Befehl ist entweder falsch geschrieben oder konnte
 nicht gefunden werden.
Bitte überprüfen Sie die Schreibweise und die
 Umgebungsvariable ’PATH’.

ausgegeben. Unter UNIX lautet die Meldung gewohnt kurz:

javac: Command not found

Findet der Compiler in einer Zeile einen Fehler, so meldet er diesen unter der Angabe der Datei und der Zeilennummer. Nehmen wir noch einmal unser Quadratzahlen-Programm und bauen in der quadrat()-Funktion einen Fehler ein (das Semikolon fällt der Löschtaste zum Opfer). Der Compilerdurchlauf meldet:

Quadrat.java:10: ’;’ expected.
    return n * n
               ^
1 error

War der Compilerdurchlauf erfolgreich, wird der Interpreter mit dem Programm java aufgerufen. Verschreiben wir uns bei dem Namen der Klasse oder fügen wir unserem Klassennamen das Suffix »class« hinzu, so meckert der Interpreter. Beim Versuch, die nicht existente Klasse Q zum Leben erwecken, schreibt der Interpreter auf den Fehlerkanal:

$   java Q.class
  Exception in thread "main"   java.lang.NoClassDefFoundError:\
Q/class

Ist der Name der Klassendatei korrekt, doch hat die Hauptfunktion keine Signatur public static void main(String[]), so kann der Java-Interpreter keine Funktion finden, bei der er mit der Ausführung beginnen soll. Verschreiben wir uns bei der main()-Funktion in Quadrat, dann folgt die Fehlermeldung:

In class Quadrat: void main(String argv[]) is not defined
 << zurück




Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de