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