Java Applets
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Inhalt
Einführung   
Hello World Applet   
In HTML einbinden   
Appletprogrammierung   
Java Plugin   
HTML Converter   
JApplet   
Ein Applet über JavaScript steuern   
Sicherheit   
Sicherheit bei Verwendung des Aktuellen Java-Plugin von SUN   
Sicherheit der Java-Implementierung dem MS-Internetexplorers   
Sicherheit der Java-Implementierung des Netscape-Navigators   
Sicherheit von Java-Applets im Opera-Browser   
Links zum Thema Applet-Sicherheit   
Signierte Applets   
Probleme mit Java Applets   
Firefox 2.0   
Links Allgemein   
Diskussion   
Fragen   
Ältere Inhalte   
Java 6 Update 10   

Einführung    
Java-Applets sind kleine Java-Programme, die in Webseiten integriert werden können. Die Integration erfolgt über HTML-Kommandos, wobei dem Applet (ganz ähnlich wie einem Bild) eine bestimmte Rechtecksgröße zugeordnet wird.

Java-Applets werden von einem Java-Interpreter im WebBrowser oder heute in der Regel von einem Java-Plugin im Browser auf dem lokalen Rechner des Web-Benutzers ausgeführt. Das Java-Plugin ruft dann die "Java Virtual Machine" auf, welche den Java-Code ausführt.

Ich habe mal angefangen diese Seite zu Überarbeiten, da ich mich sehr für Applets und Java-Technologie interessiere. Als ersten Schritt habe ich einmal eine Gliederung mit Überschriften zum Thema Applets eingefügt. Würde mich freuen, wenn mir jemand beim Auffüllen hilft.

Gruß HermannWacker

Hello World Applet    

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

public class Hello extends Applet {
  public void paint(Graphics g) {
    g.drawString("Hello World!", 25, 50);
  }
}

In HTML einbinden    

<applet code="Hello.class" width=300 height=200>
Hier steht das Applet
</applet>

Appletprogrammierung    
Ein Java-Applet hat kein Hauptprogramm, bzw. keine ihm zugeordnete main() Methode.
Statt dessen gibt es die folgenden Hauptmethoden, welche durch die entsprechenden Events aktiviert werden. Der Anwender überschreibt diese Methoden, um bei den zugeordneten Events die gewünschte Funktionalität zu aktivieren.

Java Plugin    
In der Regel wird von einem Browser heute kein Java-Interpreter mehr bereit gestellt, sondern es wird ein Java-Plugin für den Browser verwendet, welches die Java Virtual Machine (JVM) aufruft. Dadurch kann man die aktuellen Java-Implementierungen verwenden. Microsoft ist z.B. im MS-Internetexplorer mit seinem Java-Interpreter nie über die Java-Version 1.0 herausgekommen. Der schlechte Ruf von JavaApplets beruht in der Regel auf der Implementierung des Java-Interpreters durch die Browserhersteller (z.B Netscape). Sun hat sich deshalb für eine Plugin-Technologie entschlossen.
Man kann ein Java-Plugin für seinen Browser installieren und dann die aktuelle Java-Technologie verwenden. Die frühen Probleme, die man mit Java-Applets hatte, sollten damit behoben sein. Wenn man die die aktuelle Version der Java-Runtime-Environment JRE verwendet, werden alle benötigten Plugins gleich mit installiert. Über den folgenden Link kann überprüft werden, ob die aktuelle Version der JRE installiert ist, und ob der verwendete Browser Zugriff auf diese Installation hat.
Java Installation Überprüfen

Informationen über die Java-Plugin-Technologie bekommt man über den folgenden Link:
Java-Plugin-Technologie

Welche Plugins im Browser installiert sind kann man z.B. für den Firefox/Mozilla Browser sehr schön über meine Java Script-Seite herausbekommen:
JavaScript und DHTML

Java Plugin 1.4.2 Developer Guide

HTML Converter    
In der Regel ist es von Vorteil, wenn eine HTML-Seite, welche ein Java-Applet enthält, erkennt, ob ein Java-Plugin im verwendeten Browser nachinstalliert werden muss, und die Installation des entsprechenden Java-Plugins vorschlägt, wenn dieses nicht vorhanden ist.
Ein solcher Algorithmus is nicht besonders leicht zu implementieren. Deshalb hat Sun den HTML Converter entwickelt, der diese Umwandlung des HTML-Codes automatisch durchführt. Man fügt als Entwickler das Applet mit einem normalen Applet-Tag ein. Der übrige Code wird vom HTML-Converter eingefügt.

Beispiel: RGB Farbmixer Applet Auf dieser Seite wurde das Applet-Tag mit dem HTML Converter verändert.

