Cours intensif Java. 3er cours: introduction aux Applets. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.



Documents pareils
INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Interfaces graphiques avec l API Swing

Programmation avancée et répartie en Java : interfaçage avec d autres langages

Java Licence professionnelle CISII,

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP1. Outils Java Eléments de correction

Introduction au langage Java

Java 7 Les fondamentaux du langage Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Gestion des documents avec ALFRESCO

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Initiation à JAVA et à la programmation objet.

Tutorial Terminal Server sous

Construire des plug-ins pour SAS Management Console SAS 9.1

TP1 : Initiation à Java et Eclipse

Introduction à Eclipse

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Développement Logiciel

Web Tier : déploiement de servlets

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Le Modèle de Sécurité dans JAVA

Auto-évaluation Programmation en Java

RMI le langage Java XII-1 JMF

Solutions du chapitre 4

PROGRAMMATION PAR OBJETS

Cours 1: Java et les objets

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

Optimiser pour les appareils mobiles

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Guide de l utilisateur Mikogo Version Windows

INITIATION AU LANGAGE JAVA

Administration du site

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

La base de données XML exist. A. Belaïd

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Création WEB avec DreamweaverMX

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Manuel d utilisation de l outil collaboratif

Création d un service web avec NetBeans 5.5 et SJAS 9

LES ACCES DISTANTS ET SECURISES. Installation et utilisation du client. Cisco AnyConnect VPN Client. pour Windows

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

WebSpy Analyzer Giga 2.1 Guide de démarrage

Outlook Présentation.

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Environnements de développement (intégrés)

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Sélection du contrôleur

I Pourquoi une messagerie?

Spécifications techniques

Single User. Guide d Installation

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

MEGA ITSM Accelerator. Guide de démarrage

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

TP2 : Client d une BDD SqlServer

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

SolidWorks edrawings et publications

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Formation. Module WEB 4.1. Support de cours

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Compte Rendu d intégration d application

Création et utilisation de formulaire pdf

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.


Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Comment accéder à d Internet Explorer

Manuel utilisateur Netviewer one2one

bbc Launch Pad Juillet 2011 Version 10.0

L accès à distance du serveur

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Remote Method Invocation (RMI)

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Premiers Pas en Programmation Objet : les Classes et les Objets

SEO On-page. Avez-vous mis toutes les chances de votre côté pour le référencement de votre site?

Utiliser le portail d accès distant Pour les personnels de l université LYON1

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Bases Java - Eclipse / Netbeans

Une introduction à Java

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Objets et Programmation. origine des langages orientés-objet

Introduction à Expression Web 2

Introduction à Java. Philippe Genoud.

Module Communication - Messagerie V6. Infostance. Messagerie

GeniusTim_Labo Version 1.0

MEGA ITSM Accelerator. Guide de Démarrage

TP1 : Initiation à Java et Eclipse

INTRODUCTION AU CMS MODX

Guide d administration de Java Desktop System Configuration Manager Release 1.1

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Héritage presque multiple en Java (1/2)

Réalisation de cartes vectorielles avec Word

F O R M A T I O N S LOTUS NOTES. 8.5 Utilisateurs rue de la Bôle. E U R L. a u c a p i t a l d e

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Table des matières ENVIRONNEMENT

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

Transcription:

. Cours intensif Java 3er cours: introduction aux Applets Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr

JAVA ET L INTERNET Applet: programmes écrits en java et intégrés dans une page web utilisées pour créer des applications interactives qu on ne peut pas faire avec HTML chargée depuis une machine distante (serveur) exécutée sur la machine locale (client) exécutée sous le controle d une autre application (navigateur avec interpréteur java) Servlet: (hors du champs de ce cours) pour développer des serveurs pour internet.

RESTRICTIONS ET SÉCURITÉ Pour assurer la sécurité des utilisateurs, certaines opérations sont interdites aux applets par défaut. Une applet ne peut exécuter que son propre code, ne peut accéder aux fichiers de la machine client et ne peut modifier les propriétés système de la machine client. Une applet peut interagir au travers du réseau uniquement avec le serveur sur lequel elle a été chargée. Il est possible, avec le consentement explicite de l utilisateur, de donner quelques permissions, toujours assez limités, à des applets dont on a vérifié la provenance au moyen de signatures électroniques (pas traité ici).

Une applet qui écrit Hello web. UNE PREMIÈRE APPLET import java.awt.*; import java.applet.*; public class MonApplet extends Applet public void paint(graphics gc) gc.drawstring("hello Web",40,40); Notre applet est un objet de la classe Applet du package java.applet. La classe Applet hérite de la classe Panel définie dans la bibliothèque d interface graphique awt: une applet est donc un objet graphique! Pour comprendre cette applet il nous faut étudier un peu la bibliothèque awt où sont définis la classe Graphics et la méthode drawstring.

