77. Les applets 79. AJAX Imprimer Sommaire Consulter avec table des matières
Développons en Java   v 2.10  
Copyright (C) 1999-2016 .  

 

78. Java Web Start (JWS)

 

chapitre 7 8

 

Niveau : niveau 4 Supérieur 

 

Développée avec la plate-forme Java 2, Java Web Start est une technologie qui permet le déploiement d'applications autonomes à travers le réseau. Elle permet l'installation d'une application grâce à un simple clic dans un navigateur. JWS a été inclus dans le J2RE 1.4. Pour les versions antérieures du J2RE, il est nécessaire de télécharger JWS et de l'installer sur le poste client.

JWS est le résultat des travaux de la JSR-56. La page officielle concernant cette technologie est :
http://www.oracle.com/technetwork/java/javase/javawebstart/.

JWS permet la mise à jour automatique de l'application si une nouvelle version est disponible sur le serveur et assure une mise en cache locale des applications pour accélérer leur réutilisation ultérieure.

La sécurité des applications exécutées est assurée par l'utilisation du bac à sable (sandbox) comme pour une applet, dès lors, pour certaines opérations il est nécessaire de signer l'application.

JWS utilise et implémente une API et un protocole nommé Java Network Lauching Protocol (JNLP).

Le grand avantage de Java Web Start est qu'il est inutile de modifier une application pour qu'elle puisse être déployée avec cette technologie (à condition que les fichiers contenant des ressources soient accédés en utilisant la méthode getResource() du classloader).

L'application doit être packagée dans un fichier jar qui sera associé sur le serveur à un fichier particulier de lancement.

L'utilisation d'une application grâce à JWS implique la réalisation de plusieurs étapes :

Ce chapitre contient plusieurs sections :

 

78.1. La création du package de l'application

L'application doit être packagée sous la forme d'un fichier .jar.

Il est possible de fournir une petite icône pour représenter l'application : celle-ci doit avoir une taille de 64 x 64 pixels au format Gif ou JPEG.

 

78.2. La signature d'un fichier jar

L'exemple de cette section crée un certificat et signe l'application avec ce dernier.

Exemple :
C:\java\>keytool -genkey -keystore mes_cles -alias cle_de_test 
Tapez le mot de passe du Keystore :  test 
Mot de passe de Keystore trop court, il doit compter au moins 6 caractères 
Tapez le mot de passe du Keystore :  erreur keytool : java.lang.NullPointerExcep 
tion 
C:\java\>keytool -genkey -keystore mes_cles -alias cle_de_test 
Tapez le mot de passe du Keystore :  mptest 
Quels sont vos prénom et nom ? 
  [Unknown] :  jean michel 
Quel est le nom de votre unité organisationnelle ? 
  [Unknown] :  test 
Quelle est le nom de votre organisation ? 
  [Unknown] :  test 
Quel est le nom de votre ville de résidence ? 
  [Unknown] :  Metz 
Quel est le nom de votre état ou province ? 
  [Unknown] :  France 
Quel est le code de pays à deux lettres pour cette unité ? 
  [Unknown] :  fr 
Est-ce CN=jean michel, OU=test, O=test, L=Metz, ST=France, C=fr ? 
  [non] :  oui 
Spécifiez le mot de passe de la clé pour <cle_de_test> 
        (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) : 
C:\java\> 
C:\java\>keytool -selfcert -alias cle_de_test -keystore mes_cles 
Tapez le mot de passe du Keystore :  mptest 
C:\java\>keytool -list -keystore mes_cles 
Tapez le mot de passe du Keystore :  mptest 
Type Keystore : jks 
Fournisseur Keystore : SUN 
Votre Keystore contient 1 entrÚe(s) 
cle_de_test, 12 nov. 2003, keyEntry, 
Empreinte du certificat (MD5) : 9E:5A:61:CC:D8:88:02:59:1D:3B:41:C9:CA:26:1D:BD

C:\java>jarsigner -keystore mes_cles -signedjar MonJarSigne.jar MonApp.jar cle_d
e_test
Enter Passphrase for keystore:

Warning:
The signer certificate will expire within six months.

