Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort

Download:
- ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
7., aktualisierte Auflage
geb., mit DVD (November 2007)
1.492 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1146-8
Pfeil 20 Applets
Pfeil 20.1 Applets in der Wiege von Java
Pfeil 20.1.1 (J)Applet und Applikationen
Pfeil 20.1.2 Das erste Hallo-Applet
Pfeil 20.1.3 Die Zyklen eines Applets
Pfeil 20.1.4 Parameter an das Applet übergeben
Pfeil 20.1.5 Wie das Applet den Browser-Inhalt ändern kann
Pfeil 20.1.6 Den Ursprung des Applets erfragen
Pfeil 20.1.7 Datenaustausch zwischen Applets
Pfeil 20.1.8 Was ein Applet alles darf
Pfeil 20.2 Fehler in Applets finden
Pfeil 20.2.1 Ist Java im Browser aktiviert?
Pfeil 20.2.2 Läuft das Applet unter Netscape oder Microsoft Explorer?
Pfeil 20.2.3 Datenaustausch zwischen Applets und Java-Skripten
Pfeil 20.3 Webstart


Galileo Computing - Zum Seitenanfang

20.2 Fehler in Applets finden Zur nächsten ÜberschriftZur vorigen Überschrift

Werden Applets vom Browser nicht ausgeführt, weil es Fehler in unserem Programm gibt, dann gibt es unter dem Internet Explorer und dem Netscape Communicator/Navigator die Möglichkeit, Log-Informationen anzusehen und so die Fehler genauer zu studieren.

  • Internet Explorer Im Menü ExtraInternetoptionen findet sich im Reiter Erweitert ein Eintrag mit dem Namen Microsoft VM. Wir wählen dort das Auswahlfeld Java-Protokollierung aktiviert ebenso wie Java-Konsole an.
  • Netscape Im Menü Optionen (Tools) muss der Eintrag Java-Konsole angewählt werden. Es erscheint ein neues Fenster mit den Ausgaben.

Galileo Computing - Zum Seitenanfang

20.2.1 Ist Java im Browser aktiviert? Zur nächsten ÜberschriftZur vorigen Überschrift

Wenn unser Browser Java-Applets ausführen soll, aber Java gar nicht aktiviert ist, dann lassen sich einige interaktive Benutzeraktionen nicht durchführen. Wir sollten daher zumindest eine Meldung anbieten, dass der Browser Java gerade nicht aktiviert hat. Dies kann beabsichtigt oder nicht beabsichtigt sein. Natürlich kommt Java dafür nicht in Frage, aber eine Skript-Sprache mit einem ähnlichen Namen: JavaScript. Ab JavaScript-Version 1.1 bietet uns der Interpreter die Funktion javaEnabled() an, so dass wir eine Weiterschaltung vornehmen können:

if ( !navigator.javaEnabled() ) 
{ 
  self.location.href = "nix_mit_java.html"; 
}

Für diese Lösung muss natürlich JavaScript aktiviert sein. Für einige Surfer ist selbst dies schon eine Sicherheitslücke, und wenn JavaScript deaktiviert ist, lässt sich hier nichts mehr machen. Falls JavaScript aktiviert ist, kommen wir dem Benutzer einen Schritt entgegen, sodass er nicht mehr manuell angeben muss, ob Java aktiv ist oder nicht. Von dieser Technik sollten wir auch Gebrauch machen, denn nicht immer hat der Benutzer aktiv Java abgeschaltet. Im Beispiel oben haben wir eine Seite angesteuert, wobei natürlich andere Anweisungen denkbar sind. Doch diese Form ist sinnvoll, denn wir können Benutzern eine Kurzbeschreibung darüber liefern, wie Java im Browser aktiviert wird. Zusammen mit der Browservariante ist eine browsergenaue Beschreibung einsetzbar.


Galileo Computing - Zum Seitenanfang

20.2.2 Läuft das Applet unter Netscape oder Microsoft Explorer? Zur nächsten ÜberschriftZur vorigen Überschrift