INTERFACES GRAPHIQUES Les packages pour interfaces graphiques (GUI pour Graphical User Interface) Le package initial java.awt. Le package javax.swing, plus avancé et permettant de faire certaines opérations plus simplement, mais réutilisant les concepts de base de awt. Les applications utilisent maintenant plutôt swing, mais pour comprendre les concepts de base en peu de temps, awt est plus commode. On distingue deux grandes parties dans la création d une GUI: la définition de tout ce qui peut être affiché: fenêtre, dessins, bouton, barre d outils, menu déroulant, etc. la gestion des évènements: interagir avec l utilisateur (souris, clavier, etc). Nous aurons le temps d aborder uniquement la première partie: suffisante pour faire une page applet animée, à défaut d être interactive.

MON PREMIER COMPOSANT GRAPHIQUE: UNE FENÊTRE Pour ouvrir une fenêtre on commence par créer une classe qui la décrit: cette classe hérite de la classe Frame (fenêtre générique) et de ses méthodes, entre autres settitle, setsize, setvisible: public class Fenetre extends Frame public Fenetre() settitle("fen^etre, modèle Duchi"); setsize(500,700); setvisible(true); Il suffit maintenant de créer un objet de la classe Fenetre! class Essai public static void main(string [] arg) Fenetre f=new Fenetre(); L exécution ouvre une fenêtre moins large que haute: les boutons habituels sont présents mais inactifs, il faut tuer le processus (Ctrl-C) pour l arrêter.

LA VOILÀ

CONTENANT ET CONTENU Notre objet fenêtre est un composant graphique avec deux qualités: la fenêtre dispose d un environnement graphique: il s agit d un objet qui gère l affichage dans le rectangle de la fenêtre. les fenêtre est un contenant: elle peut contenir d autres composants graphiques (des applets, des menus, des boutons, etc). Pour utiliser un composant, par exemple une fenêtre, on peut: utiliser les méthodes de l environnement graphique pour dessiner directement dans le rectangle, indexé en coordonnées cartésiennes. ou ajouter des (sous-)composants dans le contenant, comme par exemple, des zones de dessins, des boutons, des menus, etc. Ces composants sont alors disposés suivant une mise-en-page automatique (layout) paramétrable, qui s adapte au rectangle. Les composants ajoutés dispose de leur environnement graphique et peuvent être aussi des contenants auxquels on peut ajouter d autres composants, etc. (Pour compléter le tableau, on dira seulement que les interactions avec l utilisateur sont réalisées en associant à ces composants des écouteurs qui attendent un évènement particulier (clic ou clavier) pour effectuer des actions.)

L ENVIRONNEMENT GRAPHIQUE D UN COMPOSANT L environnement graphique d une fenêtre (ou plus généralement d un composant graphique) est un objet g de la classe java.awt.graphics l objet g s occupe de gérer une zone graphique: un rectangle de dimension fixée dans lequel on peut dessiner; l objet g dispose de méthodes graphiques variées telles que drawline(), drawstring(), drawimage(), setcolor(), fillrectangle(), dont les effets sont d effectuer les opérations nommées dans le rectangle: le rectangle est muni d un système de coordonnées cartésiennes (origine en haut à gauche); ces coordonnées sont utilisées par les méthodes graphiques pour spécifier les opérations à faire dans le rectangle. void monlogo(graphics g, int x, int y) g.drawoval(x,y,10,10); g.drawrect(x+5,y+10,10,20); Pour dessiner mon logo (un rond et un carre) en position 50,50 il suffit d appeler la méthode: monlogo(g,50,50);

LA GESTION DE L ENVIRONNEMENT GRAPHIQUE Chaque composant (en particulier notre fenêtre) hérite d une méthode paint(graphics g) qui par défaut ne fait rien et d une méthode repaint(). La méthode paint est appelée automatiquement avec l environnement graphique de notre fenêtre en argument lorsque le window manager décide qu il faut la raffraichir, ou lorsqu on appelle explicitement repaint(). Pour dessiner dans notre fenêtre il faut redéfinir sa méthode paint: public class Fenetre extends Frame public Fenetre() settitle("fen^etre, modèle Duchi"); setsize(500,700); setvisible(true); public void paint(graphics g) monlogo(g,50,50,10); g.drawstring("quel progrès!",50,100); La fenêtre créée se redessine automatiquement chaque fois que nécessaire.

