Java Web Start è un semplice plug-in da installare nel nel browser, che permette il download e l'esecuzione automatica di un'applicazione remota. In questo articolo ne esaminiamo le caratteristiche fondamentali, creando una piccola applicazione Java da distribuire con questa modalità.
Il plugin è un componente del JRE ed è incluso nel pacchetto di installazione.
Come funziona
Il plugin viene avviato automaticamente quando viene lanciata una applicazione Java che utilizza la tecnologia Java Web Start. Queste applicazioni vengono riconosciute mediante il descrittore dell'applicazione, un file XML con estensione JNLP (Java Network Launching Protocol).
La prima volta che l'applicazione viene richiesta, Java Web Start provvede a scaricare tutte le risorse necessarie e le memorizza localmente, in una cache. Successivamente l'applicazione viene eseguita direttamente dalla cache e quindi l'esecuzione è pressoché immediata.
In realtà, ogni volta che l'applicazione viene richiesta, Java Web Start verifica l'eventuale disponibilità di una nuova versione dell'applicazione e, in tal caso, provvede nuovamente al download delle risorse necessarie.
A differenza delle Applet, che vengono eseguite all'interno del browser, Java Web Start delega a quest'ultimo esclusivamente la distribuzione dell'applicazione sulla macchina client, principalmente il download dei file. L'esecuzione infatti avviene all'interno di una JVM esterna al browser, come le altre applicazioni Java installate in locale.
Applicazione di esempio
Vediamo con un semplice esempio, come sviluppare un'applicazione compatibile con questa tecnologia e come renderla disponibile agli utenti.
Un'applicazione Java Web Start è una normale applicazione java eseguibile, cioè contenente una classe nella quale è definito un metodo main()
. Come esempio, creiamo la classica applicazione HelloWorld, il cui codice sorgente è il seguente:
package lucasantaniello; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class HelloWorld { public static void main(String[] args) { JFrame fin = new JFrame("Hello World"); fin.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); fin.setSize(300,300); Container c = fin.getContentPane(); JPanel pan = new JPanel(); JLabel la = new JLabel ("Hello World"); pan.add (la); c.add(pan); fin.setVisible (true); } }
L'applicazione deve essere inclusa in un archivio .jar
(HelloWorld.jar
).
Deploy
Per rendere disponibile l'applicazione occorre creare il descrittore JNPL. Gli elementi principali di questo file sono i seguenti:
Attributo | Descrizione |
---|---|
codebase |
url del sito sul quale è disponibile l'applicazione ed il suo descrittore |
href |
link al file jnpl. Il path è relativo all'url codebase |
Elemento | Descrizione |
---|---|
<j2se> |
versione della Java Virtual Machine necessaria |
<jar> |
nome del file jar. Il path è relativo all'url codebase |
Attributo | Descrizione |
---|---|
<main-class> |
nome della classe main inclusa nel pacchetto jar, comprensiva di package |
<?xml version="1.0" encoding="UTF-8"?> <jnlp codebase="https://www.html.it/articoli/jws/" href="HelloWorld.jnlp"> <information> <title>HelloWorld</title> <vendor>Luca Santaniello</vendor> </information> <resources> <j2se version="1.4+" /> <jar href="HelloWorld.jar" /> </resources> <application-desc main-class="lucasantaniello.HelloWorld" /> </jnlp>
La pagina HTML in cui pubblichiamo l'applicazione, deve contenere solo il link al file JNLP. Quando l'utente accede al link, il browser riconosce automaticamente l'estensione JNPL e lancia automaticamente il plug-in Java Web Start.
Sun mette a disposizione un file JavaScript, che permette di verificare se nel browser della macchina client è installato il plugin Java Web Start, ed in caso negativo, ne propone il download.
Per inserire questo controllo all'interno della propria pagina è necessario includere il seguente codice:
<script src="http://java.com/js/deployJava.js"></script> <script> var url = "http://www.miosito.com/HelloWorld.jnlp"; deployJava.createWebStartLaunchButton(url, "1.6"); </script>
La variabile url
deve puntare al file JNPL dell'applicazione.