Vous êtes sur la page 1sur 28

Exposé technique du 2 déc.

2008

Applettes et Java Web Start


Délégation et déploiement

R. M. Ingénieurs 2000 IR3


Sommaire

• 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é
Les Applettes, c’est quoi ?

• Programme Java qui s’intè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


Processus de chargement

page.html +
Applet.class
L’applette est chargée depuis un serveur
puis exécutée sur le poste client.
Comment lire une Applette ?

• Pour l’insérer dans une page Web


 <OBJECT> (valide W3C)
 <APPLET> (préconisée par SUN)

• Pour l’exécuter
 Un navigateur
 AppletViewer (JDK)
• appletviewer http://.../MonApplet.html
 Toutes les applettes de la page sont exécutées
La balise <applet>

<applet codebase= " http://localhost:8080/Projet/"


code="MonApplet.class"
archive="archive1.jar, archive2.jar"
name="A1"
width="200" height="200">
<param name="arg1" value="value1" />
<param name="arg2" value="value2" />
</applet>
Comment créer une applette ?

public class MyFirstApplet extends Applet {


@Override public void init() {…}
@Override public void start() {…}
@Override public void stop() {…}
@Override public void destroy() {…}
@Override public void paint() {…}
}
Cycle de vie
• AppletViewer : init()  start()  stop()  destroy()
• Navigateurs récents: init()+start()  stop()+destroy()
Différents dialogues possibles (1/2)

• Entre applets d’une même page


 getAppletContext().getApplet("A1").
javaMethod()

• De JavaScript à une applet


 document.applets[‘A1'].javaMethod()

• Des applets à JavaScript


 Ajouter l’attribut mayscript="true"
 Importer plugin.jar (JRE)
 new JSObject.call("javascriptMethod")
Différents dialogues possibles (2/2)

• Avec le serveur qui héberge l’applette


 URLConnection con = new URL(getCodeBase(),
«ServletName »).openConnection()
OutputStream stream = con.getOutputStream()
Sécurité des applettes

• La SandBox
 Protéger le client
 Pas d’accè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 l’application.
Les politiques de sécurité
Etendre les droits
• Un fichier côté client
grant codeBase
"http://localhost:8080/AppletServlet/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
Signature numérique
Lever les interdictions

• Archiver l’application

• Créer un certificat
 keytool -genkey -keystore myKeystore.ks -alias mykey

• Signer l’archive
 jarsigner –keystore myKeystore.ks myappli.jar mykey
Conclusion

• Avantages
 Technologie mature
 S’intègre facilement
 S’affranchir des limitations de HTML
• Bibliothèques Java consistantes

• Les applettes ne sont pas mortes


 Java FX
Java Web Start : Présentation

• Déploiement d’applications ou d’applettes


Java
 Téléchargement des données.
 Installation / Exécution / Désinstallation
 Intégration
 Mises à jour automatiques

• A l’initiative du client.
 Différent de System Management Server

• Equivalent à ClickOnce
Avantages 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é)
Processus de déploiement
1 Demande
Descriptor.jnlp
2 Client JWS
demande
Application.jar

Descriptor.jnlp +
Application.jar

L’application est téléchargée, installée


puis exécutée sur le poste client
Déployer une application

• Aucune modification du code n’est nécessaire.


• Archiver l’application
• Créer fichier de lancement au format JNLP
• Ajouter le type MIME « application/x-java-jnlp-file
jnlp ».
 Au niveau du serveur Web (Apache : fichier
« mime.types »)
• Placer les archives + JNLP sur le serveur Web
Le fichier JNLP
Structure
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jnlp PUBLIC « -//Sun Microsystems, Inc//DTD
JNLP Descriptor 6.0//EN" « http://java.sun.com/dtd/JNLP-6.0.dtd">

<jnlp spec="6.0+"
codebase="http://localhost:8080/TestJWS">
<information>(...) </information>
<security> (...) </security>
<resources> (...) </resources>
<application-desc> (...) </application-desc>
<applet-desc> (...) </applet-desc>
</jnlp>
Le fichier JNLP
Information
<information>
<title>Nom de l’application</title>
<shortcut><desktop /></shortcut>
<homepage href="http://.../expose.html"/>
<description> (…) </description>
<icon kind="splash" href="img/ig2k_logo.png" />
<offline-allowed/>
</information>
Le fichier JNLP
Sécurité, Update et Resources
<security>
<all-permissions />
</security>

<update check=“always" policy="prompt-update"/>

<resources>
<java version="1.6+" max-heap-size="64m"/>
<jar href="Mstsc_version_JWS.jar"
main="true" download="eager"/>
</resources>
Le fichier JNLP
Application
<application-desc main-class="MaClassePrincipale">
<argument>arg1</argument>
<argument>arg2</argument>
</application-desc>
Ou bien …

<applet-desc main-class="MonApplet" name="test"


width="320" height="240">
<param name="key1" value="value1" />
<param name="key2" value="value2" />
</applet-desc>
Lancer une application Java Web Start
• Pré-requis : Client JWS (inclus dans les JRE 1.4+)
•Avant installation
 Depuis un navigateur Web
• <a href=« AppliDescriptor.jnlp»>Start Appli</a>
 En ligne de commande
• javaws HTTP://.../AppliDescriptor.jnlp
• Après installation
 À partir d’un gestionnaire d’applications
 À partir d’un raccourci créé sur le bureau
Lancer une application Java Web Start
Le gestionnaire d’applications

• javaws -viewer
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 : l’API JNLP
Java Web Start : Sécurité
L’API JNLP (1/2)

• Etendre les droits sans signature numérique

• Librairie nécessaire « javaws.jar » (JRE)

• Fournit 11 services dont :


 PrintService : accès à l’imprimante
 FileOpenService/FileSaveService : accès aux
fichiers en lecture / écriture
 Etc.
Java Web Start : Sécurité
L’API JNLP (2/2)
FileOpenService fos = (FileOpenService)
ServiceManager
.lookup("javax.jnlp.FileOpenService");
FileContents[] fcs = fos.openMultiFileDialog(null, null);
for (FileContents file : fcs)
System.out.println(file.getName()); // lecture
possible
Conclusion

• Facile à mettre en place

• Technologies complémentaires
 Migration d’une applette en application
desktop

• Solutions gratuites !
Merci de votre attention.
Questions ?

R. M. Ingénieurs 2000 IR3

Vous aimerez peut-être aussi