introduction à java web start : déploiement d'applications java
Post on 27-May-2015
5.404 Views
Preview:
DESCRIPTION
TRANSCRIPT
Java pour le développement de clients lourds
Mickaël BARON - 2007 (Rév. Juin 2011)mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
Déploiement d’applications Java avec Java Web Start
2Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Creative Commons
Contrat Paternité
Partage des Conditions Initiales à l'Identique
2.0 France
http://creativecommons.org/licenses/by-sa/2.0/fr
Licence
3Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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/
4Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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 …)
5Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
courantjar 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
6Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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.0Created-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
7Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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)
8Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
9Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Déploiement : JAR
� Exemple : manipulation des ressources à partir d’un JARpackage monpackage;public AfficheImage extends JFrame {
getContentPane().setLayout(new BorderLayout());getContentPane().add(BorderLayout.CENTER, new Jlabe l(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 Jlabe l(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
10Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
11Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
12Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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 »
13Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
14Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
15Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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 »
16Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
17Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
18Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
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
19Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� Le fichier JNLP est un document XML qui débute et se termine
par la balise <jnlp> … </jnlp>
� 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 <jnlp> contient également un ensemble de sous
balises
� <information> : utilisée une ou plusieurs fois
� <security> : n’est pas obligatoire
� <resources> : utilisée zéro ou plusieurs fois
� <application-desc> ou <applet-desc> : l’un ou l’autre
20Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� Exemple (1) : fichier JNLP d’une application déployée par JWS
<?xml version ="1.0" encoding ="utf-8"?><!-- Fichier JNLP de notre première application --><jnlp
spec ="1.5+" codebase ="http://my_company.com/jaws/apps" href ="application.jnlp"><information> ...<security> ...<resources> ...<application-desc> ...
</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
21Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� La balise <information> permet de donner des informations concernant différents aspects
� La balise <information> peut-être répétée plusieurs fois en fonction de la valeur de l’attribut os de <information>
� <title> : le titre de l’application (obligatoire)
� <vendor> : le nom du concepteur (obligatoire)
� <homepage> : contient dans l’attribut href le chemin (relatif) des différentes ressources pour l’aide (optionnel)
� <description> : 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 <description>
22Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� La balise <information> permet de donner des informations
concernant différents aspects (suite)
� <icon> : 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)
� <offline-allowed> : 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)
23Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� Exemple (2) : fichier JNLP d’une application déployée par JWS
<information > <title >Simple Application JWS< /title ><vendor >Micka ël BARON< /vendor ><homepage href ="docs/help.html"/><description >Ma Simple Application JWS< /description > <description kind ="short">Une petite application
montrant la capacité à déployer des JWS.</description > <icon href ="images/myimage.jpg"/><icon kind ="splash" href="images/splashimage.gif"/><offline-allowed/ ><association mime-type ="application-x/appliJWS-file"
extensions ="MyApplication"> </information ><information os ="linux">
<title >Simple Application JWS on Linux < /title ><homepage href="docs/linuxhelp.html">
</information >
24Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� La balise <security> permet de donner des informations concernant la sécurité (optionnel)
�<all-permissions> : 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 <resources> est utilisée pour spécifier toutes les ressources telles que les classes Java, les librairies natives et les propriétés
� <jar> : spécifie dans l’attribut href les fichiers JAR utilisés dans l’application
� <j2se> : spécifie dans l’attribut version la version minimum de la machine virtuelle
� La balise <application-desc> est utilisée pour paramétrer l’exécution d’une application (optionnel)
�l’attribut main-class spécifie la classe principale (obligatoire)
�<argument> donne des valeurs aux arguments
25Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� Exemple (3) : fichier JNLP d’une application déployer par JWS
<security > <all-permissions/ >
</security><resources >
<jar href="lib/autrelib.jar"/> </resources > <application-desc main-class ="monpackage.maclasse"/>
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
26Déploiement JWS - M. Baron - Page
keul
keul
.blo
gspo
t.com
Java Web Start : fichier JNLP
� Exemple : déploiement d’une application qui affiche une image <?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+" codebase="http://.../~keulkeul/" href="helloworldjws.jnlp"><information>
<title> Ma Première Application Java Web Start </title><vendor> Mickael BARON </vendor><homepage href="http://localhost/~keulkeul" /><description>
Mon Application qui affiche uniquement une image</description><offline-allowed/><icon href="images/macosxlogo.gif" />
</information><security></security><resources>
<j2se version="1.4" /><jar href="MonJar.jar" />
</resources><application-desc
main-class="monpackage.HelloWorldImage" /></jnlp>
top related