Tutoriel Java Web Start – 5 minutes pour passer d’une appli desktop à une appli web

Java Web Start est une technologie de déploiement d’application Desktop via le Web. Si vous disposez d’au moins Java 1.4, vous pouvez lancez une application Java via n’importe quel lien. Cliquez ici pour avoir un exemple de ce que nous allons faire.

Cette mise en place va se faire en trois temps:

  1. Création d’un fichier JAR
  2. Création d’un fichier JNLP
  3. Mise en place sur le serveur

Création d’un Fichier JAR

Gestion des Ressources

Vous devez mettre toutes les ressources utilisé par votre application dans le JAR déployé. Pour accèder aux ressources, n’utilisez pas (par exemple)

new ImageIcon("org/vialle/projet/logo.gif")

mais utilisez plutot

new ImageIcon(getClass().getResource("org/vialle/projet/logo.gif"))

Si une de ces ressources est un JAR, pas la peine de l’inclure dans le JAR que nous allons généré. Nous verrons plus tard comment faire dans ce cas là.

Génération du JAR

Vous pouvez utilisez votre EDI préféré pour créer un JAR. Avec Eclipse, utilisez la fonction Exporter du menu Fichier.

Signature du JAR

Nous allons générer la clef, puis l’attacher au JAR que nous venons de créer.

Pour générer la clef, on utilise l’outil keytool

keytool -genkey -keystore NomDuMagasinRegroupantLesClefs-alias NomDeLaClef

Si vous préférez les interfaces graphiques, vous pouvez gérer vos clefs via KeyTool IUI.

Pour l’attacher au JAR, on utilise un autre outil

jarsigner -keystroke NomDuMagasinRegroupantLesClefs MonApplication.jar NomDeLaClef

Si vous ne signez pas votre JAR, celui-ci peut tout de même s’exécuter. Toutefois, certaines fonctions seront restreintes, telle que l’accés aux données utilisateurs (disque dur) ou certains périphériques sensibles.

Création d’un fichier JNLP

Le fichier JNLP est un fichier XML décrivant votre application Java Webstart.

< ?xml version="1.0" encoding="utf-8"?>
 
    Eric V
 
    Mon application
    une application de test

Vous noterez dans la partie ressources, que l’on met l’URL de tous les JAR dont on a besoin pour utiliser notre application.

Pour avoir une liste compléte des tags pour un fichier JNLP, rendez vous sur le site de SUN.

Mise en place sur le serveur

Configuration d’Apache

Dans le fichier de configuration d’Apache, ajoutez dans le fichier conf\mime.types, cette ligne:

application/x-java-jnlp_file	jnlp

Mise en place des fichiers

Tous les JAR et le fichier JNLP doivent être mis sur un repertoire web accessible en lecture de l’extérieur.

Problèmes Potentiels

Si l’informatique marchait du premier coup, ma grand-mère installerait toute seule son réseau wifi. Des problèmes diverses peuvent subvenir:

  • Si vous avez un logo « Java Starting » pendant plusieurs secondes et que rien ne se passe après: supprimez le fichier « deployment.properties« . Ce fichier sera regénéré automatiquement. Ce problème semble être propre à Mac OS X.
  • Pour avoir « All Permissions », vous devez signer TOUS vos JAR. Si un fichier JAR que vous souhaitez utiliser ne peut être signé, cela peut venir du fichier MANIFEST.MF, puis recréez le JAR. Si vous êtes paresseux ou peu rigoureux, essayez de le supprimer…
  • Si il s’agit d’une application SWT (Standard Widget Tool), il faut spécifier cette librairie et la dll sous Windows. Rendez une visite au tutorial de LFE.

Sources:

  • nhq

    Bonjour,

    Merci merci pour ces explications.
    Cependant j’ai un souci lorsque je signe certains jars il enlève / supprime les données initiales du jar. Le fait de signer ce jar enlève les données suivantes :

    Manifest-Version: 1.0
    Bundle-Name: org.eclipse.core.commands French NLS Support
    Bundle-SymbolicName: org.eclipse.core.commands.nl_fr ;singleton=true
    Bundle-Version: 3.4.0.v20081123043401
    Bundle-Vendor: Eclipse.org
    Fragment-Host: org.eclipse.core.commands

    Et par contre ajoute bien les données concernant la signature :

    Name: plugin_fr.properties
    SHA1-Digest: Vigk0ly8waWzdFFZzSZEA1UvS9Y=

    Name: about.html
    SHA1-Digest: VpXXGnjM0HeeD/l2/5T0GziCHVE=

    Name: META-INF/eclipse.inf
    SHA1-Digest: 6mDW8kS/T9pK7w1by/wcxy21Z20=

    Auriez-vous une explication par hasard ?

    Merci d’avance.

    Hoang