Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction à Java Web Start

Introduction à Java Web Start

Ce support de cours présente une introduction de Java Web Start : pour faciliter le déploiement d'applications Java. Dans un premier temps une présentation est faite sur la manière de construire une archive JAR et de la signer, puis, présentation de la technologie Java Web Start en détaillant le format JNLP.

Mickael BARON

June 18, 2007
Tweet

More Decks by Mickael BARON

Other Decks in Programming

Transcript

  1. Java pour le développement de
    clients lourds
    Mickaël BARON - 2007 (Rév. Juin 2011)
    mailto:[email protected] ou mailto:[email protected]
    Déploiement d’applications Java avec
    Java Web Start

    View Slide

  2. 2
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Creative Commons
    Contrat Paternité
    Partage des Conditions Initiales à l'Identique
    2.0 France
    http://creativecommons.org/licenses/by-sa/2.0/fr
    Licence

    View Slide

  3. 3
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déroulement du cours Déploiement avec JWS
    Ceci est une alerte Ceci est une astuce
    † Pédagogie du cours
    † Présentation des concepts liés au déploiement
    † Illustration avec de nombreux exemples
    † Des bulles d’aide tout au long du cours
    † Pré-requis
    † Connaissance de Java
    † Structuration du cours
    † Archive JAR et sécurité
    † Fichier JNLP
    † Informations complémentaires sur JWS
    † http://java.sun.com/products/javawebstart/
    † http://lfe.developpez.com/Java/SWT/WebStart/
    † http://jsorel.developpez.com/tutoriels/java/jws1/

    View Slide

  4. 4
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : introduction
    † Le déploiement permet la distribution du logiciel sur le poste
    client
    † Deux aspects caractérisent le déploiement d’un logiciel
    † le support permettant de stocker le code binaire et les ressources
    † la technique utilisée pour le transport et la mise à jour
    † L’API de Java fournit un ensemble de technologies adapté
    aux besoins du déploiement
    † Le support se fait directement dans les fichiers « class » ou
    dans des fichiers « jar » contenant des fichiers « class »
    † La technique de transport se fait par la technologie Java
    Web Start
    † Le déploiement doit pouvoir également assurer un niveau de
    sûreté lors de l’exécution sur le poste client (autoriser ou pas
    l'accès aux fichiers du client …)

    View Slide

  5. 5
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : JAR
    † La solution du support par JAR est souhaitable puisqu’elle
    permet
    † Un transport plus rapide (un fichier contre plusieurs)
    † Le document HTML est plus simple à modifier (pour les Applets)
    † Contient toutes les ressources dont le logiciel à besoin
    † Pour créer une archive JAR
    † Utilisation de l’outil jar
    † Pour créer un fichier .jar contenant tous les fichiers du répertoire
    courant
    jar cvf hello.jar .
    Création Mode
    Verbose
    Nom archive
    Le . indique le
    répertoire courant
    Les IDE actuels
    permettent la
    création des JAR par
    des interfaces
    utilisateurs

    View Slide

  6. 6
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : JAR
    † Utilisation pour la création (suite)
    † Utilisation d’un fichier (MANIFEST.MF) qui précise un ensemble
    d’attributs pour exécuter dans de bonnes conditions l’application
    † L’attribut Main-class permet de connaître la classe principale à
    exécuter
    † Création du jar avec un fichier manifeste :
    † Utilisation pour l’exécution
    Manifest-Version: 1.0
    Created-By: 1.4.1_01 (Sun Microsystems Inc.)
    Main-class: HelloWorld
    MANIFEST.MF
    jar cvfm hello.jar MANIFEST.MF .
    java –jar hello.jar
    La classe HelloWorld est
    chargée par l’intermédiaire
    du fichier MANIFESTE.MF
    Cette option permet d’exécuter à
    partir d’une archive du code java

    View Slide

  7. 7
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : JAR
    † La manipulation des ressources (tout ce qui ne représente pas
    du code Java) à partir d’une archive JAR est différente que la
    solution sans JAR
    † les fichiers de localisation,
    † les images et les sons,
    † les fichiers de configuration
    † Créer une URL à partir du code suivant
    URL ma_res = this.getClass().getClassLoader().getResource(String path)
    L’utilisation des packages
    pour tout projet est
    recommandée
    URL ma_ressource = this.getClass().getResource(String path)
    Récupère la classe qui a
    été chargée (contient la
    méthode main) (1)
    A partir du chemin de la ressource création
    d’une URL
    Autre manière plus rapide (2)

    View Slide

  8. 8
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : JAR
    † Localiser les ressources à partir du package principale et
    descendre jusqu’au répertoire contenant les ressources (path)
    † Exemples de chemin (contenu de path)
    † rootpackage/resources/images (1)
    † /autrerootpackage/secondpackage/informations/localisation (2)
    † /rootpackage/resources/images (2)
    † A partir de l’objet URL construit possibilité de créer toute sorte
    d’objet fonction du type de ressource
    † Image, ImageIcon, …
    Cette solution fonctionne même
    si votre application n’est pas
    distribuée sous forme de JAR
    Avec la solution (2) ne pas
    oublier le caractère « / »
    en début de la chaîne du
    chemin de la ressource

    View Slide

  9. 9
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : JAR
    † Exemple : manipulation des ressources à partir d’un JAR
    package monpackage;
    public AfficheImage extends JFrame {
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(BorderLayout.CENTER, new Jlabel(
    new ImageIcon("monpackage/usercogn.gif")));
    JButton mon_coco = new JButton(
    new ImageIcon("monpackage/go.gif"));
    mon_coco.addActionListener(this);
    getContentPane().add(BorderLayout.SOUTH, mon_coco);
    pack(); setVisible(true);
    }
    Code qui ne fonctionne
    pas si l’application est
    déployée dans un JAR
    NullPointerException
    package monpackage;
    public AfficheImage extends JFrame {
    ...
    getContentPane().add(BorderLayout.CENTER, new Jlabel(new ImageIcon(
    getClass().getResource("/monpackage/usercogn.gif")));
    JButton mon_coco = new JButton(new ImageIcon(
    getClass().getResource("/monpackage/go.gif")));
    mon_coco.addActionListener(this);
    ...
    } Préférez largement cette seconde
    solution pour gérer les ressources

    View Slide

  10. 10
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : sécurité
    † Une application Java distante ou de type « riche » s’exécute
    dans un bac à sable
    † Tant que l’application est dans le bac à sable elle ne peut pas
    accéder aux éléments « à risque » de la machine du client
    † Fichiers systèmes
    † Données personnelles
    † Périphériques à risques
    † Pour sortir du bac à sable c’est-à-dire si votre application a
    besoin d’un accès sur votre machine vous devez utiliser une
    application signée. Exemples :
    † Accès au répertoire « mes images » du client pour un logiciel de
    développement photos
    † Accès aux ressources d’un périphérique

    View Slide

  11. 11
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : sécurité
    † Signer une application correspond à signer de façon digitale
    l’archive JAR contenant l’application
    † Un fichier signé a besoin d’un « keystore » (clé du magasin)
    qui est un fichier issu du développeur et qui prouve que le
    fichier JAR vient de la bonne personne
    † Des clés professionnelles existent comme VeriSign ou
    Thawte mais peuvent être générées gratuitement par l’outil
    « keytool »
    keytool -genkey -keystore mykeystore -alias mykey
    Génère une clé du magasin
    appelée « mykeystore »
    Contient la clé « mykey »
    C’est la clé
    Fonctionnement identique pour
    les applications déployer par JWS

    View Slide

  12. 12
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : sécurité
    † L’outil « keytool » demande sous la forme d’un
    questionnaire différents éléments comme : mot de passe,
    nom, organisation, …
    † Une fois la clé définie vous pouvez signer vos archives JAR en
    utilisant l’outil « jarsigner »
    † Si le fichier JAR est signé un certificat de sécurité doit être
    validé par l’utilisateur
    jarsigner -keystroke mykeystroke file.jar mykey
    Signe le fichier « file.jar » avec la clé
    « mykey » contenu dans « mykeystroke »

    View Slide

  13. 13
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : sécurité
    Le propriétaire de
    l’application
    † Certificat de sécurité proposé avant l’exécution de l’application
    Les informations relatives
    au propriétaire de
    l’application

    View Slide

  14. 14
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : Java Web Start
    † Java Web Start (JWS) permet le déploiement d’applications
    en locale à travers le réseau (stand-alone)
    † JWS permet l’installation d’une application dite « client
    lourd » grâce à un simple lien hypertexte d’une page web
    † Java Web Start est le fruit des travaux réalisés sur la JSR-56
    † Page officielle du projet : http://java.sun.com/products/javawebstart
    † Il est inutile de modifier une application déjà développée pour
    qu’elle puisse être utilisée avec Java Web Start

    View Slide

  15. 15
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : Java Web Start
    † Les avantages de cette technologie sont
    † mise à jour automatique de l’application si une nouvelle version est
    disponible
    † assure une mise en cache locale des applications pour accélérer leur
    réutilisation ou si la machine client n’est pas connectée
    † sécurité des applications assurée par l’utilisation du bac à sable (voir
    section précédente)
    † Toute application déployer avec JWS est une application dite
    client « lourd/riche »

    View Slide

  16. 16
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : Java Web Start
    † Java Web Start utilise et implémente une API et un protocole
    appelés Java Network Lauching Protocol (JNLP)
    † Pour utiliser cette technologie il faut définir un fichier de
    description XML décrivant l’application à exécuter (JNLP)
    † Cette technologie est disponible sur toutes les plateformes
    qui supportent Java (apparu depuis la version JSEE 1.4)
    † L’utilisation de JWS implique la réalisation de trois étapes
    † packager l’application dans un fichier JAR (section précédente)
    † créer le fichier de lancement au format « jnlp »
    † copier les deux fichiers sur le serveur web

    View Slide

  17. 17
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : Java Web Start
    † Page Java Web Start officielle
    † http://java.sun.com/products/javawebstart
    † http://java.sun.com/javase/6/docs/technotes/guides/deployment
    † Démos : http://java.sun.com/products/javawebstart/demos.html
    † Ressources sur JNLP et JWS
    † Java One 2006 (http://developpers.sun.com/learning/javaoneonline
    † TS-3212, TS-3133, TS-7904
    † http://today.java.net/pub/a/today/2005/09/01/webstart.html
    † http://webstartfaq.com

    View Slide

  18. 18
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Déploiement : Java Web Start
    † Implémentation de la spécification JNLP par Sun : l’outil
    s’appelle Java Web Start
    Liste des
    applications
    disponibles
    Détails de l’application sélectionnée
    Exécuter en mode hors-ligne ou pas

    View Slide

  19. 19
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † Le fichier JNLP est un document XML qui débute et se termine
    par la balise …
    † Cette balise contient trois attributs (obligatoires)
    † String spec : version de la spécification de JNLP. La valeur défaut est
    « 1.0+ ». Le « + » oblige à utiliser une version égale ou supérieure
    † String codeBase : URL qui pointe sur le fichier décrit par href
    † String href : nom du fichier JNLP
    † La balise contient également un ensemble de sous
    balises
    † : utilisée une ou plusieurs fois
    † : n’est pas obligatoire
    † : utilisée zéro ou plusieurs fois
    † ou : l’un ou l’autre

    View Slide

  20. 20
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † Exemple (1) : fichier JNLP d’une application déployée par
    JWS


    spec="1.5+"
    codebase="http://my_company.com/jaws/apps"
    href="application.jnlp">
    ...
    ...
    ...
    ...

    C’est un fichier XML
    On utilise ici une version 1.5 supérieure de la
    spécification JNLP
    URL de l’application JWS
    Nom du fichier JNLP
    Les autres sous balises

    View Slide

  21. 21
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † La balise permet de donner des informations
    concernant différents aspects
    † La balise peut-être répétée plusieurs fois en fonction de
    la valeur de l’attribut os de
    † : le titre de l’application (obligatoire)
    † : le nom du concepteur (obligatoire)
    † : contient dans l’attribut href le chemin (relatif) des
    différentes ressources pour l’aide (optionnel)
    † : donne une description de l’application (optionnel). Elle
    contient un attribut kind qui définit comment est présentée la
    description
    † one-line : dans une table
    † short : dans un paragraphe
    † tooltip : dans une bulle d’aide
    Si kind n’est pas spécifié utilisation de la valeur par défaut définie par le
    corps de la balise

    View Slide

  22. 22
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † La balise permet de donner des informations
    concernant différents aspects (suite)
    † : décrit les URL pour les différentes images qui sont utilisées
    (optionnel)
    † pendant le chargement de l’application
    † par l’outil Java Application Cache Viewer
    † par les raccourcis
    Elle nécessite un attribut href (obligatoire) qui permet de donner le
    chemin de l’image (relatif)
    L’attribut kind="splash" peut-être utilisé pour afficher un écran
    « splash » (optionnel)
    † : indique si l’application peut-être lancée hors-ligne.
    Si elle est précisée l’application est exécutable hors-ligne sinon elle ne
    l’est pas (optionnel)

    View Slide

  23. 23
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † Exemple (2) : fichier JNLP d’une application déployée par JWS

    Simple Application JWS
    Mickaël BARON

    Ma Simple Application JWS
    Une petite application
    montrant la capacité à déployer des JWS.




    extensions="MyApplication">


    Simple Application JWS on Linux


    View Slide

  24. 24
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † La balise permet de donner des informations
    concernant la sécurité (optionnel)
    † : l’application aura les accès à la machine client et
    au réseau local en fonction des sécurité de l’application (optionnel)
    † La balise est utilisée pour spécifier toutes les
    ressources telles que les classes Java, les librairies natives et
    les propriétés
    † : spécifie dans l’attribut href les fichiers JAR utilisés dans
    l’application
    † : spécifie dans l’attribut version la version minimum de la
    machine virtuelle
    † La balise est utilisée pour paramétrer
    l’exécution d’une application (optionnel)
    † l’attribut main-class spécifie la classe principale (obligatoire)
    † donne des valeurs aux arguments

    View Slide

  25. 25
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † Exemple (3) : fichier JNLP d’une application déployer par JWS







    Balise pour la sécurité donne l’autorisation
    après acception du certificat (voir sécurité)
    Balise pour les ressources
    Description de la classe principale
    contenu dans le fichier « autrelib.jar »
    Possibilité de déployer des
    applications (clients lourds), applets
    (clients riches) et des bibliothèques

    View Slide

  26. 26
    Déploiement JWS - M. Baron - Page
    keulkeul.blogspot.com @mickaelbaron
    Java Web Start : fichier JNLP
    † Exemple : déploiement d’une application qui affiche une image

    href="helloworldjws.jnlp">

    Ma Première Application Java Web Start
    Mickael BARON


    Mon Application qui affiche uniquement une image









    main-class="monpackage.HelloWorldImage" />

    View Slide