Java-Applet zu Java-Applikation umschreiben: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K (Siehe auch)
K
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
+
[[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 dem Release von Java 7 Update 51 wurden Applets sämtliche Rechte entzogen. Nur die [[Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51|Anpassung der Einstellungen in der Java Runtime]], in der einbettenden Jar-Datei und in der [[Einbinden von Java-Applets in HTML-Dateien|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-Versionen wird das Java Plugin also aus dem JDK und der JRE entfernt werden.
+
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.
 
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.
Zeile 9: Zeile 9:
  
 
==Wie verwandelt man ein Java-Applet in eine Java-Anwendung?==
 
==Wie verwandelt man ein Java-Applet in eine Java-Anwendung?==
{{In Arbeit}}
+
 
 +
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 <code>Applet</code> und <code>JApplet</code> 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 {{JAPI|java.applet.Applet}} erbt direkt von {{JAPI|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/[[Objekt|Objekte]] bzw. wird hier ggf. die Benutzerschnittstelle (GUI) aufgebaut. Auch [[Thread|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 [[Einbinden von Java-Applets in HTML-Dateien|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 [[Einbinden von Java-Applets in HTML-Dateien|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 [[Thread|Threads]] zerstört und Ressourcen die das Applet zugewiesen hat wieder freigegeben werden.
 +
 
 +
== Ein einfaches Applet mit minimalem Aufwand in eine Anwendung verwandeln ==
 +
 
 +
* Ein <code>Applet</code> ist eine <code>Component</code>. Zeigen, wie man die einfach in einem <code>Frame</code> darstellen kann
 +
 
 +
 
 +
== Zeichenfunktionen ==
 +
 
 +
* Zeigen, wie man die <code>update</code>/<code>paint</code>-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==
 
==Siehe auch==
Zeile 15: Zeile 77:
 
* [[Java-Applets und Java WebStart-Anwendungen signieren]]
 
* [[Java-Applets und Java WebStart-Anwendungen signieren]]
 
* [[Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51]]
 
* [[Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51]]
* [[Jar Datei]]
+
* [[JAR-Datei]]
 +
 
 +
{{Fragen stellen}}
  
[[Kategorie:Java]]
 
 
[[Kategorie:Java Applets]]
 
[[Kategorie:Java Applets]]
[[Kategorie:Tutorials]]
+
[[Kategorie:Tutorials (Java)]]

Aktuelle Version vom 19. April 2020, 17:23 Uhr

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.