Einfache Java-Beispiele

+ andere TechDocs
+ andere Java-Docs
+ Java-Installation
+ Java-Grundlagen
+ JSP, SQL
+ Webanwendungen
+




Inhalt

  1. Java-Programm compilieren und starten
  2. Beispiel: Polymorphie
  3. Beispiel: Ein-/Ausgabe von Text
    1. Kommandozeilen-Applikation
    2. Grafischer Dialog
    3. Applet (zur Einbettung in HTML-Seite)
  4. Beispiel-Applet: Grafische Textausgabe
  5. Beispiel-Applikation: System-Eigenschaften anzeigen
  6. Beispiel-Applikation: Lesen und Schreiben einer Textdatei
  7. Beispiel-Applikation: Serialisierung eines Vectors mit Binärdatei
  8. Beispiel: Zur Laufzeit dynamisch ausgewählte Klasse starten
  9. Weitere Java-Themen (mit weiteren Beispielen)


Java-Programm compilieren und starten

  1. Java JDK installieren wie beschrieben in java-install.htm.
  2. Einrichten der Umgebungsvariablen 'JAVA_HOME', 'CLASSPATH' und 'PATH' im Environment wie beschrieben in java-install.htm.
  3. Java-Sourcecode in zum Klassennamen gleichnamiger Datei speichern mit Dateiendung .java (z.B. MeinKlassenName.java).
  4. Kompilieren mit:
    javac MeinKlassenName.java
  5. Java-Applikationen und -Applets werden unterschiedlich gestartet (siehe auch Beispiele unten).
    Java-Applikationen starten mit:
    java MeinKlassenName
    Java-Applets in HTML-Seite einbinden und starten mit:
    appletviewer MeinKlassenName.html
    (oder MeinKlassenName.html in Web-Browser laden, falls JDK-Version passt, siehe java-plugin.htm).
    Dabei kann eine einfache HTML-Seite z.B. so aussehen:
    <html><body>
    <applet code="MeinKlassenName.class" width=250 height=100></applet>
    </body></html>
  6. Sie können auch alle Beispiele in Eclipse compilieren und ausführen. Gehen Sie dazu vor wie beschrieben unter: 'java-eclipse.htm#WeitereAnwendungen'.


Beispiel: Polymorphie

Legen Sie ein Projektverzeichnis an, zum Beispiel: 'D:\MeinWorkspace\MeineErstenVersuche'.

Speichern Sie in diesem Verzeichnis die folgende Datei 'Polymorphie.java':

import java.util.Vector;

abstract class Figur
{
  abstract double getFlaeche();
}

class Rechteck extends Figur
{
  private double a, b;

  public Rechteck( double a, double b )
  {
    this.a = a;
    this.b = b;
  }

  public double getFlaeche()
  {
    return a * b;
  }
}

class Kreis extends Figur
{
  private double r;

  public Kreis( double r )
  {
    this.r = r;
  }

  public double getFlaeche()
  {
    return Math.PI * r * r;
  }
}

public class Polymorphie
{
  public static void main( String[] args )
  {
    double   flaeche = 0;
    // Instanziiere Figur-Objekte:
    Rechteck re1 = new Rechteck( 3, 4 );
    Figur    re2 = new Rechteck( 5, 6 );
    Kreis    kr1 = new Kreis( 7 );
    Figur    kr2 = new Kreis( 8 );
    Vector   vec = new Vector();
    // Fuege beliebig viele beliebige Figuren hinzu:
    vec.add( re1 );
    vec.add( re2 );
    vec.add( kr1 );
    vec.add( kr2 );
    // Berechne die Summe der Flaechen aller Figuren:
    for( int i=0; i<vec.size(); i++ ) {
      Figur f = (Figur)(vec.get( i ));
      flaeche += f.getFlaeche();
    }
    System.out.println( "Gesamtflaeche ist: " + flaeche );
  }
}

Öffnen Sie ein Kommandozeilenfenster (unter Windows XP: 'Start' | 'Alle Programme' | 'Zubehör' | 'Eingabeaufforderung') und geben Sie folgende Befehle ein (unter Windows XP können Sie den Kommandotext im Webbrowser mit gedrückter Maustaste markieren, mit 'Strg+C' zwischenspeichern und irgendwo im Kommandozeilenfenster mit rechter Maustaste, 'Einfügen' und 'Return' ausführen):

cd \MeinWorkspace\MeineErstenVersuche

javac Polymorphie.java

java Polymorphie

Doku zu 'Vector' und 'Math.PI' finden Sie unter
http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html und
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#PI.