LES COMPOSANTS ET LEUR DISPOSITION La méthode paint est fournie par la classe abstraite java.awt.component, avec d autres méthodes permettant de fixer les caractéristiques principales du composant. Par exemple: setbackground(color.yellow), setforeground(color.red),etc. Les sous-classes de Component qui nous serviront sont: Canvas. Un objet de cette classe n a que son environnement graphique, pas de sous-composants. Il peut être inclus dans un contenant. Container. Les objet de cette classe sont ceux qui peuvent contenir des sous-composants. Les sous-classes de cette classe sont: Panel. Les objets de cette classe sont les contenants qui peuvent être eux-mêmes inclus dans un autre contenant. Windows. Les objets de cette classe sont les contenants qui interagissent directement avec le window manager (ils peuvent être déplacés). Ils ne peuvent pas être inclus dans un autre contenant Frame: pour les vraies fenêtres (déjà utilisées) Dialog: pour les boites de dialogue. La classe Applet est une sous-classe de la classe Panel.

AJOUTER DES COMPOSANTS DANS UN CONTENEUR On a dit que les conteneurs, comme par exemple une fenêtre, peuvent recevoir des composants. La méthode pour ajouter un composant à un conteneur est la méthode add de la classe Container. Par exemple définissons une classe Message qui étend la classe Canvas et utilisons la pour ajouter des composants dans un Panel. class Message extends Canvas String texte; public Message(String texte) setsize(100,30); this.texte=texte; public void paint(graphics g) g.drawstring(this.texte,10,20); class Bandeau extends Panel public Bandeau() setsize(400,50); setlayout(new BorderLayout); add(new Message("A gauche"),"west"); add(new Message("A droite"),"east"); L appel new Message("toto") crée un rectangle de taille 100 100 contenant le texte toto. Le panel créé par l appel new Bandeau() est de taille 100 100 et contient deux messages.

AJOUTER DES COMPOSANTS DANS UN CONTENEUR class Message extends Canvas String texte; public Message(String texte) setsize(100,30); this.texte=texte; public void paint(graphics g) g.drawstring(this.texte,10,20); class Bandeau extends Panel public Bandeau() setsize(400,50); setlayout(new BorderLayout); add(new Message("A gauche"),"west"); add(new Message("A droite"),"east"); L appel new Message("toto") crée un rectangle de taille 100 100 contenant le texte toto. Le panel créé par l appel new Bandeau() est de taille 100 100 et contient deux messages. La méthode setlayout de la classe Container sélectionne une mise en page des sous-composants: dans la mise en page BorderLayout, les composants peuvent être mis sur les différents bords (nord, sud, est, ouest) ou au centre.

AJOUTER DES COMPOSANTS DANS UN CONTENEUR On crée une classe Dessin qui étend Canvas pour y mettre un dessin, puis on ajoute ce dessin et notre bandeau à une fenêtre. class Dessin extends Canvas public Dessin() setsize(200,200); public void paint(graphics g) g.drawrect(50,50,75,100); public class Fenetre extends Frame public Fenetre() settitle("fen^etre, modèle Duchi 2"); setlayout(new BorderLayout()); setsize(500,700); add(new Bandeau(),"North"); add(new Dessin(),"Center"); setvisible(true); La fenêtre obtenue contient en haut le bandeau et au centre le dessin.

RETOUR SUR NOTRE APPLET On est maintenant en mesure de lire le code de l applet: import java.awt.*; import java.applet.*; public class MonApplet extends Applet public void paint(graphics gc) gc.drawstring("hello Web",40,40); La classe Applet est une sous-classe de la classe Panel: on peut donc ajouter une applet à une fenêtre avec la méthode add. public class Fenetre extends Frame public Fenetre()... add(new MonApplet()); et l utiliser dans un programme Java normal. On verra bientôt une autre façon d utiliser les applets, via les pages HTML.

LES MÉTHODES DES APPLETS, CYCLE DE VIE En tant que sous-classe de la classe graphique Panel, la classe Applet hérite des méthodes paint(graphic g) pour s afficher et add(component c) pour inclure des composants graphiques. Par ailleurs les applets ont un cycle d exécution, controlé par les méthodes: init(): initialisation de l applet; appelée une seule fois au démarrage; start(): réveil de l applet; pour réveiller l applet stop(): endormissement de l applet; pour endormir l applet; destroy(): destruction de l applet; appelée à la terminaison. Après avoir inclu une applet on va donc l initialiser et la réveiller: public Fenetre() // constructeur de la classe Fenetre... MonApplet uneapplet = new MonApplet(); add(uneapplet); uneapplet.init(); uneapplet.start(); Si on savait gérer les évènements, on mettrait des boutons pour endormir et reveiller l applet (en appellant uneapplet.stop() et uneapplet.start()) et un appel de uneapplet.destroy() à la fermeture de la fenêtre.

