Créer et déployer une application avec Java Web Start

Créer et déployer une application avec Java Web Start

« Java Web Start est un outil informatique de déploiement de logiciels fondés sur la technique Java. » (Wikipedia)

Nous allons voir comment mettre en place et déployer une application écrite avec Swing et déployée grâce à Java Web Start. Pour cela, nous écrirons une application simple permettant d’afficher Hello World!.

Préparation

Cet article a été rédigé en utilisant la configuration suivante :

  • Windows Vista édition Familiale Premium
  • Eclipse 3.5
  • Java 1.6
  • Apache 2.2

Création de l’application

Comme je vous l’indiquais en introduction, nous allons mettre en place une application simple permettant d’afficher Hello World!, développée en Swing.

Pour cela, nous créons une classe Main qui sera notre écran principal.

package fr.benjaminprevot.jws;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * @author Benjamin PREVOT
 */
public class Main extends JFrame {

  private static final long serialVersionUID = -1852233155700440419L;

  public Main() {
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setLayout(new BorderLayout());
    setResizable(false);
    setSize(400, 300);
    setTitle("Hello");

    JLabel label = new JLabel("Hello World!");
    label.setHorizontalAlignment(JLabel.CENTER);
    add(label, BorderLayout.CENTER);
  }

  public static void main(String[] args) {
    new Main().setVisible(true);
  }

}

Nous ne nous attarderons pas sur le code de cette classe qui n’est pas l’objet de l’article.

Si l’on exécute ce code, nous obtenons une fenêtre comme celle-ci :

Application Hello World!

Mise en place d’une tâche Ant

Il nous faut maintenant déployer l’application sur notre serveur Web.

Pour cela, nous utiliserons une tâche Ant afin de créer notre archive Jar et la copier dans notre serveur.

Le script créer le fichier Jar dans le répertoire build de notre projet.

Ce fichier sera ensuite copier dans le dossier W:/web/htdocs/jws qui est accessible via l’URL http://localhost/jws/.

Les propriétés du script sont stockées dans un fichier build.properties.

bin.dir=${basedir}/bin
build.dir=${basedir}/build
dest.dir=W:/web/htdocs/jws
jar.file=jws.jar

Voici le script Ant que j’ai utilisé pour réaliser les opérations décrites ci-dessus :

<project basedir="." default="all" name="JWS">

  <property file="build.properties" />

  <target name="clean">
    <delete dir="${build.dir}" />
    <delete file="${dest.dir}/${jar.file}" />
  </target>

  <target name="init">
    <mkdir dir="${build.dir}" />
  </target>

  <target name="jar">
    <jar destfile="${build.dir}/${jar.file}">
      <fileset dir="${bin.dir}" />
    </jar>
  </target>

  <target name="copy">
    <copy file="${build.dir}/${jar.file}" todir="${dest.dir}" />
  </target>

  <target name="all" depends="clean,init,jar,copy" />

</project>

Le script supprime d’abord les fichiers qui ont déjà été mis en place, puis crée les répertoires nécessaires, crée le fichier Jar et le recopie vers notre serveur Web.

Pour pouvoir lancer le script complet, il suffit d’exécuter la tâche all.

Création du fichier JNLP

Notre fichier Jar est maintenant accessible via notre serveur Apache.

Il faut maintenant créer un fichier de déploiement : JNLP - Java Network Launching Protocol.

Ce fichier est en fait une description XML des propriétés de démarrage de notre application.

Nous le créerons (index.jnlp) dans le même répertoire que notre archive : W:/web/htdocs/jws.

Voici le fichier JNLP mis en place pour notre exemple :

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://localhost/jws/" href="index.php">
  <information>
    <title>JWS</title>
    <vendor>Benjamin PREVOT</vendor>
    <homepage href="http://localhost/jws/" />
  </information>
  <resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" />
    <jar href="jws.jar" />
  </resources>
  <application-desc main-class="fr.benjaminprevot.jws.Main" />
</jnlp>

Comme vous pouvez le voir, nous spécifions :

  • Le titre de l’application
  • L’auteur
  • L’adresse de la page d’accueil
  • La version minimale de Java pour pouvoir lancer l’application
  • Le nom de l’archive (le fichier Jar que nous avons créé avec la tâche Ant)
  • La classe à exécuter pour lancer l’application

Il s’agit d’un fichier simple pour notre exemple.

Il est possible d’ajouter d’autres archives nécessaires à l’exécution de l’application, des images, des resources, s’il faut créer un raccourci sur le bureau, si l’application peut être lancée en mode offline…

Vous pourrez trouver la référence complète sur les fichiers JNLP sur cette page : http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html.

Lancement de l’application

Pour exécuter notre application, il suffit maintenant d’appeler notre fichier JNLP dans un navigateur : http://localhost/jws/index.jnlp.

Si une fenêtre apparaît pour ouvrir ou enregistrer le fichier, il faut choisir de l’ouvrir en utilisant le lanceur Java Web Start.

Ouverture

Votre application est alors démarrée.