Beispiel: Ein-/Ausgabe von Text als Kommandozeilen-Applikation, als grafischer Dialog und als Applet

Kommandozeilen-Applikation

Legen Sie ein Projektverzeichnis an, zum Beispiel: 'D:\MeinWorkspace\MeineErstenVersuche'.

Speichern Sie in diesem Verzeichnis die folgende Datei 'TextEinAusgabe1.java':

import java.io.*;

public class TextEinAusgabe1
{
  public static void main( String[] args )
  {
    System.out.println( "Text eingeben und mit Return abschliessen:" );
    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader( System.in ) );
      String s = in.readLine();
      System.out.println( "Der eingelesene Text lautet: " + s );
    } catch( IOException ex ) {
      System.out.println( ex.getMessage() );
    }
  }
}

Öffnen Sie ein Kommandozeilenfenster (unter Windows XP: 'Start' | 'Alle Programme' | 'Zubehör' | 'Eingabeaufforderung') und geben Sie folgende Befehle ein (unter Windows XP können Sie den Kommandotext im Webbrowser mit gedrückter Maustaste markieren, mit 'Strg+C' zwischenspeichern und irgendwo im Kommandozeilenfenster mit rechter Maustaste, 'Einfügen' und 'Return' ausführen):

cd \MeinWorkspace\MeineErstenVersuche

javac TextEinAusgabe1.java

java TextEinAusgabe1

Doku zu 'BufferedReader' und 'InputStreamReader' finden Sie unter
java-io.htm,
http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html und
http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html.

Grafischer Dialog

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'TextEinAusgabe2.java':

import java.awt.*;
import java.awt.event.*;

public class TextEinAusgabe2 extends Frame
{
  TextField eingabe;
  Label     ausgabe;

  public static void main( String[] args )
  {
    TextEinAusgabe2 meinFenster = new TextEinAusgabe2( "Text-Ein-/Ausgabe" );
    meinFenster.setSize( 400, 200 );
    meinFenster.setVisible( true );
  }

  public TextEinAusgabe2( String fensterTitel )
  {
    super( fensterTitel );
    Label hinweis = new Label( "Text eingeben und mit Return abschliessen" );
    eingabe = new TextField();
    ausgabe = new Label();
    add( BorderLayout.NORTH,  eingabe );
    add( BorderLayout.CENTER, hinweis );
    add( BorderLayout.SOUTH,  ausgabe );
    eingabe.addActionListener(
      new ActionListener() {
        public void actionPerformed( ActionEvent ev ) {
          meineMethode(); } } );
    addWindowListener(
      new WindowAdapter() {
        public void windowClosing( WindowEvent ev ) {
          dispose();
          System.exit( 0 ); } } );
  }

  void meineMethode()
  {
    ausgabe.setText( "Der eingelesene Text lautet: " + eingabe.getText() );
  }
}

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac TextEinAusgabe2.java

java TextEinAusgabe2

Sehen Sie sich die API-Javadoc an zu 'Frame', 'Label', 'TextField' und 'BorderLayout'.


Applet (zur Einbettung in HTML-Seite)

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'TextEinAusgabe3.java':

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class TextEinAusgabe3 extends Applet
{
  TextField eingabe;
  Label     ausgabe;

  public void init()
  {
    Label hinweis = new Label( "Oben Text eingeben und mit Return abschliessen" );
    eingabe = new TextField( "    " );
    ausgabe = new Label();
    setLayout( new BorderLayout() );
    add( BorderLayout.NORTH,  eingabe );
    add( BorderLayout.CENTER, hinweis );
    add( BorderLayout.SOUTH,  ausgabe );
    eingabe.addActionListener(
      new ActionListener() {
        public void actionPerformed( ActionEvent ev ) {
          meineMethode(); } } );
  }

  void meineMethode()
  {
    ausgabe.setText( "Der eingelesene Text lautet: " + eingabe.getText() );
  }
}

Speichern Sie im gleichen Verzeichnis die folgende Datei 'TextEinAusgabe3.html':

<html><body>
<applet code="TextEinAusgabe3.class" width=350 height=80></applet>
</body></html>

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac TextEinAusgabe3.java

appletviewer TextEinAusgabe3.html

start TextEinAusgabe3.html

Falls das letzte Kommando nicht funktioniert, ist im Webbrowser entweder kein Java oder eine zu alte Java-Version registriert. Weiteres hierzu siehe java-plugin.htm und http://www.oracle.com/technetwork/java/index-jsp-141438.html.

