Java-Applet zu Java-Applikation umschreiben

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Java-Applets sind spätestens mit der Veröffentlichung von Java 7 Update 51 auf Webseiten im Internet praktisch bedeutungslos geworden. Zu viele Sicherheitslücken, die bis dahin aktiv ausgenutzt wurden, steckten im Java Plugin für Webbrowser. Mit dem Release von Java 7 Update 51 wurden Applets sämtliche Rechte entzogen. Nur die Anpassung der Einstellungen in der Java Runtime, in der einbettenden Jar-Datei und in der einbettenden Ẃebseite versetzten Benutzer noch in die Lage, Java-Applets auszuführen.

Mit Veröffentlichung von Java 9 hat Oracle das Java Plugin als deprecated (veraltet) eingestuft. In einer späteren Java-Version wird das Java Plugin also aus dem JDK und der JRE entfernt werden.

Auch die Browser-Hersteller unterstützen bereits in ihren aktuellen Versionen ihrer Programme keine Java-Applets mehr. Zeit also, nützliche Java-Applets zu ausführbare Java-Anwendungen umzubauen.

In diesem Tutorial werden wir eine häufig gestellte Frage behandeln und ausführlich beantworten:

Wie verwandelt man ein Java-Applet in eine Java-Anwendung?

Ein Applet in eine Anwendung umzuschreiben kann sehr einfach sein: Es gibt viele Applets, die nur wenig Funktionalität haben, und zum Beispiel nur etwas auf den Bildschirm zeichnen. In diesen Fällen kann man das Applet manchmal unverändert in eine Anwendung einfügen. Wenn das Applet mehr Funktionalität enthält (also Bedienkomponenten wie z.B. Buttons, Animationen oder Maus-Interaktion) kann es notwendig sein, diese Funktionalitäten einzeln in eine Anwendung zu übertragen. Je nachdem, wie das Applet aufgebaut ist, kann es dabei empfehlenswert sein, die Funktionen durch modernere Gegenstücke zu ersetzen - zum Beispiel, wenn ein Applet, das mit AWT entwickelt wurde, in eine Swing-Anwendung umgeschrieben werden soll.

Im Folgenden werden einige Beispiele für einfache Applets gezeigt und wie man ihre Funktionen in eine Anwendung übertragen kann.

In Arbeit! Dieser Artikel wird gerade noch bearbeitet

  • Wie auf den Unterschied von Applet und JApplet eingehen? (Letztere sind recht selten...)
  • Kurzer Hinweis auf die Applet Lifecycle Methods (init/start/stop/destroy) hier? Die werden unten an verschiedenen Punkten benötigt...

Der Applet-Lebenszyklus

Grundsätzlich sollte ein Java-Applet die vier Methoden des Applet-Lebenszyklus durchlaufen. Es handelt sich hierbei um vier Methoden, die jedes (J)Applet überschreiben sollte.

public void init()

Die init()-Methode hat in einem Applet eine ähnliche Funktion wie ein Konstruktor (Java) einer "normalen" Klasse. Zwar können Applets auch einen Konstruktor haben, nur wird dieser hier nur dann eingesetzt, wenn man ein Objekt des Applets benötigt. Wann kann das der Fall sein? Nun, z.B. wenn man das Applet als GUI-Komponente benutzen will. Ein java.applet.Applet erbt direkt von Panel und kann daher in einer AWT-Benutzerschnittstelle auch in andere GUI-Komponenten eingefügt (geschachtelt) werden. Bitte beachten: AWT- und Swing-Komponenten dürfen nicht gemischt werden. Der Vererbungsstrang von Applet sieht wie folgt aus:

java.lang.Object
   java.awt.Component
       java.awt.Container
           java.awt.Panel
               java.applet.Applet 
                   javax.swing.JApplet

Ansonsten obliegt der init()-Methode die Initialisierung und der Aufbau der Datenfelder/Objekte bzw. wird hier ggf. die Benutzerschnittstelle (GUI) aufgebaut. Auch Threads sollten hier initialisiert werden.

Merksatz: Die init()-Methode wird nur einmal (automatisch) vom Webbrowser beim Laden des Applets aufgerufen.

public void start()

Ist die Initialisierung des Applets abgeschlossen, wird die start()-Methode vom Webbrowser aufgerufen und teilt dem Applet mit, dass es mit der Ausführung beginnen soll.

Die start()-Methode kann während der Laufzeit des Applets durchaus mehrmals vom Browser aufgerufen werden. Wenn die einbettende Webseite neu geladen wird, oder das Applet (wieder) in den Sichtbarkeitsbereich im Webbrowser zurück gescrollt wird, ruft er die start()-Methode auf. Hier ist also der richtige Ort um, wartende oder gestoppte Threads wieder laufen zu lassen. Die start()- und die stop()-Methoden sollten dafür immer zusammenarbeiten.

public void stop()

Die stop()-Methode wird z.B. vom Webbrowser aufgerufen, wenn der Benutzer die einbettende Webseite so weit scrollt, dass das Applet im Browser nicht mehr sichtbar ist. Außerdem, wenn die Webseite gewechselt (verlassen) wurde. Die stop()-Methode wird vom Webbrowser immer vor der destroy()-Methode aufgerufen.

public void destroy()

Die destroy()-Methode wird nach der stop()-Methode beim Beenden des Webbrowsers aufgerufen. Hier sollten insbesondere Threads zerstört und Ressourcen die das Applet zugewiesen hat wieder freigegeben werden.

Ein einfaches Applet mit minimalem Aufwand in eine Anwendung verwandeln

  • Ein Applet ist eine Component. Zeigen, wie man die einfach in einem Frame darstellen kann


Zeichenfunktionen

  • Zeigen, wie man die update/paint-Methoden (inklusive händischem double-buffering) nach Swing überträgt


Animationen

  • Das Negativbeispiel von "sleep in paint" verdammen, und einen einfachen repaint-Thread zeigen


Bedienkomponenten

  • Ggf. schwierig zu trennen. Es gibt Applets, die da richtigen Mist machen. Applets enthalten machmal Buttons UND Zeichenfunktionalität...
  • Händisches "button.setBounds" war OK, weil sich die Applet-Größe nie geändert hat. Kurzer Hinweis (KEINE Anleitung!) zu LayoutManagern
  • Erwähnen, das Button/Slider/CheckBox leicht zu JButton/JSlider/JCheckBox gemacht werden können





Siehe auch


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.