JUG Sardegna supports Devoxx 2012
Vuoi ricevere uno zainetto? Clicca qui

Java User Groups
Java.net Partner
Get Firefox!

Creareapplicazionicon Java Web Start

Creare applicazioni con Java Web Start


di DaniloDelFio

Introduzione

La tecnologia Java Web Start si basa essenzialmente sullÂ’idea di poter utilizzare unÂ’applicazione standalone “remota”, dando allo stesso tempo allÂ’utente la possibilità di non dover sempre passare per il browser web per poterla utilizzare. Essa consente inoltre di aggiornare in continuazione il software senza rendere necessaria una nuova installazione che molto spesso è pesante e difficoltosa.

Non si può parlare di tecnologia Java Web Start senza, in ogni caso, introdurne unÂ’altra, che sta alla base delle applicazioni create con tale piattaforma. Si parla di JNLP (Java Network Launching Protocol) che, installato in un application server (Tomcat per esempio) come web application, permette alle applicazioni di essere lanciate da remoto.

Sviluppare unÂ’applicazione con Java Web Start

Molte volte ci si trova di fronte allÂ’esigenza di creare unÂ’applicazione per un cliente che dista diversi chilometri dalla nostra sede. Supponiamo che si voglia realizzare unÂ’interfaccia complessa, che permetta, per esempio, il monitoraggio e il billing di una rete telefonica. A tale richiesta ne viene affiancata una più stringente, ovvero che i dati, i grafici e le statistiche dovranno essere consultabili tramite web, in gran parte da utenti non tecnici. Questi dovranno essere in grado di inserire dati e creare grafici, statistiche, non dovendo per forza conoscere i linguaggi legati al Web, ovvero legati alla piattaforma sulla quale andranno a risiedere.

Facendo unÂ’analisi delle tecnologie al momento disponibili (prenderemo in considerazione solo quelle legate alla piattaforma Java), potremmo utilizzare:
  • UnÂ’interfaccia grafica tramite Java Swing (intesa come applicazione standalone che risieda nella macchina dellÂ’utente): questa tecnologia fornisce tutta la potenza e la flessibilità di cui abbiamo bisogno, ma di contro presenta lÂ’inconveniente di dover installare lÂ’applicazione presso il client, prevedere una manutenzione della stessa e seguire tutti gli sviluppi futuri, che senzÂ’altro implicheranno continui viaggi per gli aggiornamenti.
  • UnÂ’interfaccia Web: implementata tramite JSP e Servlet, permette la fruizione dellÂ’applicazione da remoto e ha il vantaggio che non obbliga a unÂ’interazione continua col cliente ogni qualvolta si verifichino problemi; lÂ’aggiornamento e la manutenzione sono notevolmente semplificati, ma ha il grande svantaggio che non è potente e versatile come unÂ’applicazione standalone.
  • UnÂ’applet Java: ha il gran vantaggio di essere potente e usabile come una qualunque interfaccia di un programma che risieda sulla macchina client (se prescindiamo dal fatto che lÂ’applet deve essere firmata e certificata per poter accedere alle risorse della macchina su cui gira), inoltre è fruibile da remoto in quanto basta avere un browser web con una JVM per poterla utilizzare, ma questÂ’ultimo aspetto è anche la parte negativa dellÂ’utilizzo di questa tecnologia in quanto lÂ’interazione con lÂ’interfaccia può avvenire soltanto se si è connessi ad Internet.


La soluzione, quindi, spinge allÂ’utilizzo di una tecnologia che unisca i vantaggi del download e utilizzo di applicazioni da Internet (prerogativa sempre molto utilizzata nella piattaforma Java, se si pensa alle applet), a quelli di avere unÂ’applicazione “praticamente standalone”, in modo che lÂ’utente possa accedervi analogamente a qualunque altro programma che ha installato sulla propria macchina. La tecnologia che permette queste feature è Java Web Start (presentato la prima volta a San Francisco nel JavaONE del 2000), che è stato creato come alternativa alle applet.

Sviluppare unÂ’applicazione tramite Java Web Start è pressoché uguale a crearne una standalone; infatti, anche per le applicazioni basate su tale tecnologia il punto dÂ’accesso è il semplice:

Listato 1 –Punto d’accesso di un’applicazione Web Start

public static void main(String[] argv)

Per permettere lÂ’installazione tramite Web, il download automatico e il lancio dellÂ’applicazione bisogna assicurare che questa possa essere eseguita nella sandbox; ci sono quindi alcune considerazioni da tenere a mente:
  • Tutte le applicazioni devono essere rilasciate tramite dei file JAR (Java Archive)
  • Tutte le risorse (come i file e le immagini) devono essere memorizzate in un file JAR e devono essere caricate nelle classi Java tramite il meccanismo getResource()
  • UnÂ’applicazione costruita per essere eseguita nella sandbox sicura deve rispettare alcune restrizioni:
    • Non si può accedere al disco locale
    • Tutti i file JAR devono essere scaricati dallo stesso host.
    • Le connessioni alla rete sono abilitate solo verso lÂ’host da cui scaricare i file JAR
    • Non è installato nessun gestore della sicurezza
    • Non sono utilizzate librerie native
    • Accesso limitato alle proprietà di sistema. LÂ’applicazione ha accesso in lettura e scrittura a tutte le proprietà di sistema definite nel file JNLP, inoltre possiede accesso solo in lettura alle stesse proprietà cui si può accedere con unÂ’applet.
  • Ad un'applicazione è permesso di usare la chiamata a System.exit().
  • Le applicazioni che hanno la necessità di accedere al sistema devono essere rilasciate tramite file JAR FIRMATI (ciascuna entry in ogni file deve essere firmata)
  • Bisogna installare il server Web Start inserendolo nella sotto-cartella WEB-INF/lib della directory webapps di tomcat. I file rappresentanti il server web start sono: jardiff.jar, jnlp.jar, jnlp-servlet.jar