Bitte beachten Sie, dass im vorigen Beispiel 'TextEinAusgabe2' von 'Frame' abgeleitet wurde, während diese Klasse 'TextEinAusgabe3' von 'Applet' abgeleitet wird.



Beispiel-Applet: Grafische Textausgabe und Parameterübergabe

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'FirstHello.java':

import java.applet.Applet;
import java.awt.*;

public class FirstHello extends Applet
{
  Font   f1 = new Font( "Helvetica", Font.BOLD, 11 );
  Font   f2 = new Font( "Helvetica", Font.BOLD, 48 );
  Color  c1 = new Color( 255, 0, 0 );
  Color  c2 = new Color( 0, 0, 255 );
  String s;

  public void init()
  {
    // Parameter aus HTML-Datei übernehmen:
    s = getParameter( "Zeichenkette" );
  }

  public void paint( Graphics g )
  {
    g.setColor( c1 );
    if( null == s || 0 >= s.length() ) {
      g.setFont( f1 );
      g.drawString( "Keine 'Zeichenkette' gefunden: " +
        "wahrscheinlich wurde Applet ohne HTML-Datei gestartet.",
        50, 65 );
    } else {
      g.setFont( f2 );
      g.drawString( s, 50, 65 );
    }
    g.setColor( c2 );
    g.drawOval( 20, 0, 205, 95 );
  }
}

Speichern Sie im gleichen Verzeichnis die folgende Datei 'FirstHello.html':

<html><body>
<h3>Ausgabe eines Java-Applets:</h3>
<applet code="FirstHello.class" width=250 height=100>
<param name="Zeichenkette" value="Hallo !">
<br>Bitte Java-Support einschalten !<br>
</applet>
</body></html>

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac FirstHello.java

appletviewer FirstHello.html

start FirstHello.html

Falls das letzte Kommando nicht funktioniert, ist im Webbrowser entweder kein Java oder eine zu alte Java-Version registriert. Weiteres hierzu siehe java-plugin.htm und http://www.oracle.com/technetwork/java/index-jsp-141438.html.

Sehen Sie sich die API-Javadoc an zu 'Applet', 'Font', 'Color', 'Graphics'.



Beispiel-Applikation: System-Eigenschaften anzeigen

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'SystemProperties.java':

public class SystemProperties
{
  public static void main( String[] args )
  {
    System.out.println( System.getProperties().toString().replace( ',', '\n' )
                                                         .replace( '{', ' '  )
                                                         .replace( '}', ' '  ) );
  }
}

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac SystemProperties.java

java SystemProperties

start http://www.torsten-horn.de/techdocs/ShowSystemPropertiesApplet.htm

Sehen Sie sich die API-Javadoc an zu 'System' und 'String'.



Beispiel-Applikation: Lesen und Schreiben einer Textdatei

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'LesenSchreibenTextdatei.java':

import java.io.*;
import java.text.*;
import java.util.*;

public class LesenSchreibenTextdatei
{
  public static void main( String[] args )
  {
    final String[] KEYS = { "user.name", "user.language", "user.home",
                            "os.name", "java.version" };
    Vector vec = new Vector();
    String s;

    // Lies Textzeilen aus der Datei in einen Vector:
    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                          new FileInputStream( "MeineTextDatei.txt" ) ) );
      while( null != (s = in.readLine()) ) {
        vec.add( s );
      }
    } catch( FileNotFoundException ex ) {
    } catch( Exception ex ) {
      System.out.println( ex );
    } finally {
      if( in != null ) in.close();
    }

    // Falls es keine Datei gab, erzeuge Einträge im Vector:
    if( 0 >= vec.size() ) {
      for( int i=0; i<KEYS.length; i++ ) {
        vec.add( KEYS[i] + " = " + System.getProperty( KEYS[i] ) );
      }
    }

    // Füge weiteren Eintrag hinzu:
    vec.add( "Zeitstempel = " + new SimpleDateFormat(
                         "yyyy-MM-dd HH:mm:ss,SSS" ).format( new Date() ) );

    // Schreibe alle Elemente als Textzeilen in die Datei:
    try {
      BufferedWriter out = new BufferedWriter(
                           new OutputStreamWriter(
                           new FileOutputStream( "MeineTextDatei.txt" ) ) );
      for( int i=0; i<vec.size(); i++ ) {
        s = vec.get( i ).toString();
        System.out.println( s );
        out.write( s, 0, s.length() );
        out.newLine();
      }
    } catch( IOException ex ) {
      System.out.println( ex );
    } finally {
      if( out != null ) out.close();
    }
  }
}

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac LesenSchreibenTextdatei.java

