Title: Diapositive 1
1Exposé technique du 2 déc. 2008 Applettes et
Java Web Start Délégation et déploiement
R. M.
Ingénieurs 2000
IR3
2Sommaire
- Les applettes
- Présentation
- Créer et exécuter une applette
- La sécurité des applettes
- Les droits et les interdictions.
- Lever ces interdictions.
- Java Web Start (JWS)
- Présentation
- Déployer une application ok
- La sécurité
3Les Applettes, cest quoi ?
- Programme Java qui sintègre dans une page Web.
- Interactivité.
- Graphique animé, lecteur vidéo, etc.
- Exécution du code côté client.
- Répartition de charge
- Multiplateforme et multinavigateur .
- Principale concurrent Flash
4Processus de chargement
1- Demande page.html
2- Demande Applet.class
page.html Applet.class
3 Exécution de Applet.class
Lapplette est chargée depuis un serveur puis
exécutée sur le poste client.
5Comment lire une Applette ?
- Pour linsérer dans une page Web
- ltOBJECTgt (valide W3C)
- ltAPPLETgt (préconisée par SUN)
- Pour lexécuter
- Un navigateur
- AppletViewer (JDK)
- appletviewer http//.../MonApplet.html
- Toutes les applettes de la page sont exécutées
6La balise ltappletgt
ltapplet codebase " http//localhost8080/Projet/
" code"MonApplet.class" archive"archive1.ja
r, archive2.jar" name"A1" width"200"
height"200"gt ltparam name"arg1" value"value1"
/gt ltparam name"arg2" value"value2"
/gt lt/appletgt
7Comment créer une applette ?
public class MyFirstApplet extends Applet
_at_Override public void init() _at_Override
public void start() _at_Override public void
stop() _at_Override public void destroy()
_at_Override public void paint()
- Cycle de vie
- AppletViewer init() ? start() ? stop() ?
destroy() - Navigateurs récents init()start() ?
stop()destroy()
8Différents dialogues possibles (1/2)
- Entre applets dune même page
- getAppletContext().getApplet("A1"). javaMethod()
- De JavaScript à une applet
- document.appletsA1'.javaMethod()
- Des applets à JavaScript
- Ajouter lattribut mayscript"true"
- Importer plugin.jar (JRE)
- new JSObject.call("javascriptMethod")
9Différents dialogues possibles (2/2)
-
- Avec le serveur qui héberge lapplette
- URLConnection con new URL(getCodeBase(),
ServletName ).openConnection() - OutputStream stream con.getOutputStream()
10Sécurité des applettes
- La SandBox
- Protéger le client
- Pas daccès aux fichiers, périphériques et au
réseau du client. - Lève SecurityException
- Accès non restreint ?
- Modifier les politiques de sécurité du client
- Signer numériquement lapplication.
11Les politiques de sécurité Etendre les droits
- Un fichier côté client
- grant codeBase "http//localhost8080/AppletServle
t/MstscNS.jar" - permission java.io.FilePermission
"c\\windows\\system32\\mstsc.exe", "execute" -
- A éditer à la main ou avec policytool (JRE).
- Prendre en compte la nouvelle politique
- appletviewer H-Djava.security.policy mypolicy
http//.../file.html - La placer dans USER.HOME/.java.policy
12Signature numérique Lever les interdictions
- Archiver lapplication
- Créer un certificat
- keytool -genkey -keystore myKeystore.ks -alias
mykey - Signer larchive
- jarsigner keystore myKeystore.ks myappli.jar
mykey
13Conclusion
- Avantages
- Technologie mature
- Sintègre facilement
- Saffranchir des limitations de HTML
- Bibliothèques Java consistantes
- Les applettes ne sont pas mortes
- Java FX
14 Java Web Start Présentation
- Déploiement dapplications ou dapplettes Java
- Téléchargement des données.
- Installation / Exécution / Désinstallation
- Intégration
- Mises à jour automatiques
- A linitiative du client.
- Différent de System Management Server
- Equivalent à ClickOnce
15Avantages Java Web Start
- La portabilité
- La maintenance
- La sécurité
- Les optimisations
- Mises à jour des fichiers anciens seulement
(jardiff) - Seules les ressources utilisées sont
téléchargées - Mises en cache (exécution hors ligne, lancement
accéléré)
16Processus de déploiement
1 Demande Descriptor.jnlp
2 Client JWS demande Application.jar
Descriptor.jnlp Application.jar
3 Installation / MAJ
4 Exécution
Lapplication est téléchargée, installée puis
exécutée sur le poste client
17Déployer une application
- Aucune modification du code nest nécessaire.
- Archiver lapplication
- Créer fichier de lancement au format JNLP
- Ajouter le type MIME application/x-java-jnlp-fi
le jnlp . - Au niveau du serveur Web (Apache fichier
mime.types ) - Placer les archives JNLP sur le serveur Web
18Le fichier JNLP Structure
lt?xml version"1.0" encoding"utf-8"?gt lt!DOCTYPE
jnlp PUBLIC -//Sun Microsystems, Inc//DTD
JNLP Descriptor 6.0//EN" http//java.sun.com/d
td/JNLP-6.0.dtd"gt ltjnlp spec"6.0"
codebase"http//localhost8080/TestJWS"gt ltinfo
rmationgt(...) lt/informationgt ltsecuritygt (...)
lt/securitygt ltresourcesgt (...)
lt/resourcesgt ltapplication-descgt (...)
lt/application-descgt ltapplet-descgt (...)
lt/applet-descgt lt/jnlpgt
19Le fichier JNLP Information
ltinformationgt lttitlegtNom de lapplicationlt/titlegt
ltshortcutgtltdesktop /gtlt/shortcutgt lthomepage
href"http//.../expose.html"/gt ltdescriptiongt
() lt/descriptiongt lticon kind"splash"
href"img/ig2k_logo.png" /gt ltoffline-allowed/gt
lt/informationgt
20Le fichier JNLP Sécurité, Update et Resources
ltsecuritygt ltall-permissions /gt lt/securitygt ltupda
te checkalways" policy"prompt-update"/gt ltreso
urcesgt ltjava version"1.6" max-heap-size"64m"
/gt ltjar href"Mstsc_version_JWS.jar"
main"true" download"eager"/gt lt/resourcesgt
21Le fichier JNLP Application
ltapplication-desc main-class"MaClassePrincipale"
gt ltargumentgtarg1lt/argumentgt ltargumentgtarg2lt/argu
mentgt lt/application-descgt Ou bien
ltapplet-desc main-class"MonApplet"
name"test" width"320"
height"240"gt ltparam name"key1" value"value1"
/gt ltparam name"key2" value"value2"
/gt lt/applet-descgt
22Lancer une application Java Web Start
- Pré-requis Client JWS (inclus dans les JRE
1.4) - Avant installation
- Depuis un navigateur Web
- lta href AppliDescriptor.jnlpgtStart Applilt/agt
- En ligne de commande
- javaws HTTP//.../AppliDescriptor.jnlp
- Après installation
- À partir dun gestionnaire dapplications
- À partir dun raccourci créé sur le bureau
23Lancer une application Java Web Start Le
gestionnaire dapplications
24 Java Web Start Sécurité
- Identique aux applettes
- Exécution dans la SandBox
- Etendre les droits
- Mêmes solutions
- Modifier les politiques de sécurité
- Signer numériquement les archives
- Nouvelle solution lAPI JNLP
25 Java Web Start Sécurité LAPI JNLP (1/2)
- Etendre les droits sans signature numérique
-
- Librairie nécessaire javaws.jar (JRE)
- Fournit 11 services dont
- PrintService accès à limprimante
- FileOpenService/FileSaveService accès aux
fichiers en lecture / écriture - Etc.
26 Java Web Start Sécurité LAPI JNLP (2/2)
FileOpenService fos (FileOpenService)
ServiceManager .lookup("javax.jnlp.FileOpenService
") FileContents fcs fos.openMultiFileDialog(n
ull, null) for (FileContents file fcs)
System.out.println(file.getName()) // lecture
possible
27Conclusion
- Facile à mettre en place
-
- Technologies complémentaires
- Migration dune applette en application desktop
- Solutions gratuites !
28Merci de votre attention. Questions ?
R. M.
Ingénieurs 2000
IR3