introduzione
alle applet
grafica e non solo
programmi in Java
• applicazioni da console
– come gli esempi finora realizzati
• applicazioni grafiche
– stesso schema delle applicazioni da console
(con metodo main), ma sfruttando classi che
producono grafica
– più avanzate, trattate succesivamente
• applet
– schema nuovo
– "vivono" in un browser (utilizzano l'ambiente di
run-time del browser) o vengono visualizzate
tramite un'apposita utilità (appletviewer)
F. d'Amore
IGEA
2
applet /1
• little application
– ma sono proposti altri significati, come
"application object" o "programs that run on
panels"
• strumenti rapidi ed efficaci per gestire la
grafica
– ...e non solo
• abbinate a codice HTML
– vengono definiti appositi riquadri entro i quali
avviene la visualizzazione
F. d'Amore
IGEA
3
applet e sicurezza
• soggette a restrizioni di sicurezza
(sandbox)
• i browser possono impedire loro di
– lanciare altre applicazioni
– accedere al file system locale
– accedere ad informazioni sul sistema su
cui sono in esecuzione
– comunicare liberamente via rete
F. d'Amore
IGEA
4
esecuzione di applet
client
client
(browser)
(browser)
carica pagina a.html
server
server
(http)
(http)
<html>
…
<applet code = "a.class"…>
</applet>
…
</html>
carica file a.class
JVM
a.html
a.class
F. d'Amore
IGEA
5
codice HTML per applet
• TAG <applet>:
<applet code = "nome_file_bytecode"
width = "pixel_larghezza_riquadro"
height =
"pixel_altezza_riquadro">messaggio
visualizzato durante
caricamento</applet>
• esempio:
<applet code = "a.class"
width = "300"
height = "300">caricamento</applet>
F. d'Amore
IGEA
6
codice Java per applet
import java.applet.Applet;
public class <nome> extends Applet {
// metodi…
}
• la parola chiave extends fa sì che la
classe <nome> contenga (erediti)
"automaticamente" tutti i metodi e le
variabili istanza della classe Applet
– anche se non sono esplicitamente definiti
F. d'Amore
IGEA
7
un'applet "minimale"
import java.awt.Graphics;
import java.applet.Applet;
public class Applet0 extends Applet {
public void paint(Graphics g) {
g.drawString("Welcome to Java!!",
50, 60 );
}
}
clic per provare
F. d'Amore
IGEA
8
ciclo di vita delle applet /1
• il browser, nell'attivare l'applet, esegue in
sequenza i metodi
– costruttore, all'atto dell'istanziazione
– init, primo metodo attivato, svolge eventuali operazioni
di inizializzazione non specificate nel costruttore
– start, attivato subito dopo init, contiene istruzioni di
avvio
– paint, attivato dopo start, contiene le istruzioni per la
visualizzazione
• ogni volta che il gestore delle finestre del
browser ritiene che occorra ridisegnare la
finestra dell'applet chiamerà
(automaticamente) il metodo paint
F. d'Amore
IGEA
9
ciclo di vita delle applet /2
• altri due metodi
– stop
• eseguito quando l'applet viene arrestata (ad es.,
iconizzando la finestra)
– destroy
• eseguito subito prima che l'applet venga distrutta
• l'esatto significato dei metodi si
comprende osservando attentamente il
comportamento dell'applet PrimoApplet
F. d'Amore
IGEA
10
commenti
• non è chiaro cosa inserire nel costruttore e
cosa in init
– in ogni caso: inizializzazioni
• cosa è utile inserire in start e stop?
– dipende dall'importanza dell'iconizzazione e del
successivo ripristino della finestra
• mai chiamare i metodi init, start, paint,
stop, destroy
– vengono chiamate automaticamente, spesso
dal gestore delle finestre
• buona parte delle "nostre" applet avranno
solo init e paint
F. d'Amore
IGEA
11
Java, Java 2 e i browser
• Java, linguaggio originale
• i browser incorporano una macchina
virtuale Java sostanzialmente standard
• Java si evolve, dando luogo a Java 2
• i browser non si evolvono parallelamente,
rimanendo su Java
• i browser subiscono successivamente
evoluzioni "proprietarie", fra loro non ben
compatibili
F. d'Amore
IGEA
12
browser per Java
• funzionamento standard solo usando
Java
– manca la parte migliore del linguaggio!
• Netscape, Mozilla, Opera e HotJava
attualmente si basano sulla JVM della
Sun e quindi su Java 2
• Internet Explorer usa una JVM
Microsoft non compatibile con Java 2
F. d'Amore
IGEA
13
appletviewer
• utilità distribuita assieme a j2se per
la visualizzazione delle applet
– appletviewer <file HTML>
• disponibile e stabile
• consente di comandare
esplicitamente lo stop/start
• rende più pratico il processo di
eliminazione degli errori (debugging)
F. d'Amore
IGEA
14