APPLETS ET WEB Les applets sont avant tout faites pour aller sur des pages web: on va voir qu on peut directement créer un objet Applet en chargeant la classe MonApplet depuis une page HTML. Le cycle de vie de l applet prend alors tout son sens: init(): initialisation de l applet; elle sera lancée automatiquement au chargement de la page web. start(): reveil de l applet; elle sera appelée automatiquement chaque fois que la page web redevient visible. stop(): endormissement de l applet; elle sera appelée automatiquement chaque fois que la page web est cachée. destroy(): destruction de l applet; elle sera appelée lorsqu on quitte la page web (pour aller sur une autre page par ex). De plus, chaque fois que le window manager jugera utile de raffraichir la page, la méthode MonApplet.paint() sera invoquée.

DANS LE FICHIER HTML Pour créer une applet il suffit d insérer une balise <APPLET>: <HTML> <BODY> <APPLET CODE="MonApplet.class" CODEBASE="http://serveur/mesapplets" WIDTH=500 HEIGHT=700 ALT="chargement impossible"> J écris ça si je suis un navigateur sans java. </APPLET> </BODY> </HTML> CODE indique le nom du fichier bytecode de la classe: MonApplet.class CODEBASE donne l adresse web où trouver le fichier (si il n est pas dans le même répertoire que la page HTML) WIDTH et HEIGHT fixent les dimensions de l environnement graphique (remplace l appel à setsize) ALT donne le message pour le cas où on n arrive pas à charger l applet entre les 2 balises <APPLET> et </APPLET> on écrit le message qui remplace l applet si le navigateur ne gère pas Java.

APPLET LANCÉE DEPUIS UNE PAGE WEB Récapitulons: à la lecture du code HTML, le navigateur charge le bytecode de la classe crée un objet a de la classe MonApplet en appelant le constructeur par défaut de la classe appelle les méthodes a.init() et a.start() Ensuite le cycle de vie se déroule avec appels automatiques de a.start(), a.stop(), a.paint(), a.destroy(), comme décrits précédement.

PARAMÉTRAGE D UNE APPLET DEPUIS HTML Pour transmettre des paramètres à une applet depuis la page HTML: dans le code HTML, on insère entre <APPLET> et </APPLET> la balise: <PARAM NAME = "monparametre" VALUE = "savaleur"> dans l applet on insère un appel getparameter("monparametre") qui renvoit un String contenant "savaleur". Un exemple: public class MonApplet implements Applets private String message; public void init() message = getparameter("monparametre"); public void paint(graphics g) g.drawstring(message,100,50)

INSÉRER DES IMAGES La classe java.awt.image fournit les outils pour charger des images à partir d une adresse web: en particulier la méthode Image monimage = getimage(adresseweb,"photovacances.jpeg") Le paramètre adresseweb est un objet de la classe java.net.url, obtenu à l aide de la méthode getcodebase() de la classe Applet: URL adresseweb=getcodebase(); Le chargement des images se fait en général à l initialisation, dans la méthode init. On peut ensuite insérer l image obtenue dans un environnement graphique avec la méthode drawimage() de la classe Graphics: dans la méthode paint(graphics g) faire: g.drawimage(monimage,0,0,this) pour insérer l image à la position 0,0.

ARCHIVES.JAR Le programme jar permet de créer une archive au format ZIP contenant les fichier.class et les éventuels autres fichiers dont l applet pourrait avoir besoin (images, etc). En chargant un fichier.jar contenant tout ce qui sert on évite que l applet n aille chercher les classes et les images dont elle a besoin une par une sur le serveur web. La commande jar s utilise avec une syntaxe similaire à la commande tar. Par exemple pour créer une archive ArchiveApplet.jar contenant tous les fichiers.class du répertoire et un fichier image uneimage.jpeg on écrit: jar cf ArchiveApplet.jar *.class uneimage.jpeg Pour charger une applet sous forme d archive a partir d une page web il faut ajouter le champs ARCHIVE="ArchiveApplet.jar" dans la balise <APPLET> où figure le champs CODE qui indique le nom de la classe à exécuter.

APPLETVIEWER Lorsqu on développe des applets le programme Appletviewer est très utile: il permet de lancer une applet comme depuis une page web sans avoir à écrire le code HTML et sans lancer de navigateur. La commande appletviewer prend en argument un fichier texte contenant une balise <APPLET CODE="maClasse.class" WIDTH=100 HEIGHT=80> </APPLET>. Une façon commode de l utiliser est d inclure une ligne de commentaire: // <APPLET CODE="maClasse.class"> </APPLET>. au début du fichier maclasse.java, ce qui permet de lancer depuis un terminal la commande : appletviewer maclasse.java pour exécuter l applet. Le programme Appletviewer effectue alors les opérations suivante: il extrait le nom de l applet indiqué par la balise et oublie le reste du fichier, il crée une fenêtre et y ajoute une instance de l applet ainsi qu un menu déroulant permettant d appeler les méthodes init, start, stop et destroy