24.2 Java und das WWW  
Um ein Java-Programm im Browser betrachten zu können, muss es sich um ein so genanntes Applet handeln. Dadurch ändert sich der schematische Aufbau ein wenig. Die genauen Details sollen uns aber nicht interessieren. Auf der DVD zu diesem Buch finden Sie das kompilierte Applet, und Sie können es auch direkt ausprobieren.
24.2.1 Ein Beispiel-Applet  
Das folgende Applet wird in diesem Kapitel als Beispiel verwendet. Es zeichnet zu Anfang einen roten Kreis, denn die Methode paint() wird beim Laden des Applets aufgerufen. Außerdem gibt es noch eine Methode auswahl(), die anscheinend ein paar Variablen des Applets verändert und dann wieder paint() aufruft. Wenn Sie das Ganze selbst ausprobieren wollen, müssen Sie den Java-Quelltext unter demselben Namen wie die Klasse abspeichern. Letztere heißt ball, also wird der Quelltext unter ball.java abgespeichert.
import java.applet.*;
import java.awt.*;
public class ball extends Applet{
private int radius = 100;
private Color farbe = Color.red;
public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(0, 0, 449, 449);
g.setColor(farbe);
g.fillOval(225-radius, 225-radius, 2*radius-1,
2*radius-1);
}
public void auswahl(int neuer_radius, String
farbcode){
this.radius = neuer_radius;
if (farbcode.equals("rot"))
{this.farbe=Color.red;} else
if (farbcode.equals("blau"))
{this.farbe = Color.blue;} else
if (farbcode.equals("gruen"))
{this.farbe = Color.green;} else
this.farbe = Color.black;
paint(getGraphics());
}
}
24.2.2 HTML-Integration  
Das Ziel dieses Beispiels ist, mit JavaScript dieses Applet anzusteuern. Dazu soll folgendes HTML-Grundgerüst als Basis dienen. In einem Formular kann man den Radius des Kreises eingeben und via Radiobutton die Farbe des Kreises auswählen.
<html>
<head>
<title>Java und JavaScript</title>
<script "text/javascript"><!--
function java(f) {
if (navigator.javaEnabled()) {
var radius = parseInt(f.radius.value);
if (isNaN(radius) || radius>200 || radius<1) {
radius = 200;
}
var farbe = f.farbe[0].checked ? "rot" :
(f.farbe[1].checked ? "blau" : "gruen");
document.ball.auswahl(radius, farbe);
} else {
alert("Bedaure, bei Ihrem Browser ist Java deaktiviert");
}
}
//--></script>
</head>
<body>
<h1>Java und JavaScript</h1>
<applet code="ball.class" name="ball" width="450" height="450">
Ihr Browser unterstützt kein Java!
</applet>
<form>
Radius (von 1 bis 200): <input type="text" name="radius" size="3" />
<br />
Farbe:
<input type="radio" name="farbe" value="rot" /> rot -
<input type="radio" name="farbe" value="blau" /> blau -
<input type="radio" name="farbe" value="gruen" /> grün<br>
<input type="button" value="Zeichnen" onclick="java(this.form);" />
</form>
</body>
</html>
 Hier klicken, um das Bild zu Vergrößern
Abbildung 24.1 Java-Applets mit JavaScript steuern
Nüchtern analysiert, erledigt die Funktion java() Folgendes: Zuerst wird navigator.javaEnabled() abgefragt. Diese Methode gibt an, ob der Benutzer im Browser Java aktiviert hat. Ein Nebeneffekt dieser Abfrage ist, dass die Java Virtual Machine gestartet wird, sofern das noch nicht geschehen ist. Das dauert oft eine Weile. In diesem Fall fällt das aber nicht ins Gewicht, da aufgrund des Applets innerhalb der HTML-Seite die Virtual Machine ohnehin schon gestartet worden ist.
Als Nächstes liest die Funktion java() die Formularwerte ein und wandelt die Eingabe im Radius-Eingabefeld in eine Zahl zwischen 1 und 200 um.
Die Umwandlung der Zeichenkette in eine Zahl ist prinzipiell gar nicht nötig, das geschieht automatisch. Allerdings musste ja noch der Radius gegebenenfalls innerhalb des Intervalls von 1 bis 200 untergebracht werden.
Die interessanteste Zeile der Funktion ist:
document.ball.auswahl(radius, farbe);
Mit document.ball wird auf das Applet in der HTML-Seite zugegriffen, denn dieses hat das name-Attribut ball. Mit document.ball.auswahl() greifen Sie also auf die Methode auswahl() im Applet zu. Generell gilt, dass man mit JavaScript auf alle Methoden des Applets zugreifen kann, sofern sie als public deklariert worden sind. Den Rest erledigt in diesem Beispiel das Applet. Die entsprechenden Parameter werden verändert, und der Kreis wird neu gezeichnet.
Leider sorgt die Kommunikation zwischen Java und JavaScript auf der Mac-Plattform für Probleme. Safari (und damit Konqueror auch) unterstützten zwar Java, wenn die Java-Erweiterung für Mac OS installiert ist, aber nicht den Zugriff darauf von JavaScript aus. Auch der Internet Explorer kann unter Mac nicht per JavaScript auf ein eingebettetes Applet zugreifen. Allerdings gibt es Hoffnung für die Mac-Jünger: Aktuelle Versionen der OS-X-Browser unterstützen wieder den JavaScript-Zugriff auf Java-Applets – allerdings erst ab OS X 10.3.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 24.2 Java funktioniert, der JavaScript-Zugriff nur in neueren Versionen
Der Netscape Navigator bietet des Weiteren die Möglichkeit, von Java-Programmen aus JavaScript-Objekte anzusprechen. Diese Möglichkeit bietet der Microsoft Internet Explorer nicht, und die Funktionalität kann man auch in der anderen Richtung bereitstellen (d. h., man kann von JavaScript aus geeignete Java-Methoden aufrufen). Auch in neueren Mozilla-Browsern sucht man nach diesen Features vergeblich, weswegen wir sie hier außen vor lassen.
|