Sei sulla pagina 1di 8

Le applet

Unapplet un tipo particolare di programma Java che pu essere incorporato in una pagina HTML e visualizzato mediante un browser web abilitato. Un browser abilitato per luso di Java se incorpora il Java Plug-in, un componente del Java Runtime Environment (JRE) che consente di eseguire lapplet in un'istanza della macchina virtuale Java (JVM) incorporata nel processo del browser Web. A partire dalla versione di Java 6 update 10, il Java Plug-in stato aggiornato (Java Plug-in di ultima generazione) consentendo di eseguire le applet all'esterno del browser, in una o pi istanze separate della JVM. Per ulteriori informazioni in merito alluso del Java Plug-in vi suggerisco di leggere larticolo al seguente url: http://www.java.com/it/download/help/new_plugin.xml. Unapplet una classe pubblica di Java che estende la classe JApplet del package javax.swing. Si osservi che la classe JApplet una sottoclasse di java.applet.Applet.

Container

JComponent

Panel

JPanel

Applet

JApplet

Per ci che riguarda il codice, avremo: import javax.swing.* ; import java.awt.* ; public class PrimaApplet extends JApplet { //codice dellapplet }

1
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

Inserimento di unapplet in una pagina Web


Per inserire unapplet in una pagina HTML occorre: compilare il file sorgente (con estensione .java) per ottenere il file, o i file, di classe (con estensione .class) creare un file HTML contenente un apposito tag che indichi al browser quale file di classe caricare e come dimensionare lapplet. Il tag HTML che consente di inserire unapplet alla pagina object1; nella sua forma pi essenziale, si presenta cos: <object codetype= "application/java" classid= "java:nome file class" width= "larghezza" height= "altezza"> testo alternativo </object>

Lattributo codetype indica il tipo di oggetto che stiamo inserendo, cio application/java. Lattributo classid specifica il nome del file class. Gli attributi width e height determinano le dimensioni in pixel della finestra che conterr lapplet. Tra i due tag <object> e </object> possibile inserire un testo, che sar mostrato solo nel caso in cui il browser non possa visualizzare lapplet.

Un file HTML per contenere lapplet PrimaApplet deve presentare almeno i seguenti elementi: <html> <head> <title> titolo della finestra </title> </head> <body> <object codetype= "application/java" classid= "java:PrimaApplet.class" width= "300" height= "300"> qui si vedrebbe unapplet, se il browser potesse visualizzarla </object> </body> </html> Ulteriori attributi del tag object sono descritti nella traduzione italiana della specifica HTML 4.01, reperibile allurl: http://www.diodati.org/w3c/html401/struct/objects.html.

In passato si utilizzava il tag applet, ma ora stato deprecato dal W3C.

2
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

Ciclo di vita di unapplet


La classe JApplet eredita dalla sua superclasse Applet quattro metodi, usati per gestire la sua esecuzione:

public public public public

void void void void

init() start() stop() destroy()

Lesecuzione di questi metodi viene attivata direttamente dal Java Plug-in, che in questo modo, pu controllare il funzionamento dellapplet. Appena unapplet viene caricata, mediante lapertura del file HTML nel browser, viene eseguito il metodo init e successivamente il metodo start. Se ci si sposta su una pagina diversa, viene invocato il metodo stop, mentre ogni volta che si torna alla pagina contenente lapplet, viene richiamato il metodo start. Infine, quando il browser viene chiuso, viene invocato il metodo destroy. Descriviamo, pi dettagliatamente, le funzioni svolte dai quattro metodi.

init

Questo metodo serve per tutte le inizializzazioni dellapplet. Funziona come un costruttore e viene chiamato automaticamente quando lapplet viene eseguita la prima volta. Le applet possono avere un costruttore predefinito, ma consuetudine eseguire tutte le inizializzazioni nel metodo init.

start

Questo metodo viene chiamato automaticamente dopo lesecuzione di init e ogniqualvolta lutente ritorna alla pagina contenente lapplet, dopo aver visitato altre pagine. Il metodo start il punto in cui solitamente viene riavviato un thread per lapplet, per esempio per riprendere unanimazione. Se lapplet non compie alcuna operazione che deve essere sospesa quando lutente esce dalla pagina Web corrente, non occorre ridefinire (override) questo metodo.

stop

Questo metodo viene chiamato automaticamente quando lutente esce dalla pagina in cui si trova lapplet. Ha lo scopo di interrompere unattivit quando lutente non presta attenzione allapplet. Se lapplet non esegue animazioni, non riproduce file audio e non esegue elaborazioni in un thread, la ridefinizione di questo metodo non necessaria.

destroy

Questo metodo viene richiamato solo quando il browser viene chiuso normalmente. Deve essere ridefinito qualora, alla terminazione dellapplet, debbano essere rilasciate risorse aggiuntive.

3
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

Caratteristiche del codice di unapplet


Per costruire unapplet bisogna tener conto delle seguenti indicazioni:

1. unapplet deve essere creata come sottoclasse public della classe JApplet;
fondamentale che sia pubblica, altrimenti non potr essere caricata; 2. unapplet non contiene il metodo main; 3. il codice di inizializzazione, solitamente contenuto nel costruttore della classe, deve essere spostato allinterno del metodo init dellapplet; 4. non necessario costruire esplicitamente loggetto applet poich di questo si occupa il browser. Inoltre, per quanto riguarda gli elementi dellinterfaccia utente, non necessario:

1. costruire un contenitore JFrame, poich lapplet viene visualizzata nella finestra 2.


3. del browser; impostare le dimensioni con setSize, in quanto le applet vengono dimensionate con i parametri width e height del tag HTML object; gestire levento chiusura della finestra in quanto unapplet non pu essere chiusa ma termina quando lutente chiude il browser; utilizzare il metodo setTitle poich le applet non hanno barra del titolo: possibile assegnare il titolo alla pagina web con il tag HTML title; visualizzare lapplet chiamando il metodo setVisible, perch lapplet viene visualizzata automaticamente.

4. 5.

Esempio: applet che visualizza la data di sistema


FILE Data.java
import import import import import import import import import java.awt.BorderLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.sql.Date; javax.swing.JApplet; javax.swing.JButton; javax.swing.JLabel; javax.swing.JPanel; javax.swing.SwingConstants;

@SuppressWarnings("serial") public class Data extends JApplet { public void init() { JPanel panel = new JPanel(new BorderLayout()); final JLabel dataLabel= new JLabel("", SwingConstants.CENTER); JButton dataButton= new JButton("DATA"); panel.add(dataButton, BorderLayout.SOUTH); panel.add(dataLabel, BorderLayout.CENTER); add(panel); dataButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ long time =System.currentTimeMillis();

4
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

String data = new Date(time).toString(); dataLabel.setText(data); }); } } }

