Exposé technique du 2 déc. 2008 Applettes et Java Web Start Délégation et déploiement R....

Preview:

Citation preview

Exposé technique du 2 déc. 2008Exposé technique du 2 déc. 2008

ApplettesApplettes et et Java Web StartJava Web StartDélégationDélégation etet déploiement déploiement

R. M. Ingénieurs 2000 IR3

SommaireSommaire

• 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 ?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

L’applette est chargée depuis un serveur puis exécutée sur le poste client.

Processus de chargementProcessus de chargement

page.html +Applet.class

Comment lire une Applette ?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>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 ?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)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)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 applettesSé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éLes politiques de sécuritéEtendre les droits

• Un fichier côté clientgrant 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ériqueSignature numériqueLever 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

ConclusionConclusion

• 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 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 StartAvantages 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é)

L’application est téléchargée, installée puis exécutée sur le poste client

Processus de déploiementProcessus de déploiement

Descriptor.jnlp +Application.jar

2 Client JWS 2 Client JWS demande demande

Application.jarApplication.jar

• 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

Déployer une applicationDéployer une application

Le fichier JNLPLe fichier JNLPStructure

<?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 JNLPLe fichier JNLPInformation

<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 JNLPLe fichier JNLPSé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 JNLPLe fichier JNLPApplication

<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 StartLancer 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 StartLancer une application Java Web StartLe gestionnaire d’applications

• javaws -viewer

• 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é Java Web Start : Sécurité

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

Java Web Start : SécuritéJava Web Start : SécuritéL’API JNLP (2/2)

• Facile à mettre en place • Technologies complémentaires

Migration d’une applette en application desktop

• Solutions gratuites !

ConclusionConclusion

Merci de votre attention.

Questions ?

R. M. Ingénieurs 2000 IR3

Recommended