Nel paragrafo precedente abbiamo accennato ad un file jnlp (lÂ’estensione può essere sia .jnp che .jnlp), infatti non si può parlare di tecnologia Java Web Start prescindendo da JNLP (Java Network Launch Protocol). Parleremo più avanti della struttura di tale file.

Installazione e configurazione

Per installare su un application server unÂ’applicazione da distribuire tramite Web Start i passi sono molto semplici:

Aggiungere un nuovo MIME-TYPE per il file JNLP: questo può essere fatto semplicemente aggiungendo nel file web.xml il seguente frammento:

Listato 2 –Configurazione di Tomcat per riconoscere le applicazioni Web Start

jnlp application/x-java-jnlp-file
Creare un archivio JAR allÂ’interno del quale inserire tutti i file necessari allÂ’applicazione. LÂ’archivio deve essere inserito in una posiziona opportuna sul server che sarà poi specificata nel file JNLP.
Per far partire lÂ’applicazione la prima volta, è necessario un link in una pagina web che ne permetta il download, ma per lanciare lÂ’applicazione dobbiamo possedere nella nostra JVM il plug-in di Web Start che, se non presente nella macchina si può scaricare dal sito della SUN (ci sono alcuni JavaScript che permettono di verificare lÂ’installazione sulla macchina remota di Java Web Start: in caso affermativo, fanno apparire sulla pagina HTML di lancio il link per lanciare lÂ’applicazione; in caso negativo, il link che apparirà sarà quello che rimanda allÂ’installazione del client Web Start).

Struttura del file JNLP

Per spiegare al meglio la struttura di questo file che permette, appunto, la descrizione e il lancio da remoto di unÂ’applicazione, si presenta direttamente un esempio dello stesso. Il file è in formato xml:
Intestazione del file:

Nel tag radice del file va inserito il server nel quale abbiamo installato lÂ’applicazione e il nome del file (con lÂ’estensione) jnlp:


Per scrivere le informazioni sullÂ’applicazione e sullÂ’azienda produttrice cÂ’è il tag che contiene al suo interno diversi sotto-tag, tra cui, molto importante è , che permette il caricamento dellÂ’applicazione anche off-line:
Redazione articoli per il portale Azienda Pinco Pallino s.r.l. Inserimento Articoli Inserimento degli articoli
Possiamo settare dei livelli di sicurezza nellÂ’applicazione, nel nostro esempio non ci sono restrizioni dÂ’accesso:

Tra i tag vengono specificati i jar che costituiscono lÂ’applicazione, la versione del j2se utilizzata e le proprietà dellÂ’applicazione stessa (accessibili allÂ’interno di essa tramite System.getProperty()). Inoltre, nel tag possono essere presenti degli attributi che indicano, per esempio, quale jar contiene il metodo main (main=”true”) e quando deve essere effettuato il download del jar in cui questo compare: le possibilità sono prima del lancio dellÂ’applicazione (eager), oppure dopo (lazy). Nel tag comparirà il seguente attributo download=”eager”|”lazy”:


Nel tag specifichiamo il package dove trovare il metodo main per far partire lÂ’applicazione:

La descrizione dellÂ’applicazione da distribuire, come abbiamo visto, è alquanto semplice, ovviamente si può “complicare quanto si vuole” aggiungendo tag che permettono di cambiare lÂ’icona che apparirà al momento del lancio dellÂ’applicazione, per esempio, descrivere jar con librerie native utili per lÂ’applicazione e così via. Un elenco dettagliato dei tag da utilizzare nel file jnlp si può trovare in (1).

Conclusioni

Il presente articolo ha introdotto in modo semplice lÂ’utilizzo di una tecnologia Java a molti ancora sconosciuta.

Java Web Start rappresenta la soluzione a diversi problemi, soprattutto per quelle applicazioni che necessitano update continui e che devono essere usabili come un qualunque programma standalone. LÂ’unica nota negativa (se proprio ne vogliamo trovare una) è proprio la necessità di installare Web Start sulla macchina del client, che può essere comunque rimandando al sito della SUN per il download.

Una cosa che rende tale tecnologia molto interessante è la possibilità di avere sulla propria macchina unÂ’icona sul desktop o una voce nel menu di avvio allÂ’applicazione remota che, a parte la prima volta che va lanciata da un browser web, le volte successive potrà essere lanciata come una qualunque applicazione che risiede in locale.



Riferimenti

vamphq - "Descrizione Tag"
sun – “Deploying Software with JNLP and JavaTM Web Start Going Beyond the Java Plug-in”
sun – “Java Web Start - Download”
sun – “Java Web Start Architecture”
att:20091612080125738-0-c.bat


VeryQuickWiki Version 2.7.8 | Admin
Copyright © 2003-20011 Java User Group Sardegna Onlus. - Java, the Java Coffee Cup Logo and the Duke Logo are trademarks or registered trademarks of Oracle corporation in the U.S. and other countries.