FILE data.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Data</title> </head> <body> <object codetype="application/java" classid="java:Data.class" width="300" height="300"> Qui compare un'applet, se il browser pu visualizzarla </object> </body> </html>

Il metodo statico della classe System currentTimeMillis, restituisce in un long la data di sistema. Il costruttore della classe Date crea un oggetto contenente la data di sistema. Questa viene poi convertita in una stringa.

Visualizzazione di unapplet
Prima di visualizzare unapplet in un browser, possibile testarla con il visualizzatore di applet fornito con il JDK, appletviewer. Per utilizzare il visualizzatore di applet si pu immettere nella riga di comando appletviewer nome_file.html oppure ci si pu avvalere della funzionalit offerta dallambiente di sviluppo impiegato. Il visualizzatore di applet valido solo per la prima fase di collaudo, ma a un certo punto occorrer eseguire lapplet in un browser per vederla allo stesso modo di un potenziale utente. In particolare appletviewer: - mostra solo lapplet e non interpreta il codice HTML - se il file HTML contiene pi applet, apre pi finestre. Per visualizzare correttamente unapplet necessario che il Java Plug-in sia aggiornato. Mantenendo aggiornato il plug-in sempre possibile sfruttare le funzioni pi recenti e pi potenti di Java. Per informazioni sullo scaricamento del plug-in e sulla configurazione, consultare lindirizzo http://java.sun.com/getjava.