Kann der Browser ein Applet aus irgendwelchen Gründen nicht ausführen, so sind die Meldungen an den Benutzer meist mager. Oft beschränken sie sich auf eine Exception-Angabe in der Statuszeile. Dies mag keiner mehr sehen wollen. Doch leider verschärfen inkompatible Browser die Situation. Was hier Abhilfe bringt, ist ein kleines Programm, das zunächst herausfindet, auf welchem Browser das Applet läuft. Dann können unter Umständen browser- und versionsabhängige Varianten ausgeführt werden.

Wir verwenden einen Trick, der auch beim Erkennen von Prozessortypen angewendet wird: Wir versuchen, Klassen zu laden oder Methoden aufzurufen, die es für den jeweils anderen Browser nicht gibt. Der Internet Explorer hat zum Beispiel eine private Klasse com.ms.applet.GenericAppletContext und Mozilla eine Klasse netscape.applet.MozillaAppletContext. Löst die JVM beim Laden der Klasse eine Exception aus, wissen wir Bescheid, um welchen Browser es sich handelt.

Versuchen wir, über die selbst gebastelten Methoden isNetscape() und isMicrosoft() etwas über unsere Laufzeitumgebung herauszufinden.

Listing 20.8 BrowserDetector.java

import java.applet.Applet; 
 
public class BrowserDetector extends Applet 
{ 
  public void init() 
  { 
    if ( isNetscape() ) 
      System.out.println( "This is a Netscape Browser." ); 
 
    if ( isMicrosoft() ) 
      System.out.println( "This is a Microsoft Browser." ); 
  } 
 
  public static boolean isNetscape() 
  { 
    try { 
      Class.forName( "netscape.applet.MozillaAppletContext" ); 
    } 
    catch ( ClassNotFoundException e ) { return false; } 
    return true; 
  } 
  public static boolean isMicrosoft() 
  { 
    try { 
      Class.forName( "com.ms.applet.GenericAppletContext" ); 
    } 
    catch ( ClassNotFoundException e ) { return false; } 
 
 
    return true; 
  } 
}

Die Idee lässt sich natürlich auch anwenden, um Java-Versionen zu testen; es wird einfach eine Klasse erfragt, die bei einer neuen Java-Version hinzugekommen ist, bei Java 2 etwa Point2D.


Tipp Tipp Da nicht immer sichergestellt sein kann, dass Java in einer vernünftigen Version (>= 1.2) auf dem Clientrechner der Benutzer installiert ist, lässt sich ein Test-Applet vorschalten, das zunächst die Java-Version prüft. Anschließend kann dieses Eingangs-Applet über getAppletContext().showDocument() auf eine andere Seite mit einem Applet verweisen. Für unterschiedliche Browser und Java-Installationen können somit unterschiedliche Applets auf die Situation eingehen.



Galileo Computing - Zum Seitenanfang

20.2.3 Datenaustausch zwischen Applets und Java-Skripten topZur vorigen Überschrift

Da der Netscape Navigator sowohl Java als auch JavaScript unterstützt, hat Netscape eine Technik implementiert, mit der das Java-Applet und das JavaScript-Programm Daten austauschen können.

JavaScript ruft Applet auf

Innerhalb von JavaScript lassen sich alle öffentlichen Variablen und Methoden vom Applet in der Form document.appletname.variable beziehungsweise document.appletname. metho-de() ansprechen.

Applet ruft JavaScript auf

Ein Java-Applet kann auf Komponenten des DOM-Baums zugreifen, und so zum Beispiel Formularfelder füllen. Dazu dient die Klasse JSObject aus dem Package netscape.javascript. Obwohl das Paket eine Spezialität von Netscape suggeriert, ist es auch beim IE dabei. Die folgende Zeile liest ein Attribut member des HTML-Dokuments aus.

JSObject o = JSObject.getWindow( this ); 
String s; 
s = ((JSObject)o.getMember("document")).getMember("member").toString();

Das Argument der statischen Funktion getWindows() ist die Referenz auf das Applet-Objekt.

Die Webseite http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/packages.htm gibt Informationen über die Pakete und Funktionen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück



Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de