Weitere Links:
More About HTML Converter

JApplet    
JApplet ist die Swing Variante eines Applets. Leitet man sein Applet von der Klasse JApplet ab, so kann man auch die Java-Swing-Bedienelemente in einem Applet verwenden. Für klassische Applets kann man die Grafik eines Applets nur mit dem AWT programmieren.

Ein Applet über JavaScript steuern    
Das große Problem bei JavaScript ist, daß jeder Browserhersteller JavaScript anders implementiert. Will man als Webdesigner JavaScript nicht nur für einen Browser entwickeln, so hat man in der Regel die Aufgabe, für jeden Browser die JavaScript-Funktionalität speziell anzupassen. Eine weitere Herausvorderung ist, dass sich die JavaScript-Funktionalität eines Browsers von Browserversion zu Browserversion ändert. Man muss im Extremfall dann noch eine versionsspezifische Anpassung durchführen.
Beispiel: Fraktalberechnung in einem separaten Fenster
Im Beispiel arbeitet die JavaScript-Funktionalität mit dem MS-Internetexplorer und mit Firefox/Mozilla (aktuelle Versionen), da für diese eine spezielle BrowserWeiche? und JavaScript-Funktionalität entwickelt wurde. Bisher arbeitet das JavaScript dieser Seite aber noch nicht mit dem Browser Opera.

Mozilla LiveConnect
JavaScript im DseWiki

Sicherheit    
Die Sicherheit einer Java-Applet-Anwendung ist immer die Frage, wie sicher ist die verwendete "Sandbox" Technologie und die allem zu Grunde liegende Java Virtual Machine. Es stellt sich deshalb die Frage, wie sicher sind die einzelnen Implementierungen und Versionen. Mir sind für die aktuellen Versionen von SUN (Java-Plugin) keine Probleme bekannt. Hier wäre es mal interessant, zu erfahren, ob da jemand aktuelle Informationen hat.
Ob die im Browser verwendete Java Technologie aktuell ist läßt sich über den folgenden Link überprüfen:
Java Installation Überprüfen
Sicherheit bei Verwendung des Aktuellen Java-Plugin von SUN    
Bei Verwendung des aktuellen Java-Plugins von SUN sollten keine Sicherheitsprobleme auftreten.
Wenn Sicherheitsprobleme bekannt werden bitte berichten.
Mit dem Java-Plugin von SUN hat man auch immer die neueste Java-Technologie zur Verfügung.

Aber Vorsicht bei Signierten-Applets in anderen Browsern ausgeführt, können diese den MS-Internetexplorer manipulieren. Ein Browser fragt aber immer nach ob er ein signiertes Applet ausführen darf:
Heise Meldung Signierte Applets
Man sollte also wissen, daß, wenn man die Ausführung eines signierten Applets erlaubt, dies nicht mehr an die Sandbox gebunden ist.

Sicherheit der Java-Implementierung dem MS-Internetexplorers    
Microsoft verwendet eine eigene Java-Implementierung. Diese unterstützt die aktuelle Java-Version nicht.
Ab und zu werden aber auch von MS Sicherheitslücken geschlossen.
Heise Meldung
Man kann den Internet Explorer aber auch mit dem Java-Plugin von SUN betreiben und hat dann die Aktuelle Java Version.
Java Installation Überprüfen
Sicherheit der Java-Implementierung des Netscape-Navigators    
Der Netscape-Navigator benutzt seine eigene Java-Implementierung.
Diese hat viel zum schlechten Ruf von Java-Applets beigetragen.
Man sollte in diesem Fall Applets ausschalten oder die Plugin-Technologie von SUN verwenden.
Es stellt sich auch die Frage ob der Netscape-Navigator überhaupt noch weiter entwickelt wird?
Java Installation Überprüfen
Sicherheit von Java-Applets im Opera-Browser    
Der Opera-Browser benutzt die Java-Plugin-Technologie
Java Installation Überprüfen
Links zum Thema Applet-Sicherheit    
Hostile Applets (Wie aktuell ist diese Information, welche Java-Version? Gelten diese Gefahren für die aktuellen Java-Implementierungen?)
Sind dies nicht die Probleme des Java-Interpreters im Netscape-Browser?
Signierte Applets    
Normalerweise haben Applets, die aus dem Netz geladen wurden, nur eingeschränkte Zugriffsmöglichkeiten auf die Resourcen des Systems, auf dem sie ausgeführt werden. Sie laufen in einer sogenannten "Sandbox", in der sie nur harmlose Sachen machen dürfen. Will man erreichen, dass Applets auch Zugriff auf geschützte Resourcen haben, so muss man alle zu einem Applet gehörende Dateien in einem Jar-File verpacken und dieses Jar-File dann signieren. Ein Browser fragt immer nach, ob er ein signiertes Applet ausführen darf. Also vorsicht, wenn man hier auf "Ok" drückt.