5
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

Vi suggerisco anche di leggere larticolo relativo alla disinstallazione delle vecchie versioni di Java; si trova allurl http://www.java.com/it/download/uninstall.jsp. Importante! Se si esegue una modifica allapplet e si ricompila, necessario riavviare il browser in modo che carichi i nuovi file di classe; il semplice aggiornamento della pagina HTML non caricher il nuovo codice.

Passaggio di parametri alle applet


Tra i tag <object> e </object> si possono inserire alcuni parametri da passare allapplet. La definizione dei parametri avviene, mediante il tag param, secondo la seguente sintassi: <param name= "nome_parametro" value= "valore_parametro"> Per esempio: <param name= "altezza" value= "20"> <param name= "larghezza" value= "50"> Per leggere il valore di un parametro nellapplet, si usa il metodo getParameter della classe Applet:

public String getParameter(String nome_parametro)


Questo metodo restituisce il valore del parametro il cui nome stato specificato. Per esempio: String h = getParameter("altezza"); restituisce in h il valore del parametro altezza, cio 20. Osserviamo che: il valore restituito sempre una stringa; il metodo getParameter pu essere richiamato solo nel metodo init dellapplet; le stringhe utilizzate per definire i parametri con il tag param e quelle utilizzate nel metodo getParameter, devono corrispondere esattamente (viene fatta distinzione tra caratteri maiuscoli e minuscoli). Utilizzando i parametri possiamo adattare una generica applet alla pagina Web nella quale desideriamo inserirla.

6
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

Esempio
La seguente applet mostra una stringa passata come parametro. FILE Stringa.java
import javax.swing.JApplet; import javax.swing.JLabel; @SuppressWarnings("serial") public class Stringa extends JApplet { public void init() { String str= getParameter("stringa"); JLabel label= new JLabel(str); add(label); } }

FILE stringa.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Stringa</title> </head> <body> <object codetype="application/java" classid="java:Stringa.class" width="300" height="300"> Qui compare un'applet, se il browser pu visualizzarla <param name="stringa" value="la stringa passata come parametro"> </object> </body> </html>

Per garantire che lapplet venga eseguita correttamente nel caso si verifichino dei problemi nella lettura dei parametri, necessario prevedere dei valori di default da assegnare agli attributi. Nellesempio seguente, viene assegnato un valore predefinito alla stringa str se il metodo getParameter restituisce null, cio se nel file html non stato specificato il valore del parametro stringa.
import javax.swing.JApplet; import javax.swing.JLabel; @SuppressWarnings("serial") public class Stringa extends JApplet { public void init() { String str= getParameter("stringa"); if (str==null) str= "Valore del parametro mancante";

7
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011

JLabel label= new JLabel(str); add(label); } }

Restrizioni e problemi di sicurezza


Le applet sono prelevate da un sito ed eseguite localmente; di conseguenza, la sicurezza un aspetto molto importante. Il browser carica tutto il codice dellapplet presente sulla pagina Web e lo esegue immediatamente, senza consentire allutente di confermare o interrompere lesecuzione: il codice caricato potrebbe violare la sicurezza del sistema locale. Per questo motivo le applet possono svolgere solo un numero limitato di operazioni. Le applet possono visualizzare immagini e riprodurre suoni, ricevere pressioni di tasti e clic del mouse dallutente e ritrasmettere le immissioni dellutente allhost da cui sono state caricate. Il limitato ambiente di esecuzione delle applet viene spesso chiamato sandbox; le applet eseguite in una sandbox non possono alterare il sistema dellutente o infiltrarsi al suo interno per carpirne informazioni. In particolare le applet non possono: avviare alcun programma eseguibile locale; comunicare con un host diverso dal server dal quale sono state prelevate; leggere o scrivere file sul computer locale; accedere a informazioni riguardanti il computer locale, tranne la versione di Java in uso, il nome e la versione del sistema operativo, e i caratteri utilizzati per separare i file, percorsi e righe.

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

8
Bocchi Cinzia Ultimo aggiornamento: 12/11/2011