java LesenSchreibenTextdatei

java LesenSchreibenTextdatei

java LesenSchreibenTextdatei

type MeineTextDatei.txt

Rufen Sie 'java LesenSchreibenTextdatei' mehrmals auf, um zu sehen, dass der alte Zeitstempel gelesen wurde und der neue hinzugefügt wird.

Sehen Sie sich die API-Javadoc an zu 'Vector', 'BufferedReader', 'InputStreamReader', 'FileInputStream', 'BufferedWriter' und 'OutputStreamWriter' und 'FileOutputStream'.



Beispiel-Applikation: Serialisierung eines Vectors mit Binärdatei

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'SerializeVector.java':

import java.io.*;
import java.util.Vector;

public class SerializeVector
{
  public static void main( String[] args )
  {
    // Read my objects from a file into a Vector:
    Vector vecMyObjs = null;
    try {
      ObjectInputStream in = new ObjectInputStream(
                             new FileInputStream( "MyObjs.dat" ) );
      vecMyObjs = (Vector)in.readObject();
    } catch( FileNotFoundException ex ) {
    } catch( Exception ex ) {
      System.out.println( ex );
    } finally {
      if( in != null ) in.close();
    }
    if( vecMyObjs == null )
      vecMyObjs = new Vector();

    // Do some intelligent stuff with vecMyObjs ...
    vecMyObjs.addElement( new String( "Hello" + vecMyObjs.size() ) );
    System.out.println( vecMyObjs );

    // Write my objects into a file:
    try {
      ObjectOutputStream out = new ObjectOutputStream(
                               new FileOutputStream( "MyObjs.dat" ) );
      out.writeObject( vecMyObjs );
      out.flush();
    } catch( IOException ex ) {
      System.out.println( ex );
    } finally {
      if( out != null ) out.close();
    }
  }
}

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac SerializeVector.java

java SerializeVector

java SerializeVector

java SerializeVector

type MyObjs.dat

Rufen Sie 'java SerializeVector' mehrmals auf, um zu sehen, dass das vorherige 'Vector'-Objekt korrekt gespeichert und erweitert wurde.

Das Kommando 'type MyObjs.dat' macht nicht wirklich Sinn, aber zeigt, dass dies eine Binärdatei ist.

Sehen Sie sich die API-Javadoc an zu 'Vector', 'ObjectInputStream', 'FileInputStream', 'ObjectOutputStream' und 'FileOutputStream'.



Beispiel: Zur Laufzeit dynamisch ausgewählte Klasse starten

Erzeugen Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' das Package-Unterverzeichnis 'mypckg'.

Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche\mypckg' die folgende Datei 'RunClassForName.java':

package mypckg;

public class RunClassForName
{
  public static void main( String[] args ) throws Exception
  {
    if( 1 > args.length ) {
      System.out.println( "Klassenname (z.B. 'mypckg.MyClass1') als Parameter benoetigt." );
      System.exit( 1 );
    }
    Object obj = instantiateClassForName( args[0] );
    if( obj instanceof Runnable )
      ((Runnable)obj).run();
    else
      System.out.println( obj );
  }

  public static Object instantiateClassForName( String className ) throws Exception
  {
    Class c = Class.forName( className );
    if( null == c )
      throw new Exception( "Error: Unable to access class '" + className + "'." );
    Object o = c.newInstance();
    if( null == o )
      throw new Exception( "Error: Unable to create instance of class '" + className + "'." );
    return o;
  }
}


class MyClass1 implements Runnable
{
  public void run()
  {
    System.out.println( "Ausfuehrung von MyClass1.run()" );
  }
}


class MyClass2 implements Runnable
{
  public void run()
  {
    System.out.println( "Ausfuehrung von MyClass2.run()" );
  }
}

Geben Sie folgende Befehle im Kommandozeilenfenster ein:

cd \MeinWorkspace\MeineErstenVersuche

javac mypckg/RunClassForName.java

java mypckg.RunClassForName

java mypckg.RunClassForName mypckg.MyClass1

java mypckg.RunClassForName mypckg.MyClass2

Sehen Sie sich die API-Javadoc an zu 'Class.forName()', 'Class.newInstance()' und 'Runnable'.

Ein ausführlicheres Beispiel inklusive Suche im Classpath finden Sie unter ClassFinder.java.





Weitere Themen: andere TechDocs | andere Java-Docs | Java-Installation | Java-Grundlagen | JSP | SQL | Webanwendungen
© 1998-2007 Torsten Horn, Aachen