C:\java>dir
 Le volume dans le lecteur C s'appelle SW_Preload
 Le numéro de série du volume est 043F-2ED6

 Répertoire de C:\java

30/08/2009  11:44    <REP>          .
30/08/2009  11:44    <REP>          ..
30/08/2009  11:38             1 259 mes_cles
15/08/2009  23:58            15 793 MonApp.jar
30/08/2009  11:44            17 247 MonJarSigne.jar
               3 fichier(s)           34 299 octets
               0 Rép(s)  70 055 645 184 octets libres

 

78.3. Le fichier JNLP

Ce fichier au format XML permet de décrire l'application.

La racine de ce document XML est composée du tag <jnlp>. Son attribut codebase permet de préciser l'URL où sont stockés les fichiers indiqués par l'attribut href.

Le tag <information> permet de fournir des précisions qui seront utilisées par le gestionnaire d'applications sur le poste client. Ce tag possède plusieurs noeuds enfants :

Nom du tag

Rôle

title

Le nom de l'application

vendor

Nom de l'auteur de l'application

homepage

Préciser une page HTML qui contient des informations sur l'application grâce à son attribut href

description

Une description de l'application. Il est possible de préciser plusieurs types de descriptions grâce à l'attribut kind. Les valeurs possibles sont : one-line, short et tooltip. Pour utiliser plusieurs descriptions, il faut utiliser plusieurs tags Description avec l'attribut kind adéquat

offline-allowed

Ce tag précise que l'application peut être exécutée dans un mode déconnecté. L'avantage de ne pas préciser ce tag est de s'assurer que la dernière version de l'application est toujours utilisée mais cela nécessite obligatoirement une connexion pour toute exécution.

icon

Permet de préciser une URL vers une image de 64 x 64 pixels au format gif ou JPEG grâce à l'attribut href


Le tag <security> permet de préciser des informations concernant la sécurité.

Nom du tag

Rôle

all-permissions

Indique que l'application a besoin de tous les droits pour s'exécuter. L'application doit alors être obligatoirement signée. Si ce tag n'est pas précisé alors l'application s'exécute dans le bac à sable : elle possède donc les mêmes restrictions qu'une applet au niveau de la sécurité


Le tag <resources> permet de préciser des informations sur les ressources utilisées par l'application. L'attribut os permet de préciser des paramètres pour un système d'exploitation particulier.

Nom du tag

Rôle

j2se

Précise les JRE qui peuvent être utilisés par l'application. Les valeurs utilisables par l'attribut version sont 1.2, 1.3 et 1.4. Il est possible de préciser un numéro de version particulier ou d'utiliser le caractère * pour préciser n'importe quel numéro de release. L'ordre des différentes valeurs fournies est important.

jar

Précise un fichier .jar qui est utilisé par l'application

nativelib

Précise une bibliothèque utilisée par l'application qui contient du code natif

property

Précise une propriété système qui sera utilisable par l'application. L'attribut name précise le nom de la propriété et l'attribut value précise sa valeur


Le tag <application-desc> précise, grâce à son attribut main-class, la classe qui contient la méthode main().

Nom du tag

Rôle

argument

Préciser des arguments à l'application tels qu'ils pourraient être fournis sur une ligne de commandes


Exemple :
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://localhost/" href="MonApplication.jnlp">
  <information>
    <title>Mon Application</title>
    <vendor>Jean Michel</vendor> 
    <homepage href="http://localhost/"/>
    <description>Mon application</description>
    <description kind="short">une application de test</description>
    <offline-allowed/>
  </information>
  <security> 
  </security>
  <resources>
    <j2se version="1.4"/>
    <jar href="MonApplication.jar"/>
  </resources>
  <application-desc main-class="com.jmdoudoux.dej.jnlp.MonApplication" />
</jnlp>

 

78.4. La configuration du serveur web

Le serveur qui va fournir les fichiers doit être configuré pour qu'il associe le type MIME « application/x-java-jnlp-file » avec l'extension .jnlp

Par exemple sous IIS 5, il faut utiliser l'option propriété du menu contextuel du site. Dans l'onglet « En-Tête http », cliquez sur le bouton « Types de fichiers ». Dans la boîte de dialogue « Type de fichiers », cliquez sur le bouton « Nouveau type » si l'association n'est pas présente dans la liste. Une boîte de dialogue permet de saisir l'extension et le type MIME

