Java-Applet zu Java-Applikation umschreiben: Unterschied zwischen den Versionen
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- | + | 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?== | ||
− | {{ | + | |
+ | 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]] |
+ | |||
+ | {{Fragen stellen}} | ||
− | |||
[[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:
Inhaltsverzeichnis
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
undJApplet
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 eineComponent
. Zeigen, wie man die einfach in einemFrame
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
- Einbinden von Java-Applets in HTML-Dateien
- Java-Applets und Java WebStart-Anwendungen signieren
- Java Applets und Java Web Start-Anwendungen starten - ab Java 7 Update 51
- JAR-Datei
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
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.