Um ein Jar-File signieren zu können, benötigt man zuerst ein Schlüsselpaar:
keytool -genkey -alias testkey -dname "CN=Hans Mustermann, O=Test Verein, C=de"
keystroke passwort: nullbock

Ein Jar-Archive signieren:
jarsigner -signedjar outjar injar testkey

Links zum Thema Sicherheit und signierte Java-Applets:
Probleme mit Java Applets    
Einige Probleme, die im Zusammenhang mit Java-Applets auftreten können, habe ich auf meiner Java-Seite gesammelt.
Java-Applets, Java-Plugin und Java Virtual Machine

Firefox 2.0    
Wie in Bugzilla berichtet wird, ist die mit Java SE 6.0u1 mitgelieferte Erweiterung Java-Konsole nicht kompatibel zu Firefox. Java an sich funktioniert, jedoch ist innerhalb des Menüs Extras der Eintrag "Java-Konsole" nicht verfügbar. Das Problem wird mit Erscheinen von Java SE 6.0u2 (J2SE6?.0.02) behoben sein und dann auf der Java-Website zum Download zur Verfügung stehen. Sollten Sie bis zur Freigabe der offiziellen Java-Version die Java-Konsole dringend benötigen, können Sie auch ein aktuelles Java Snapshot-Release auf eigenes Risiko installieren.
Links Allgemein    
Java Applets Artikel in der deutschen Wikipedia.
Applets im Buch Java Insel
JavaAppletsImWiki
JavaThreads

Diskussion    
Fragen    
1.) Kann man SWT Grafik (aus dem Eclipse Projekt) in Applets verwenden?
HermannWacker

2.) Mit Japplet lassen sich Swing Grafikkomponenten in Applets verwenden. Nun ist die Swing Software nicht Threadfest implementiert. Um ein Applet in dem Fall, wo es lange Rechnungen durchführt unterbrechbar zu machen ist es heufig notwendig mehrere Threads zu haben. Hat Jemand Informationen und Tipps zu diesem Thema. Ich sehe dies auch als großes Hinderniss ganze Applikationen in Applets aufzuhängen.
HermannWacker

Links zu diesem Thema findet man hier: SwingMultithreading

3.) Gibt es eine Methode, mit der man während der Laufzeit eines Applets abfragen kann, ob dieses signiert wurde?
HermannWacker

Ältere Inhalte    
Es gibt inzwischen neue Java-Versionen. Die Frage stellt sich deshalb, ob die folgende Diskussion noch gültig ist?
Sind Sicherheitsprobleme mit aktuellen Java-Implementierungen bekannt?
SicherheitsProblemeVonJavaApplets
JavaApplets/ÄltereInhalte

Java 6 Update 10    

Wesentliche Änderungen gab es mit Java 6 Update 10. Zwar soll das alte Plugin-Modell noch verfügbar sein, aber man kann sich eigentlich nicht darauf verlassen, dass eine unter Patch 7 getestete Web-Anwendung sich mit Patch 13 tatsächlich zuverlässig über das Web ausliefern lässt.

Grundidee bei den Änderungen: Applet-Technologie und WebStart? wachsen zusammen. Man kann seine Anwendung leichter auf verschiedenen Wegen zum Anwender bringen.

Bei JavaFX kann man den Unterschied leicht sehen, wenn man die Stage draggable macht. Das folgende Sample sieht zwar im Browser ähnlich aus, funktioniert aber erst ab Update 10 korrekt:

Die Frage die sich mir jetzt stellt ist, wie binde ich den jetzt ein Applet in eine HTML-Seite ein, damit die aktuelle Technologie funktioniert? Bisher wurde ja das Object Tag, welches das Java-Applet einbindet automatisch generiert. (Wenn ich das HTML validiere bekomme ich einige Fehlermeldungen, ausgelöst durch diesen tag. Standard konformes HTML währe nett.) Gruß HermannWacker

Wenn ich ein JavaFX-Applet mit Netbeans entwickle, generiert mir Netbeans eine Html-Seite. Natürlich würde man die noch ändern wollen. Das wird von der IDE nicht berücksichtigt. Man kann kein Template angeben, in das die benötigten Passagen hineingeneriert werden.


KategorieJava KategorieWebDesign


StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert am 20. Juli 2010 14:19 (diff))
Suchbegriff: gesucht wird im Titel im Text