Le type MIME permet au navigateur de connaître l'application qui devra être utilisée lors de la réception des données du serveur web.

 

78.5. Le fichier HTML

Hormis le code mininum requis par la norme HTML, la seule chose indispensable est un lien dont l'URL pointe vers le fichier .jnlp sur le serveur web.

Exemple :
<html>
  <head>
    <title>Mon Application</title>
  </head>
  <body>
    <H1>Mon Application</H1>
    <a href="http://localhost/Monapplication.jnlp">Lancez MonApplication</a>
  </body>
</html>

 

78.6. Le test de l'application

Il faut ouvrir un navigateur et saisir l'URL de la page contenant le lien vers le fichier jnlp

Java Web Start se lance

Si le fichier jnlp contient une erreur alors un message d'erreur est affiché.

Cliquez sur « Détails » pour obtenir des informations sur l'erreur.

Si l'application nécessite un accès au système et que le fichier jar n'est pas signé alors un message d'erreur est affiché :

Si la classe précisée n'est pas trouvée dans le fichier jar indiqué alors un message d'erreur est affiché

Dans cet exemple, pour résoudre le problème il faut indiquer le nom pleinement qualifié de la classe.

Au premier démarrage réussi d'une application, JWS demande si l'on souhaite créer un raccourci sur le bureau.

En cliquant sur le bouton «Oui», JWS crée ce raccourci sur le bureau.

Exemple de raccourci :
"C:\Program Files\Java\j2re1.4.2_02\javaws\javaws.exe"
"@C:\Documents and Settings\administrateur\Application Data\
Sun\Java\Deployment\javaws\cache\indirect\indirect31560.ind"

L'application se lance

Comme pour les applets, par mesure de sécurité, un petit libellé en bas des fenêtres est affiché indiquant que la fenêtre est issue de l'exécution d'une application Java.

 

78.7. L'utilisation du gestionnaire d'applications

Pour lancer le gestionnaire d'applications, il suffit de double cliquer sur l'icône de « Java Web Start » sur le bureau.

Le gestionnaire d'applications permet de gérer les applications en local : il permet de lancer les applications déjà téléchargées sur le poste et de les mettre à jour.

Plusieurs petites icônes peuvent apparaître selon le contexte

* : une mise à jour de l'application est téléchargeable sur le serveur

* : l'application peut être exécutée sans connexion au réseau

* : l'application est mise en cache en local

* : l'application n'est pas signée

 

78.7.1. Le lancement d'une application

Pour lancer l'application, il suffit de sélectionner l'application concernée et de cliquer sur le bouton « Démarrer ».

 

78.7.2. L'affichage de la console

Dans les préférences, sur l'onglet « Avancé », cocher la case « Afficher la console Java »

 

78.7.3. Consigner les traces d'exécution dans un fichier de log

Il permet aussi de configurer JWS. Par exemple, en cas de problème, il est possible de demander de consigner une trace d'exécution dans un fichier journal. Celui-ci est particulièrement utile lors du débogage.

Il est possible d'enregistrer les actions dans un fichier de log. Pour cela, il faut cocher la case « Consigner les sorties » et cliquer sur le bouton « Choisir le nom du fichier journal » pour sélectionner ou saisir le nom du fichier.

Exemple :
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:54:36 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:54:41 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
Java Web Start 1.4.2_02 Console, démarrée Thu Nov 13 13:55:14 CET 2003
Environnement d'exécution Java 2 : version 1.4.2_02 par Sun Microsystems Inc.
Consignation dans le fichier : C:\Documents and Settings\admin\Mes documents\journal_jws.txt
java.lang.NullPointerException
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
            at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
            at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
            at com.sun.javaws.Launcher.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)

 

78.8. L'API de Java Web Start

 

en construction
La suite de ce chapitre sera développée dans une version future de ce document

 


  77. Les applets 79. AJAX Imprimer Sommaire Consulter avec table des matières Développons en Java   v 2.10  
Copyright (C) 1999-2016 .