Le Applet in Java

Le applet sono applicazioni sviluppate con il linguaggio di programmazione Java, destinate a essere eseguite online all'interno di una pagina web.

La differenza tra applet e programmi in Java

Sia l'applet che un'applicazione sono sviluppate in linguaggio Java.

Entrambe devono essere compilate dal compilatore Java per creare il bytecode ( oggetto eseguibile ) e richiedono la presenza dell'ambiente operativo Java Virtual Machine per essere eseguite.

Tuttavia, tra applet e applicazioni Java ci sono molte differenze.

Un'applet può essere eseguita soltanto in una pagina HTML tramite un browser che supporti Java.

Un'applet non può essere eseguita sul prompt del PC tramite il comando Java come una qualsiasi applicazione Java.

Deve essere richiamata dal codice HTML della pagina.

il funzionamento di un'applet

Inoltre, le applet devono rispettare molti più vincoli e limitazioni operative rispetto alle applicazioni.

Esempio. Per motivi di sicurezza, un'applet non può leggere o scrivere sul PC client di chi la esegue. Inoltre, non possono aprire connessioni di rete.

Come funziona un'applet

L'applet viene richiamata da una pagina Html tramite il browser dell'utente.

Quando l'utente visualizza la pagina web, scarica anche l'oggetto eseguibile realizzato in Java ossia l'applet.

Il browser esegue l'applet tramite la Java Virtual Machine installata sul PC.

un esempio di esecuzione di un'applet

Cos'è la Java Virtual Machine?

La virtual machine di Java è un ambiente protetto e separato dall'ambiente operativo del computer.

Se il browser non ha la java virtual machine attiva, l'applet non può essere eseguita.

Nota. Quindi, le applet sono applicazioni eseguite rigorosamente on client, ossia sul PC dell'utente. Non sono applicazioni eseguite dal lato server side come il Python o il Php.

Sullo schermo dell'utente viene visualizzato il risultato dell'esecuzione dell'applet.

Come programmare le applet Java

Il codice sorgente di un'applet ha una struttura specifica, diversa rispetto alle applicazioni Java.

Al posto del metodo main() si utilizza il metodo paint(), specifico per visualizzare messaggi sullo schermo.

Un esempio pratico

Il seguente codice visualizza sullo schermo del browser la scritta Hello World! tramite un'applet alle coordinate (5,25) ossia quinta riga e venticinquesima colonna.

import java.awt.Graphics;
public class PrimoApplet extends java.applet.Applet {
public void paint(Graphics g) {
g.drawString(“Hello World!”, 5, 10);
}
}

Nella prima riga importo la classe java.awt.Graphic che mi permette di visualizzare testo e grafica sullo schermo del PC.

Nella seconda riga indico il nome dell'applet dopo public class.

Salvo il codice sorgente

Ora salvo il codice sorgente con il nome PrimaApplet.java.

E' molto importante salvare il file di testo con l'estensione .java.

il salvataggio del codice sorgente

Quale posso nome dargli? Non devo chiamare il file necessariamente come l'applet. Posso anche dargli un altro nome. Tuttavia, per evitare di confondersi è buona norma chiamare il file sorgente .java con lo stesso nome dell'applet.

Compilo l'applet

A questo punto posso compilare l'applet per creare il bytecode tramite javac.

La procedura di compilazione di un'applet è identica alle applicazioni java.

Vado sul prompt dei comandi e digito

javac PrimaApplet.java

Il compilatore Java verifica la correttezza del codice e, se non ci sono errori, crea il filye del bytecode con l'estensione .class.

Ora nella directory ci sono due file PrimaApplet, il sorgente (.java) e il bytecode eseguibile (.class).

i due file del sorgente e del bytecode

Richiamo l'applet da una pagina html

Una volta creata l'applet, devo soltanto richiamarla dal codice Html di una pagina web.

Per richiamarla utilizzo il tag <OBJECT>.

<html>
<body>
<object codetype="application/java" code="PrimaApplet.class" width="200" height="50">
</object>
</body>
</html>

I parametri width e height indicano rispettivamente la larghezza e l'altezza dell'area dedicata all'applet.

Per semplicità salvo il file con il nome pagina.html nella stessa directory dell'applet.

Nota. In passato si utilizzava anche il tag <APPLET> ma oggi è deprecato anche se tuttora funzionante. E' preferibile usare <OBJECT>. Va comunque detto che gran parte delle versioni dei browser più recenti evitano di utilizzare la tecnologia Java per motivi di sicurezza.

Visualizzo il risultato dell'esecuzione dell'applet

Posso visualizzare il risultato dell'esecuzione dell'applet in due modi:

  1. tramite browser
  2. tramite appletviewer

Eseguire l'applet nel browser

Ora apro la pagina html dal browser Internet Explorer per vedere il risultato finale.

Sul browser viene visualizzato il risultato dell'elaborazione:

il risultato dell'elaborazione

E se appare un messaggio di errore? Se il risultato dell'applet non viene visualizzato, c'è sicuramente un problema di compatibilità con la versione java installata sul browser oppure un problema di sicurezza. In questi casi, nell'area dedicata all'applet non appare nulla oppure viene visualizzato un messaggio di errore. Cliccando sul messaggio posso vedere i dettagli.
un esempio di problema di compatibilità java con il browser
A volte capita che la pagina html e l'applet non risiedono nella stessa directory. E' un errore molto frequente. In questo caso, devo soltanto indicare il percorso assoluto o relativo dell'applet nel tag <OBJECT> ( es. /cartella/applet.class).

Eseguire l'applet con l'appletviewer

Per verificare l'applet posso anche utilizzare l'accessorio Applet Viewer senza usare il browser. E' incluso con il compilatore.

Vado sul prompt dei comandi e digito

appletviewer pagina.html

Dopo appletviewer devo specificare il nome della pagina html comprensivo dell'estensione .html.

Il comando esegue l'applet in una finestra ignorando del tutto gli altri tag della pagina html.

l'esecuzione dell'applet tramite appletviewer

E se sistema non trova il comando appletviewer? Probabilmente la sottocartella /bin del kit di sviluppo java non è presente nel percorso di sistema e va aggiunta. Per vedere la soluzione, l'ho descritta in un problema analogo con il comando java negli appunti sulla compilazione java.



Per scrivere un commento

knowledge base

Il linguaggio Java