200 Applets, Demo 1: Rasterpunktmodell "Rpm90_Applet"

Wegen geänderter Sicherheitseinstellungen kann dieses Applet aktuell nicht ausgeführt werden. Man studiere den Quellcode.


Dieses Applet wird im Body des Quelltextes dieses HTML-Dokuments wie folgt aufgerufen:

            
                .....
                <applet code="Rpm90_Applet.class" width="400" height="400">
                </applet>
                .....
           
           

Ein Applet ist ein Java-Programm (nicht gemeint ist die Scriptsprache JavaScript), das nur innerhalb einer HTML-Seite aufgerufen werden kann bzw. vom Browser interpretiert wird. Mit nur minimalen Änderungen kann aber auch eine selbständige Java-Applikation erstellt werden, die nach der Compilierung mit dem Compiler JavaC.exe durch den Java-Bytecode-Interpreter Java.exe ausgeführt werden kann.

Der Quelltext eines Applets oder selbständigen Java-Programms, hier Rpm90_Applet.java, wird mit einem beliebigen Texteditor erstellt. Anschließend ist der Quelltext mit dem Java-Compiler JavaC.exe in den Java-Bytecode (auch Klassendatei genannt) Rpm90_Applet.class zu übersetzen. Der Compiler-Aufruf im MS-DOS-Eingabefenster oder in "Ausführen":

          
             javac Rpm90_Applet.java
          
          

Das Compilat erhält vom Compiler die Extension .class, ist aber kein lauffähiges Programm wie etwa eine EXE-Datei, sondern benötigt zur Ausführung entweder:

Bei einem selbständigen Java-Programm (nicht in HTML) erfolgt der Aufruf des Java-Bytecode-Interpreters wie folgt:

               
               java Rpm90
               
              

Java-Applikationen und Java-Applets sind plattformunabhängig; laufen also in der gleichen Art sowohl unter Windows-, Mac- und Unix-Systemen. Lediglich der Byte-Interpreter Java.exe ist prozessor-spezifisch; steht aber für alle gängigen Prozessoren zur Verfügung.

Dem großen Vorteil der Plattformunabhängikeit von Java steht als wesentlicher Nachteil die geringe Ausführungsgeschwindigkeit gegenüber, da der Byte-Code zur Laufzeit interpretiert werden muß.

Im Gegensatz zu JavaScript ist Java eine streng typisierte Sprache und ähnelt der in der Syntax und in der Objektorientierung der Sprache C++. Im Gegensatz zu JavaScript können in Java auch Grafiken programmiert werden, wie dieses Beispiel zeigt.

Diese Applet und auch die folgenden Applets sollen nur ein Hineinschnuppern in Java ermöglichen. Die vollständige Beherrschung von Java setzt wie jede andere Sprache ein intensives Beschäftigen mit der Materie voraus.

Der Quelltext von "Rpm90_Applet.java":


   
// K. Haller, 04.01.2000, Applet "Rpm90_Applet.java" bzw. "Rpm90_Applet.class"
import java.awt.Graphics;   // Oder alle Klassen der AWT-Package
import java.awt.color;      // (AWT = Abstract Window Toolkit)
import java.awt.Font;       // zusammen mit "import java.awt.*;"

        // Hier die HTML-Java-Applet-Version "Rpm90_Applet"
        // Man beachte auch die eigenständige Applikation "Rpm90"

public class Rpm90_Applet extends java.applet.Applet  {
  int xMax   = 400;
  int yMax   = xMax;
  int k      = xMax/2 - 30; // k = Einheitslaenge
  int x0     = xMax/2;
  int y0     = xMax/2 + 10;
  String str = "Klassisches Rasterpunktmodell \"Rpm90\", kha";

  double yRpm(double x, double X1)  {
    return Math.sqrt(1 + x*x - Math.sqrt((1 - X1*X1)*(1 - X1*X1) + 4*x*x));
  }

  public void init()  {
    resize(xMax, yMax);  // Groesse des Applet-Fensters
  }

  public void paint(Graphics g)  {
    Font f = new Font("Arial, Helvetica", Font.BOLD, 16);
    g.setFont(f);
    g.setcolor(color.red);
    g.drawString(str, 30, 30);

    g.setcolor(color.yellow);
    g.fillRect(x0 - k, y0 - k,  // Nullpunkt des Rechteckes links oben
               2 * k,  2 * k);  // Rechteckbreite, -hoehe
                                // Ohne Fuellung: "g.drawRect(...)"
    g.setcolor(color.gray);
    g.drawLine(x0 - k, y0, x0 + k, y0);
    g.drawLine(x0, y0 - k, x0, y0 + k);

    g.setcolor(color.blue);

    for (int i = 1; i <= 10; i++)  {
      double X1 = (double) (i) / 10;
      int xK = (int) (X1*k);     // "X1*k" in Klammern !!!

      int    ya, ye;
      double xa, xe;
      for (int xk = 0; xk < xK; xk++)  {
        xa = ((double) (xk) + 0)/k;
        xe = ((double) (xk) + 1)/k;

        if (xk == 0)       ya = xK;
        else               ya = (int) Math.round((k * yRpm(xa, X1)));

        if (xk == xK - 1)  ye = 0;   // Evtl. Binaereffekte vermeiden
        else               ye = (int) Math.round((k * yRpm(xe, X1)));

        g.drawLine(x0 + xk, y0 + ya,   x0 + (xk + 1), y0 + ye);  // 1. Quadrant
        g.drawLine(x0 - xk, y0 + ya,   x0 - (xk + 1), y0 + ye);  // 2. Quadrant
        g.drawLine(x0 - xk, y0 - ya,   x0 - (xk + 1), y0 - ye);  // 3. Quadrant
        g.drawLine(x0 + xk, y0 - ya,   x0 + (xk + 1), y0 - ye);  // 4. Quadrant
      }  // Ende for xk
    }    // Ende for i
  }      // Ende paint
}        // Ende class



Zurück zur Startseite