Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
o Il browser recupera i file delle classi da Internet, oppure da una directory del
computer dell’utente, ed esegue automaticamente l’applet, utilizzando un runtime
di Java esterno oppure la JVM predefinita.
come posizione l’applet nella pagina web (dimensione, posizione, e così via)
Oltre alla stessa applet, la pagina web può contenere tutti gli altri elementi HTML che si è soliti
vedere nelle pagine web: diversi font, elenchi puntati, immagini, link e così via. Il linguaggio di
programmazione java, quindi, non è uno strumento per progettare pagine HTML, ma uno
strumento per dare loro vita.
Un’ applet semplice
Un’ applet è semplicemente una classe Java che estende la classe java.applet.Applet. Anche se il
pacchetto java.applet non fa parte del pacchetto AWT, un’applet è un componente AWT.
Utilizzeremo Swing per implementare le applet, estendendo la classe JApplet cioè la superclasse
delle applet Swing. Infatti JApplet è una sottoclasse immediata della classe Applet ordinaria.
import javax.swing.*;
public class HelloWorldApplet extends JApplet {
public void init() {
JLabel label = new JLabel(“Hello World!”,
SwingCostants.CENTER);
add(label);
}
}
Visualizzare le applet
Per eseguire l’applet si devono portare a termine I due passaggi indicate di seguito:
2. Creare un file HTML che dica al browser il primo file di classe da caricare e come
dimensionare l’applet.
E’ prassi comune, anche se non obbligatoria dare al file HTML lo stesso nome della classe relativa
all’applet. In questo modo, rispettando la consuetudine si denomina il file HelloWorldApplet.html.
Prima di visualizzare l’applet in un browser, è preferibile verificarla nel programma applet viewer
(visualizzatore di applet) che fa parte di JDK.
Per utilizzare applet viewer si deve digitare quando segue nella riga di comando:
appletviewer HelloWorldApplet.html
L’argomento della riga di comando per il programma applet viewer è il nome del file HTML,
non il file della classe.
L’applet viewer può andare bene nella prima fase di test di un programma, ma a un certo punto
diventa necessario eseguire le applet in un browser per vederle nello stesso modo in cui le può
vedere un utente. Per visualizzare correttamente l’applet è necessario avere un browser
compatibile con Java2. Dopo avere installato e configurato Java Plug-in, è sufficiente caricare il file
HTML nel browser. Se l’applet non viene visualizzata, è probabile che il browser utilizza una
propria macchina virtuale, per cui è necessario configurare questa al posto di Java Plug-in.
1. Si costruisce una pagina HTML con il tag appropriato per caricare il codice dell’applet
3. Si sposta il codice di inizializzazione dal costruttore del frame nel metodo init dell’applet. Il
browser definisce un’istanza della classe applet per conto proprio e chiama il metodo init.
6. Si rimuove la chiamata setTitle. Le applet non possono avere barra di totolo; ovviamente,
si può dare un titolo alla pagina web utilizzando il tag HTML <title>
init
Questo metodo riguarda le inizializzazioni necessarie. Viene chiamato dopo aver eseguito i
tag param del tag applet. Le applet possono avere un costruttore predefinito, ma si
preferisce di solito eseguire l’inizializzazione nel metodo init piuttosto che nel costruttore
predefinito.
start
stop
Questo metodo viene chiamato automaticamente quando l’utente si sposta dalla pagina
nella quale si trova l’applet. Può pertanto essere chiamato più volte nella stessa applet. Il
suo scopo è quello di permettere di interrompere un’attività che consuma tempo e può
rallentare il sistema quando l’utente non presta attenzione all’applet. Può essere
implementato per esempio, per interrompere un’animazione o una riproduzione audio.
destroy
Questo metodo viene chiamato solo quando si chiude il browser in modo normale. Dato
che le applet esistono su una pagina HTML, non ha senso lasciare risorse occupate dopo
che l’utente ha abbandonato la pagina che contiene l’applet. In questo caso si possono
rilasciare le risorse effettuando l’override del metodo destroy
Fondamenti della sicurezza
Dato che le applet vengono progettate per essere caricate da un sito remoto ed eseguite in locale,
il problema della sicurezza assume un’importanza fondamentale. Se l’utente attiva Java in un
browser, questo può scaricare il codice dell’applet nella pagina web ed eseguirlo immediatamente.
L’utente non ha la possibilità di confermare o annullare l’esecuzione delle singole applet.
L’ambiente di esecuzione con limitazioni per le applet prende il nome di sandbox. Le applet
eseguite nella sandbox non possono alterare il sistema dell’utente o spiare al suo interno.
1. Il codice del programma è interpretato dalla JVM, non direttamente dalla CPU
2. Un gestore della sicurezza verifica le operazioni sensibili nella libreria runtime di Java
Per impostare una finestra pop-up, si utilizza un JFrame senza chiamare il metodo
setDefaultCloseOperation:
L’attributo code assegna il nome del file della classe e deve includere l’estensione .class; gli
attribute width e height definiscono la dimensione della finestra in pixel. Il testo tra i tag
<applet> e </applet> viene visualizzato solo se il browser non è in grado di visualizzare le
applet. Gli attributi code, width e height sono obbligatori: se manca uno di questi attributi,
il browser non può caricare l’applet.
Tutte queste informazioni vengono di solito incorporate in una pagina HTML come
nell’esempio seguente:
<html>
<head>
<title>HelloWorldApplet</title>
</head>
<body>
<p>La riga di testo successiva è un’applet:</p>
<applet code=”HelloWorldApplet.class” width=”300” height=”100”>
Se il browser può visualizzare Java, qui si vedrà un’applet
</applet>
</body>
</html>
Attributi di posizionamento dell’applet
Di seguito è riportata una breve presentazione degli attributi che si possono, o si devono, utilizzare
nel tag applet per definire la posizione dell’applet.
width, height
align
Attributo Descrizione
left Colloca l’applet lungo il margine sinistro della pagina. Il testo della
pagina scorre a destra dell’applet
right Colloca l’applet lungo il margine destro della pagina. Il testo della pagina
scorre a sinsitra dell’applet
top Fa coincidere la parte superiore dell’applet con la parte superiore della
riga corrente
texttop Fa coincidere la parte superiore dell’applet con la parte superiore del
testo della riga corrente
middle Fa coincidere la parte centrale dell’applet con la linea di base del testo
della riga corrente
absmiddle Fa coincidere la parte centrale dell’applet con la parte centrale della riga
corrente
baseline Fa coincidere la parte inferiore dell’applet con la linea di base del testo
della riga corrente
bottom Fa coincidere la parte inferiore dell’applet con la parte inferiore del testo
della riga corrente
absbottom Fa coincidere la parte inferiore dell’applet con la parte inferiore della
riga corrente
vspace, hspace Questi attributi facoltativi definiscono lo spazio in pixel sopra e sotto
l’applet (vspace) e ai lati dell’applet (hspace)
Attributi dell’applet per il codice
Gli attributi dell’applet indicati e descritti di seguito dicono al browser come localizzare il codice
dell’applet.
code
Questo attributo definisce il nome del file della classe dell’applet. Il nome del percorso
deve coincidere con il pacchetto della classe dell’applet. Per esempio:
code=”com/mycompany/MyApplet.class”
oppure
code=”com.company.MyApplet.class”
Dopo che il caricature delle classi del browser ha caricato la classe che contiene l’applet,
può rendersi conto che sono necessari altri file delle classi e li carica.
codebase
Questo attributo facoltativo è un URL che individua i file della classe. Di solito si tratta di un
URL relativo che fa riferimento a una directory secondaria
aDirectory
|--MyPage.html
|--myApplets/
|--CalculatorApplet.class
In questo caso si può utilizzare il tag indicato di seguito nel file MyPage.html:
archive
Questo attributo facoltativo elenca il file o i file dell’archivio Java che contengono le classi e
le altre risorse utilizzate dall’applet. Questi file vengono prelevati dal web server prima di
caricare l’applet in modo da accelerare significativamente il caricamento, dato che è
necessaria una sola richiesta http per caricare un file JAR (Java Archive) che contiene molti
più file piccoli. Più file JAR sono separati da virgole:
Questo attributo permette di specificare il nome di un file che contiene l’oggetto applet
serializzato. Un oggetto è serializzato quando si scrivono tutti i suoi campi istanza in un file.
Per visualizzare l’applet l’oggetto deve essere deserializzato dal file per ritornare allo stato
precedente. Quando si utilizza questo attributo non viene chiamato il metodo init ma il
metodo start dell’applet. Prima di serializzare un oggetto applet, si deve chiamare il suo
metodo stop. Questa funzione è utile quando si implementa un browser che ricarica
automaticamente le sue applet e le restituisce nello stesso stato che avevano quando il
browser era chiuso. SI tratta di una funziona abbastanza specialistica che di solito i
progettisti delle pagine web non incontrano.
In ogni tag applet devono essere presenti gli attributi di code o object, come nell’esempio:
<applet object=”CalculatorApplet.ser” width=”100” height=”150”>
name
Chi lavora con gli script desidera assegnare all’applet un attributo name per identificarla.
Si consideri per esempio di voler permettere alla pagina web di determinare lo stile del
font da utilizzare nell’applet e di voler aggiungere un parametro size relativo al font:
Il codice che segue indica come si possono ricavare I parametri dalla classe Applet:
Questa istruzione prende il nome di URL assoluto dato che viene definite il nome complete
della risorsa.
In questo caso si specifica il file planets.dat, che si trova nella directory secondaria data
dell’URL u.
Per ricavare l’URL della pagina HTML che contiene l’applet si utilizza il metodo
Url u = getDocumentBase();
Per ricavare l’URL della directory del codebase dell’applet si ricorre al metodo
Url u = getCodeBase();
Ottenere i file multimediali
Per riprodurre un clip audio è sufficiente richiamare il suo metodo play. Si può anche
chiamare il metodo play della classe Applet senza avere caricato il clip audio:
play(getCodeBase(), “audio/meow.au”);
Per effettuare un download più veloce, gli oggetti multimediali possono essere memorizzati in file
JAR. I metodi getImage e getAudioClip/play cercano automaticamente nei file JAR dell’applet. Se il
file immagine o audio si trova nel file JAR, viene caricato immediatamente, altrimenti il browser lo
richiede al server web.
Inter-applet communication
Una pagina web può contenere più di un’ applet. In particolare, se contiene più applet dello stesso
codebase, questo possono comunicare tra loro anche se si tratta di una tecnica avanzata che non
si userà spesso.
Se nel file HTML si assegnano attributi name a ogni applet, si può utilizzare il metodo getApplet
dell’interfaccia AppletContext per recuperarne il riferimento.
Si assuma per esempio che il file HTML contenga il tag indicato di seguito:
Si possono anche elencare tutte le applet su una pagina web, che sia o meno presente un
attributo name. Il metodo getApplets restituisce un oggetto di enumerazione.
Di seguito + indicato un ciclo che visualizza i nomi delle classi di tutte le applet della pagina
corrente:
Enumeration e = getAppletContext().getApplets();
while(e.hasMoreElements) {
Object a = e.nextElement();
System.out.println(a.getClass().getName());
}
Un’applet non può comunicare con un’applet di una pagina web differente.
Il modo più semplice per dire al browser di mostrare una pagina web diversa, consiste nel
chiamare showDocument con un argomento, l’URL della pagina che si vuole visualizzare:
Questa chiamata, però, apre la nuova pagina web nella stessa finestra della pagina
corrente, disattivando quindi l’applet. Per ritornare all’applet, l’utente dovrà fare clic sul
pulsante BACK del browser.
Esempio:
getAppletContext.showDocument(u, “_top”);