Vous êtes sur la page 1sur 30

Les applets

Chapitres traits
Dfinition

Attention : Dans cette tude, il serait prfrable de demander la reconstruction complte des projets que vous tlchargez sur votre ordinateur, pour qu'ils correspondent parfaitement au serveur Tomcat que vous utilisez.

Dfinition - Conues pour fonctionner sur le Web


Java est surtout connu pour sa capacit fonctionner sur des pages du World Wide Web. Les navigateurs permettent de tlcharger un programme Java sur le Web et de le faire fonctionner localement sur le systme de l'utilisateur du Web. Ces programmes, appels Applets, se prsentent comme des images sur une page Web. Contrairement aux images, toutefois, les applets peuvent tre interactives - c'est--dire admettre des donnes entres par l'utilisateur, y rpondre et prsenter du contenu capable d'voluer en permanence. Les applets peuvent servir crer des animations, des figures, des jeux, des formulaires capables de ragir des informations entres par l'utilisateur, ou tout autre type d'effets interactifs sur une mme page Web, au milieu d'lments de texte et de graphismes.

Applet fonctionnant sous Internet Explorer. Java permet une personne de jouer contre trois adversaires informatiques dans une partie de dominos.
Les applets peuvent tre tlcharges depuis le World Wide Web de la mme manire que des pages HTML, des images ou n'importe quel lment de site Web. Si le navigateur Web utilis est quip pour traiter les applets Java, l'applet tlcharge commence s'excuter ds qu'elle a fini de se tlcharger. Contrairement aux ActiveX, Java dispose d'un modle de scurit. Le systme garantit l'utilisateur un niveau de protection lev pour son systme. Au sein de l'applet, par exemple, il ne sera pas possible d'accder aux fichiers du disque dur du poste client.

Le poste client est totalement scuris en utilisant les Applets


D'autre part, les applets java sont tlcharges dynamiquement en mme temps que la page qui les rfrence avant d'tre lances sous le contrle du navigateur Web. Ce tlchargement en mmoire vive est effectu chaque visite de la page. Rien n'est install physiquement sur le poste client. Ce mode de fonctionnement diminue les performances et provoque un dmarrage plus long par rapport un contrle ActiveX, mais il vite toute pollution du systme par du code non dsir par l'utilisateur. Une page Web peur contenir, en plus d'une applet, n'importe quel autre lment HTML : diffrentes polices de caractres, des listes puces, des dessins, des liens, etc. Les applets ne forment qu'une partie d'une page hypertexte.

Problmes de compatibilit
Quand les applets sont apparues, il fallait un navigateur HotJava de Sun pour visualiser les pages Web qui les contenaient. Peu d'utilisateurs s'embarrassaient d'un segond navigateur uniquement pour exploiter une nouvelle fonctionnalit du Web. Les applets de Java ne sont devenues populaires que lorsque Netscape incorpora une machine Java virtuelle dans son navigateur, suivi rapidement par Internet Explorer. Toutefois, deux problmes sont survenus. Netscape ne suivait pas les versions plus modernes de Java et Microsoft hsitait entre supporter sans enthousiasme les versions obsoltes de Java et abandonner carrment la prise en charge.

Java Plug-in ... Serveur Tomcat


Pour surmonter ce problme, Sun a sorti un outil appel Java Plug-in. Ce Plug-in s'intgre en toute homognit dans votre navigateur et permet donc d'excuter des applets Java dans un environnement d'excution Java fourni par Sun. Cet environnement d'excution Java est tout simplement la Machine Virtuelle Java qui est lance par le navigateur. En maintenant le Plug-in jour, vous avez la garantie de toujours utiliser les caractristiques les plus rcentes et les plus importantes de Java.

Rcupration et installation du plug-in de la Machine Virtuelle Java pour le navigateur


Ce que nous venons de faire est ncessaire mais pas toujours suffisant. Nous venons de le voir, une applet correspond un programme qui fonctionne au sein d'une page Web. Cette page doit pouvoir tre consulte depuis n'importe quel lieu dans le monde, ce qui ncessite l'utilisation d'un serveur Web pour permettre le dploiement de la page. Dans le monde de Windows, il existe IIS (Internet Information Service), toutefois ce serveur n'est pas comptent quant aux critures propres Java. Nous allons utiliser un autre serveur Web gratuit qui est fourni avec JBuilder et qui s'appelle Tomcat. D'une part, ce serveur est capable de dployer les pages Web classiques (HTML) mais galement toutes les technologies propres Java comme les Applets, les JSP (Java Server Page), les Servlets, ... (Les JSP et les Servlets seront traites ultrieurement dans une autre tude).

Dans le cas des Applets, le serveur Tomcat sert uniquement de serveur de dploiement d'application Web. Contrairement aux Servlets et aux JSP, l'interprtation du code de l'applet n'est pas analys par le serveur, mais par la Machine Virtuelle Java intgre par le Plug-in. D'ailleurs si vous concevez des Applets sur votre machine sans les dployer, vous pouvez vous passer du serveur Tomcat.

Votre premire Applet - (sans utiliser le mode conception de JBuilder)


Retour sur la notion d'application
Avant de fabriquer notre premire applet, nous allons revenir sur notre premire application graphique afin d'tablir une comparaison, ce qui nous permettra de mieux comprendre ce qu'est une applet.

Une application doit toujours comporter la mthode main dans la classe principale. Par ailleurs, si nous dsirons l'affichage d'une fentre, votre classe principale doit hriter de JFrame. JFrame dispose de toutes les proprits ncessaires pour la gestion

complte d'une fentre. Voici le code rsultant de cette application.

TestApplication.java

Changement de cette application pour en faire une applet


Nous avons dcouvert en prambule qu'une applet est un programme qui tourne au sein d'une page Web. Ce n'est donc plus une application classique. C'est le navigateur par l'intermdiaire de la page Web qui sert de support et fait donc appel la machine virtuelle java (JVM intgre par le plug-in) pour s'occuper de l'applet. La mthode main n'existe plus. A la place la JVM lance la mthode init pour initialiser et excuter l'applet au sein de la page WEB. Pour que la classe principale soit reconnue comme une applet, elle doit hriter de JApplet.

TestApplet.java

Constitution de la page Web qui contient cette applet


Mise part la diffrence d'hritage et le choix de la mthode d'appel, on remarque que tout le contenu du code reste pratiquement identique. Ceci dit, ce n'est pas termin. Depuis tout l'heure nous parlons de page Web. Effectivement, il est ncessaire de rajouter une page HTML qui s'occupera d'intgrer cette applet au milieu des autres lments classiques que comporte une page Web, savoir ; les textes, les images, les listes, etc. L'intgration de l'applet se fait comme pour les autres lments, par l'intermdiaire d'une balise adapte et prdfinie qui s'appelle, tout simplement, <applet>. Cette balise dispose galement de paramtres qui permettent, entre autres, de spcifier l'applet grer ainsi que ses dimensions. D'autres paramtres sont disponibles, nous les tudierons ultrieurement. Ces trois paramtres sont un minimum et sont donc obligatoires.

TestApplet.html

Cration de ces deux fichiers avec JBuilder afin de tester cette premire applet
Nous allons effectivement crer ces deux fichiers et tester leurs fonctionnements mutuels. Dans un premier temps, notre test consistera lancer, tout simplement, notre page HTML dans l'ordinateur o a t conu l'applet. Il est en effet possible de crer des documents pour nous mme, afin de les consulter en temps utile sans se proccuper d'un service Web quelconque. Nous verrons ensuite, comment dployer cette page Web, afin qu'elle soit consultable depuis le rseau local ou mme depuis le rseau Internet. Il sera alors ncessaire d'utiliser (et donc de configurer) le serveur Web Tomcat que nous avons dj voqu en prambule.
Au vu de ce qui vient d'tre dit, nous devons, d'ors et dj, prendre un certain nombre de prcautions pour se prmunir des disfonctionnements et surtout se protger de l'extrieur puisque notre travail va devenir accessible tout le monde. Il est en effet prfrable, par souci de confidentialit, de sparer le code source de toute la partie compil, qui sera elle dployable ultrieurement sur le serveur Web.

Pour toutes mes applications Web, j'aurais donc un rpertoire <de travail> dans lequel, je vais stock tous les projets Web en cours avec l'ensemble de tous les sources, et un rpertoire <WEB> qui me servira de stockage de toutes les applications Web effectives et dployables sans qu'il soit possible d'atteindre les sources correspondants.
A l'aide de Jbuilder, nous allons fabriquer notre projet que nous appellerons TestApplet en tenant compte de toutes ces considrations.

Ecrivez ensuite le code source de l'applet vu plus haut en faisant appel, au pralable, l'expert de "Cration d'une nouvelle classe Java" afin de crer le fichier source correspondant (et au bon endroit). Faites en sorte de bien hriter de la classe de base JApplet.

Nous nous occupons ensuite de la page HTML. Dans ce cas, et malgr que cela ne soit pas bien pratique, il faut demander la cration d'un nouveau fichier.

Aprs avoir saisi l'ensemble de vos codes sources, vous pouvez compiler votre projet, il ne restera plus donc qu' le tester. Aprs la compilation, voici normalement l'organisation des fichiers que vous devez obtenir.

Il ne reste plus qu' tester cette applet. Il existe l'utilitaire <appletviewer> qui permet de tester juste la partie applet sans la page Web. De mon point de vue, le vritable test s'effectue au travers du navigateur que vous utilisez en supposant, bien entendu, que vous ayez dj install le plugin ncessaire. Nous allons prendre effectivement cette deuxme approche. Pour cela, il suffit d'utiliser l'explorateur de fichier et de doublecliquer sur l'icne reprsentant la page Web "TestApplet.html" qui par association lancera automatiquement le navigateur.

Voici ce que vous obtenez.

Vous remarquez que le contenu de l'applet est totalement identique au contenu de l'application que vous avez excut dans un premier temps. Seul le conteneur change. Dans le cas d'une application, le conteneur est une fentre. Pour l'applet, le conteneur est la page Web.
Contrairement ce que vous pouvez penser, la fabrication d'une applet demeure trs simple. C'est vrai que nous avons mis pas mal de temps avant de constituer notre premier exemple, mais il tait ncessaire de poser toutes les bases pour bien matriser la situation. Ce sera encore plus facile et plus rapide lorsque nous utiliserons le mode conception de l'interface JBuilder. Avant cela, j'aimerais que nous dployons cette applet afin qu'elle soit consultable partir d'un autre poste sur le rseau ou mme depuis Internet. Pour cela, il est ncessaire d'utiliser un service Web qui, dans notre cas, sera reprsent par le serveur Tomcat. Nous allons d'ailleurs le configurer afin qu'il soit oprationnel sur votre machine.

Configuration de Tomcat
Tomcat a dj t install avec Jbuilder, et comme lui, il est crit en Java. Toutefois, il est ncessaire de le configurer. Comme il est crit en Java, il faut lui fournir l'endroit o est install le JRE afin qu'il puisse se servir de la Machine Virtuelle Java. Nous allons mettre en oeuvre une variable d'environnement qui prcise l'endroit o se situe le JRE, savoir : JAVA_HOME.

Avec Windows 2000, pour crer ces variables d'environnement, cliquez avec le bouton droit de la souris sur l'icne "Poste de travail" et choisissez la rubrique "Proprits". Sur la bote de dialogue, slectionnez l'onglet "Avanc" et ensuite sur le bouton

"Variables d'environnement...". Enfin, cliquez sur le bouton "Nouveau..." dans la zone "Variables systme". A l'aide de l'explorateur, localisez l'endroit o se situe les deux entits et par copier-coller complter ces deux variables d'environnement comme ci-dessous.

Sous les dernires versions de Tomcat, cette partie n'est mme pas faire puisque l'installation de Tomcat intgre directement les variables d'environnement . (Tomcat 5 et suivant).

Utilisation du serveur Tomcat

Pour dmarrer Tomcat, il suffit de cliquer sur le fichier "startup.bat" dans le rpertoire "bin" du serveur. A tout moment, il sera possible de l'arrter en cliquant sur le fichier "shutdown.bat".

Lorsque vous activez Tomcat, une fentre "Dos" apparat et un certain nombre de choses sont excutes, notamment le choix du port de communication pour le protocole HTTP. Il existe un certain un standard pour les ports de communication. Le port 80 pour le protocole HTTP, le port 21 pour le protocole FTP, etc. Vous remarquez que Tomcat a choisi par dfaut le port 8080, ce qui donne la possibilit de garder votre serveur Web usuel comme IIS ou Apache et donc d'avoir deux serveurs Web sur votre machine. Si effectivement vous avez besoin des deux serveurs Web, il est judicieux d'avoir des ports diffrents pour viter les conflits et de l'extrieur de pouvoir choisir votre serveur. Enfin, si vous dsirez utiliser Tomcat comme votre unique serveur Web, vous pouvez rgler son port par dfaut sur la valeur 80. Ce rglage s'effectue dans le fichier "server.xml" qui se trouve dans le

rpertoire conf de Tomcat.

Lorsque le serveur Web Tomcat est dmarr, vous pouvez l'utiliser soit localement en donnant l'URL suivante votre navigateur "http://localhost:8080", soit "http://nomPosteOuDns:8080" si vous l'appeler depuis un autre ordinateur. Le numro du port est prciser si nous n'utilisons pas le mumro standard.

Si vous devez dployer vos propres applications Web, il est ncessaire d'tre un utilisateur habilit. En effet, par scurit, la page du gestionnaire d'applications Web de Tomcat n'est accessible qu'aux utilisateurs ayant un rle de manager, tandis que les pages d'administration de Tomcat sont rserves aux utilisateurs ayant un rle d'admin.
Pour attribuer un utilisateur ces deux rles, il faut diter le fichier "tomcat-users.xml" qui se trouve dans le rpertoire <conf> de Tomcat. En voici un exemple :

Comme tous les serveurs Web, Tomcat utilise un rpertoire par dfaut o nous pouvons placer toutes nos applications Web. Ce rpertoire dans Tomcat se nomme <webapps>.

Nous pouvons, ds lors, placer nos application Web dans ce rpertoire . Pour viter le mlange de toutes les informations, il est prfrable que chaque application Web soit place dans son propre rpertoire. Nous pouvons galement fabriquer ce que l'on appelle une archive Web (extention war) qui est spcialement conu pour le dploiement. Toutefois, cette archive possde une structure particulire, comme le descripteur de dploiement, qui n'est utile que pour les servlets et les pages JSP. Cette archive sera donc traite ultrieurement dans une autre tude. En phase de dveloppement et de test, il est pratique de configurer Tomcat de telle faon que le dploiement de votre application Web soit issue directement du sous-dossier <WEB/TestApplet> de votre arborescence de travail et que le serveur recharge automatiquement toute classe modifie. Une fois que tout est dfinitivement au point, vous pouvez ensuite dployer le rpertoire <TestApplet> dans le rpertoire <webapps> de votre serveur Web. Ainsi votre projet fait dfinitivement parti de votre serveur Web.

Attention : lorsque nous arrtons le serveur Tomcat et qu'ensuite nous le redmarrons, seules les applications Web faisant
parties du rpertoire par dfaut de Tomcat <webapps> sont automatiquement dmarres et prises en compte. Les autres applications Web, situes en dehors du serveur, dans des rpertoires de <travail>, devront tre relances manuellement, en utilisant le gestionnaire d'application Web dont le fonctionnement est prcis dans le chapitre suivant. Attention, ne mlanger pas les archives web qui comportent l'extention <war> et les archives classiques <jar>. Ces dernires sont prvues pour stocker l'ensemble des classes que comporte une application ou une applet dans un mme fichier. Par ailleurs, il est possible de la compresser. Dans le cas de l'applet, c'est intressant, puisque cela vite de faire systmatiquement une requte http pour chaque classe tlcharge, ce qui rduit considrablement le temps de rponse. Les archives <war> servent uniquement pour le dploiement, puisque une fois qu'elles sont effectivement dploye sur le serveur Tomcat, ce dernier les dsarchivent pour retrouver toute l'arborescence de dpart. En fait, rien n'empche de fabriquer des archives <jar> l'intrieur des archives <war>.
A la fin de cette tude, nous fabriquerons une archive.

Dploiement de notre applet


Nous allons maintenant faire en sorte que notre applet soit consultable partir d'un autre poste sur le rseau ou mme depuis Internet.

Nous allons donc la dployer en se servant du serveur Tomcat tout en conservant notre rpertoire d'tude. Nous allons, en fait, indiquer au travers de Tomcat que notre rpertoire <WEB/TestApplet> o se trouve notre applet ainsi que notre page HTML est autoris tre consulte depuis l'extrieur.
Pour cela, il faut, bien entendu, activer votre serveur tomcat et visualiser la page d'accueil. Cliquer ensuite sur le lien "Tomcat Manager" pour pouvoir intgrer votre application Web (Il faut que vous ayez les droits requis - manager - pour tre habilit assurer cette gestion ). Une bote de dialogue apparat pour requrir votre nom de manager et votre mot de passe associ. Aprs validation, vous entrez effectivement dans le gestionnaire des applications Web Tomcat qui vous montre, entre autre, les applications dj disponibles.

Vous n'avez plus qu' prciser votre URL complte de votre rpertoire d'tude (file doit tre ajout si votre rpertoire se trouve sur le mme ordinateur que le serveur Tomcat). Attention l'orientation des sparateurs de rpertoires et fichiers. C'est comme pour les URL, il faut utiliser le trait de fraction " / " . Il suffit ensuite de valider votre URL en cliquant sur le bouton "Installation".

Vous avez une autre possibilit :

Si vous ne dsirez pas changer tous les " \", vous pouvez crire au dbut : file:// Par contre, dans ce cas l, il faut indiquer, dans la rubrique Chemin, le nom de l'application Web prciser dans l'URL, savoir ici

: /TestApplet

Votre application Web est maintenant intgre et gre par le serveur Tomcat. Il est possible, ds lors, de l'arrter de la recharger et mme de la retirer lorsque vous aurez effectu les diffrents tests ncessaires. Ceci dit, vous pouvez conserver cet emplacement titre dfinitif, pourquoi pas !

Votre application Web est localisable par le chemin /TestApplet. Pour la lancer, il faudra donc prciser cette localisation. .
Maintenant, toute est prt. Il suffit d'utiliser votre navigateur et de taper votre URL en prcisant juste le nom de votre application Web </TestApplet> ainsi que la page Web lancer dans votre application Web </TestApplet.html>.

Vous pouvez mme ne pas prciser le nom de la page Web. Par contre, dans ces conditions, il est impratif de choisir comme nom de page Web : "index.html". Sauf exception, c'est ce que je ferais systmatiquement afin que le nom de l'URL soit facile retenir et donc la plus courte possible.
Je vous invite justement changer le nom de "TestApplet.html" en "index.html" pour tester cette dernire possibilit.

Attention : Je le reprcise, lorsque nous arrtons le serveur Tomcat et qu'ensuite nous le redmarrons, seules les applications
Web faisant parties du rpertoire par dfaut de Tomcat <webapps> sont automatiquement dmarres et prises en compte. Les autres applications Web, situes en dehors du serveur, dans des rpertoires de <travail>, devront tre relances manuellement, en utilisant le gestionnaire d'application Web dont le fonctionnement est prcis dans le chapitre suivant.

Le cycle de vie d'une applet


Les quatres mthodes init, start, stop, destroy de la classe JApplet (ces mthodes sont hrites de Applet qui est la classe parente de JApplet) fournissent le cadre de construction d'une applet. Nous dcrivons brivement ces mthodes en indiquant l'endroit o elles sont appeles et la nature du code qu'elles vont contenir. Nous avons dj utiliser les mthodes start et stop respectivement dans les threads et les timers. Effectivement une applet est un thread, puisque pendant que le programme fonctionne, l'utilisateur peut avoir envi de changer de pages, et donc le systme doit, tout moment, tre disponible afin de pouvoir rpondre aux vnements lis la souris.

void init();

Cette mthode rassemble toutes les initialisations ncessaires l'applet. Elle est comparable un constructeur. Elle est appele automatiquement par le systme quand Java lance l'applet pour la premire fois. En principe, une applet devra traiter les valeurs param (voir plus loin) et ajouter des composants l'interface utilisateur. Les applets possdent ventuellement un constructeur par dfaut, mais l'usage est d'effectuer toutes les initialisations dans la mthode init et non dans le constructeur par dfaut. Cette mthode est appele automatiquement aprs l'appel par Java de la mthode init. Elle est appele de nouveau chaque fois que l'utilisateur revient la page contenant l'applet aprs avoir parcouru d'autres pages. Notez que la mthode start peut-tre appele plusieurs fois, la diffrence de la mthode init. Par consquent, le code ne devant tre excut qu'une seule fois doit se trouver dans la mthode init et non dans la mthode start. La mthode start va relancer un thread de l'applet, par exemple pour ractiver une animation. Il est inutile d'implmenter cette mthode (ni la mthode stop) si l'applet ne contient rien qu'il soit ncessaire de suspendre. Cette mthode est appele automatiquement quand l'utilisateur quitte la page sur laquelle se trouve l'applet. Elle peut donc tre appele plusieurs fois pour la mme applet. Son but est de permettre l'arrt d'une activit gourmande en temps UC, qui ralentit le systme lorsque l'utilisateur ne s'intresse pas l'applet. Il ne faut pas appeler directement cette mthode. Si l'applet n'effectue pas d'animation, ne joue pas de fichier audio, n'effectue pas de calcul dans un thread, il n'est en principe pas ncessaire d'employer cette mthode. Java nous garantit que cette mthode est appele lorsque le navigateur s'arrte normalement. Puisqu'une applet est associe une page Web, vous n'avez pas vous proccuper de supprimer le panneau. Cette tape se fera automatiquement la sortie du navigateur.

void start();

void stop();

void destroy();

Attributs de la balise <applet>


La mthode la plus simple pour utiliser <applet> est de fournir seulement les trois attributs obligatoires : code, width et height. Il faut ensuite spcifier le nom de la classe qui correspond l'applet, suivi de ces dimensions. Attention toutefois, ce balisage correspond une criture XML, ce qui sous-entend que les noms et les attributs respectent les majuscules et les minuscules. Par ailleurs, les guillemets (simple ou double) sont toujours ncessaires. Nous pouvons rajouter d'autres attributs dont la liste est prcise ci-dessous.

code width height codebase align hspace vspace archive

Cet attribut (obligatoire) est utilis pour spcifier le fichier de classe d'applet du plus haut niveau (classe principale), qui tend Applet ou JApplet. Si l'applet se trouve dans un paquetage, il convient alors de le prciser : nomPaquetage.nomApplet.class Cet attribut est utilis pour spcifier la largeur en pixels de la fentre rserve l'applet. Obligatoire Cet attribut est utilis pour spcifier la hauteur en pixels de la fentre rserve l'applet. Obligatoire Cet attribut est utilis pour spcifier le dossier principal des applets. L'attribut code est interprt par rapport ce dossier. Si vous ne spcifiez pas cet attribut, le dossier de la page HTML actuelle sera utilis par dfaut. Cet attribut est utilis comme l'attribut align de img, pour spcifier l'alignement de l'applet l'intrieur de la page Web. Les valeurs autorises sont left, right, top, bottom, et middle. Cet attribut est employ comme l'attribut hspace de img, pour spcifier l'espace vide en pixels rserv droite et gauche de l'applet. Cet attribut est employ comme l'attribut vspace de img, pour spcifier l'espace vide en pixels rserv en haut et en bas de l'applet. Cet attribut est employ pour spcifier un fichier jar partir duquel les classes et les images doivent tre charges. Cet attribut est employ pour spcifier un nom utiliser pour les communications internes l'applet et galement pour permettre une communication entre diffrentes applets d'une mme page Web. Cet attribut est utiliser conjointement avec la mthode getApplet.

name

type

Uniquement pour les pages JSP : Cet attribut est obligatoire sin nous utilisons une page JSP et non plus une page HTML. Dans ce cas l, il sera utile de prciser la valeur "applet".

Puisque nous sommes dans le monde de Java, nous pouvons crire nos pages Web directement sous forme de pages JSP la place des pages HTML. Nous verrons leurs utilites dans une prochaine tude. Si c'est le cas, le nom de la balise est diffrente. Il s'agit cette fois-ci de la balise <jsp:plugin>. Un quatrime paramtre est alors obligatoire et prcise que ce plugin concerne une applet. Vous avez ci-contre l'quivalence de la balise <applet> que nous venons de traiter. Attention, dans ce cas l, le nom de la page Web doit tre "TestApplet.jsp".

Votre deuxime Applet - (utilisation du mode conception de JBuilder)

Mise en place du projet grce aux experts associs


Nous allons mettre en oeuvre une applet relativement simple qui nous permettra de comprendre l'utilisation de JBuilder sans avoir un code trop compliqu. Nous allons donc construire un nouveau projet message en tenant compte des critres que nous avons dj voqus, savoir : sparer vos codes sources de la partie dployer.

Ensuite, nous allons utiliser l'expert Applet qui est fourni dans la galerie d'objets en cliquant sur le bouton "Nouveau" et en slectionnant l'onglet "Web".

En cliquant sur l'icne "Applet", vous lancez alors l'expert qui propose 4 pages. La premire page s'intresse plus particulirement l'applet.

Vous pouvez passer directement la troisime page. Cette page concerne la page HTML. Nous retrouvons les attributs de la balise <applet>. Nous pouvons rgler galement la balise <title>.

Pour la dernire page de cet expert, nous pouvons demander ou pas la cration d'une configuration d'excution. Dans la plupart du temps, cela n'est pas ncessaire puisque l'excution se fait directement par le navigateur. Toutefois, vous pouvez tester votre

applet seule indpendemment de votre navigateur. Il faut alors valider cette option et utiliser l'utilitaire <appletviewer> disponible avec le JDK. Pour cette seule fois, nous allons valider cette option.

Grce cet expert, nous obtenons directement la cration des deux fichiers ncessaires, savoir la page HTML et l'applet qui s'incrira l'intrieur de cette page, ce qui donne un gain de temps et facilite grandement notre travail.
Dans l'ordre, nous allons construire d'abord l'applet et quand elle sera au point, nous rglerons ensuite la page HTML pour que la prsentation corresponde notre attente.

Mise en oeuvre de l'applet


Ds lors, il vous est possible de travailler comme les applications en faisant appel au mode conception. Compltez ensuite votre applet en ajoutant tous les composants ncessaires comme vous avez dj pris l'habitude de le faire. La conception d'une applet et identique la conception d'une fentre d'une application. D'ailleurs, le gestionnaire de disposition d'une applet est galement un BorderLayout. Vous avez aussi la possibilit ventuellement, comme une fentre de placer un menu sur la partie haute de l'applet. Ci dessous, vous avez le mode conception en cours de mise au point.

Une fois que vous avez plac tous les composants ncessaires l'applet et que vous avez grer l'vnement li au bouton, vous pouvez excuter votre applet. Vous avez alors la fentre AppletViewer qui est lance. Cette fentre est fournie avec le JDK et ce programme est prvu pour tester les applets. Attention toutefois, la dimension de la fentre n'a rien voir avec les dimensions que vous avez choisi pour votre applet. Si le comportement de votre applet ne vous satisfait pas, vous pouvez revenir au mode conception et corriger les erreurs retenues. Vous pouvez alors relancer indfiniment l'AppletViewer jusqu' ce que vous soyez pleinement satisfait.

Mise en oeuvre de la page HTML


Quand tout vous semble correct, vous pouvez vous occuper alors de la page Web HTML. Il suffit alors de faire les modifications ncessaires pour que l'apparence soit votre convenance. J'ai enlev personnellement des lignes de code qui me semblaient pas ncessaires.

Juste un dtail. Le nom de la page Web donn par l'expert est le mme nom que l'applet. Je prfre, comme je l'ai dj voqu, changer ce nom et proposer plutt "index.html" pour que l'URL soit plus facile crire lorsque nous la dploierons effectivement sur le serveur Web.

Test par le mode vue de la page HTML


Il est possible d'utiliser un autre mode de test en slectionnant tout simplement le mode vue de la page HTML. Toutefois, pour que le rsultat soit correct, il est ncessaire, au pralable, de compiler l'applet.

Cette fois-ci, tout est prt. Vous pouvez ds lors dployer votre applet en utilisant la technique que nous avons dj mis en oeuvre par l'intermdiaire du serveur Tomcat.

Passer des informations une applet


Les applets ont accs des paramtres localiss dans la page Web comme le font les applications pour prendre des informations dans la ligne de commande. On utilise pour cela dans la page Web les balises param (ou jsp:param pour les pages jsp) et dans l'applet la mthode getParameter. Dans le programme prcdent, le message de dpart de l'applet tait "Bienvenue" ou "Salut tous". Plutt, que ce message soit fig une fois pour toute au sein de l'applet, il aurait t plus judicieux de laisser le choix celui qui conoit la page Web. Du coup, nous avons le comportement d'une applet qui est variable et relative au contenu de la page Web. Nous allons donc modifier notre prcdent projet pour introduire ces nouvelles exigences.

Ancien code de l'applet

Nouveau code avec la mthode getParameter L'argument "message" qui se trouve dans la mthode getParameter correspond l'attribut name de la balise param. Cette mthode renvoie la valeur donne par l'attribut value de cette mme balise.

Nouvelle page HTML avec la balise param

Nouvelle page d'accueil telle qu'elle apparat au chargement de l'applet.


Il est bien sr possible d'avoir plusieurs paramtres au sein d'une mme applet. Il peut y avoir donc plusieurs balises param.

Utilisation des mthodes start et stop en plus de init


Nous allons mettre en oeuvre une applet qui affiche un message et qui dfile le long de sa zone active. Le contenu et la taille du message sont dlivrs par la page HTML. La couleur du fond de l'applet et la couleur du texte seront similaires aux couleurs de la page Web.

Mise en place du projet


Vous allez donc construire un nouveau projet en tenant compte des critres dj abords antrieurement en sparant bien vos sources du rsultat (page HTML plus la version compile de l'applet dans le rpertoire <WEB\DefilementApplet>) afin de permettre le dploiement sur le serveur Web. Fabriquer donc un projet que vous nommerez "DefilementApplet". Faites ensuite appel "l'Expert applet" afin de construire l'applet BandeauDefilant avec sa page HTML associe. Plutard, pensez renommerez la page HTML en "index.html" afin que la dsignation de l'URL soit la plus courte possible.

Le but de ce chapitre est de montrer l'utilit des mthodes start et stop de l'applet. Il convient donc qu'elles soient automatiquement prsentes dans le code de l'applet. Aussi, slectionnez la rubrique "Crer les mthodes standard".

Mise en oeuvre de l'applet BandeauDefilant


Nous nous occupons d'abord de l'applet. Pour raliser le dfilement, nous avons besoin d'un systme qui envoie des tops d'horloge. A chacun de ces tops, nous proposons ensuite un dplacement du texte. Pour cela, nous utilisons un objet de la classe Timer en prcisant, au moment de sa cration, la priode en ms entre chaque top d'horloge ainsi que l'couteur qui prend en compte cet vnement. L'couteur est une classe qui contrle constamment s'il survient un vnement associ au type de l'couteur. Dans notre cas, la classe est l'applet elle mme, et l'couteur est de type ActionListener. Cette prcision se fait par l'intermdiaire du mot rserv implements.

Lorsqu'effectivement un vnement de type ActionListener survient comme justement le top d'horloge de la classe Timer, la mthode associe cet vnement est sollicite. Dans le cas d'un vnement de type ActionListener, il s'agit de la mthode actionPerformed. C'est justement dans cette mthode qu'il faut raliser le dplacement.

Le dfilement du texte n'est utile que lorsque la page Web est prsente. Si l'utilisateur, consulte une autre page, l'applet elle reste

active (tant que le navigateur est en fonction), il serait alors prfrable d'arrter le dfilement pour ne pas prendre trop de ressource systme. C'est le but de la mthode stop de l'applet. Justement, il existe galement une mthode stop sur le timer qu'il suffit de solliciter pour ce cas de figure. Lorsque nous revenons de nouveau sur la page Web qui possde l'applet, il faut de nouveau ractiver le timer par sa mthode start qui, elle-mme, est active par la mthode start de l'applet. Cette dernire est d'ailleurs automatiquement lance au tout dpart, juste aprs la cration de l'applet.
La classe Font possde des mthodes deriveFont pour changer juste un lement de la fonte sans perturber le reste. Cette mthode est surdfinies pour changer uniquement le style, la taille, ou mme les deux :

1. Font deriveFont (int style) : Change uniquement le style de la fonte. 2. Font deriveFont (float taille) : Change uniquement le style de la fonte. 3. Font deriveFont (int style, float taille) : Change la taille et le style de la fonte.

Rglages sur la page Web index.html

Quelques mthodes intressantes javax.swing.JApplet


Renvoie un handle sur l'environnement du navigateur de l'applet. Avec la plupart des navigateurs, on peut utiliser cette information pour agir sur le navigateur o s'excute l'applet. Cette mthode est galement indispensable lorsqu'on dsire communiquer entre diffrentes applets sur une mme page Web. Dans ce cas de figure, une fois que l'on connait le contexte de l'applet, il suffit d'utiliser ensuite la mthode getApplet. Affiche la chane spcifie dans la barre d'tat du navigateur. Attention, le navigateur exploite galement la barre d'tat pour afficher des messages du style "Applet started", lesquels craseront ventuellement votre prcieux message. Renvoie un objet image qui encapsule l'image spcifie par l'URL. Si cette image n'existe pas, la mthode retourne immdiatement la valeur null. Sinon, un thread distinct est activ pour charger l'image. La deuxime version permet de rcuprer une image par rapport une adresse relative. Renvoie un objet AudioClip, qui contient le fichier son spcifi par l'URL. Vous utilisez ensuite la mthode play pour jouer effectivement le fichier. Prend un paramtre dfini par la directive param dans la page Web HTML. Attention aux majuscules / minuscules ! Rcupre l'URL de la page Web HTML contenant l'applet. Cela permet de rfrencer une autre page Web relativement cette URL. Rcupre l'URL du code de l'applet. C'est assez frquent que la classe qui reprsente l'applet soit dans un rpertoire diffrent de la page HTML.

AppletContext getAppletContext();

void showStatus(String message);

Image getImage(URL url); Image getImage(URL url, String nom); AudioClip getAudioClip(URL url); String getParameter(String nom); URL getDocumentBase(); URL getCodeBase();

java.applet.AppletContext
Applet getApplet(String nom); Renvoie l'applet dsigne qui se trouve dans le contexte courant, ou bien null si elle n'existe pas. La recherche n'est faite que dans la page Web courante. Cette mthode s'utilise conjointement avec l'attribut name de la balise applet de votre page Web. C'est en effet cet attribut qui dtermine le nom de chacune des applets prvues dans la page Web, ce qui permet de les diffrencier. Renvoie la liste de toutes les applets d'un mme contexte, c'est dire d'une mme page Web. Affiche une nouvelle page Web dans un cadre du navigateur. dans la premire variante de cette mthode, la nouvelle page remplace la page courante. La seconde variante utilise la chane pour identifier le cadre cible. La chane cible peut-tre : void showDocument(URL url); 1. "_self" : afficher dans le cadre courant, quivalent la premire variante.

Enumeration getApplets();

void showDocument(URL url, String cible);

2. "_parent" : afficher dans le cadre parent. 3. "_top" : afficher dans le cadre situ le plus haut dans la hirarchie. 4. "_blank" : afficher dans une nouvelle fentre sans nom et place audessus. 5. La chane cible peut indiquer le nom d'un cadre.

java.net.URL
URL(String nom); URL(URL base, String nom); URL getDocumentBase(); URL getCodeBase(); void play(URL url); void play(URL url, String nom); AudioClip getAudioClip(URL url); AudioClip getAudioClip(URL url, String nom); Image getImage(URL url); Image getImage(URL url, String nom); URLConnection openConnection(); Cre un objet URL partir d'une chane dcrivant une URL absolue. Cre un objet URL relatif. Lorsque la chane nom dcrit une URL absolue, l'URL de base est ignore. Sinon, elle est interprte comme un rpertoire relatif l'URL de base. Rcupre l'URL de la page Web HTML contenant l'applet. Cela permet de rfrencer une autre page Web relativement cette URL. Rcupre l'URL du code de l'applet. C'est assez frquent que la classe qui reprsente l'applet soit dans un rpertoire diffrent de la page HTML. La premire variante joue un fichier audio spcifi par l'URL. La seconde utilise la chane nom pour spcifier un chemin relatif l'URL. Si le clip audio ne peut tre trouv, il ne se passe rien. Rcupre un clip audio l'URL spcifie. La seconde version utilise la chane nom pour spcifier un chemin relatif l'URL. Les mthodes renvoient null lorsque le clip audio est introuvable. Rcupre une image l'URL spcifie. Ces mthodes renvoient toujours immdiatement un objet image, mme lorsque l'image n'existe pas. Les donnes de l'image ne sont en fait charges qu'au premier affichage de l'image. Renvoie un objet URLConnection qui gre la connection la ressource, notamment un serveur Web.

Pour comprendre l'utilit de certaines de ces mthodes, nous allons construire une applet qui possdera une image de fond, cette image se trouvant au mme niveau que la page JSP. Cette applet comportera galement un menu qui nous permettra de choisir une page Web et de l'afficher dans le cadre se situant en dessous. Enfin, nous proposerons l'affichage d'un message simple dans la barre d'tat du navigateur lorsque l'utilisateur passera le curseur de la souris au dessus d'une rubrique du menu.

L'image de fond sera place sur un panneau, lequel sera dispos sur la partie centrale de l'applet.

PanneauImage.java

Partie de code de AppletImageLien.java

la mthode getDocumentBase de l'applet permet de rcuprer l'URL (adresse) relative, ce qui signifie, par exemple, que le systme va rechercher un fichier "chouette.jpg" qui se trouve au mme emplacement (mme rpertoire) que le document Web HTML.

Pour afficher un texte en transparence, il est possible d'utiliser la classe Color avec un de ses constructeurs 4 arguments de types float. Ces arguments sont dans l'ordre : le rouge, le vert, le bleu, l'alpha (opacit). Chacun des arguments doit avoir une valeur comprise entre 0 et 1. Dans le code ci-dessous, le message Bienvenue s'affiche avec une opacit de 30% ou si vous voulez une transparence de 70%.

Rglage de la couleur bleu transparente 70% du message "Bienvenue !"


Le code suivant vous explique comment afficher un message sur la barre d'tat lorsque l'utilisateur passe le curseur de la souris au dessus la rubrique "Premire page" du menu principal. Lorsqu'on effectue la slection en cliquant avec la souris sur la mme rubrique, la page correspondante est affiche dans le cadre principale situ sur la partie basse de votre navigateur.

Partie de code de AppletImageLien.java


Il faut bien comprendre que la page d'accueil de notre projet s'appelle index.htm, et c'est cette page qui constitue le jeu de cadres. Le cadre qui se situe sur la partie haute s'appelle choix, et c'est que se trouve notre page HTML. Le cadre qui se trouve sur la partie basse s'appelle principale, et c'est dans cette zone que va apparatre toutes les pages Web consulter.

index.htm
Il est bien sr possible d'afficher des pages qui sont en dehors de notre projet et en dehors de notre serveur Web, il suffit de prciser alors l'URL complte en donnant l'adresse absolue. Par contre, comme nous venons de le voir, l'utilisation de la mthode getDocumentBase (ou getCodeBase) permet de rfrencer d'autres pages relativement.

URL absolue
Utilisez la proprit toolTipText pour placer une bulle d'aide sur le composant concern.

proprit toolTipText
Pour terminer, n'oubliez pas de rgler la proprit JMenuBar sur la barre de menu que vous avez cre en mode conception, sinon elle n'apparatra pas l'affichage de votre applet.

proprit JMenuBar

Communication entre applets en option

Nous allons mettre en oeuvre un projet qui permet d'tablir une communication entre plusieurs applets au sein d'une mme page Web. Plus prcisment, nous allons proposer un affichage sur l'applet n2 d'un message issu d'une zone de saisie qui se trouve sur l'applet n1. La communication s'tablira lorsque l'utilisateur validera la proposition avec le bouton "Envoyer". Pour cela, vous allez constituer un projet que vous appellerez Communication et, comme c'est une page Web, vous allez le placer dans le rpertoire ROOT du serveur Tomcat, pour tre sr qu'il fonctionnera correctement.

En utilisant l'expert appropri, vous allez ensuite construire la premire applet Applet1 de dimension <200, 50> et qui doit se situer dans le paquetage communication (c'est juste titre d'exercice). Cette applet comporte une zone de saisie - saisie - qui se situe sur la partie nord. Elle comporte galement un bouton - boutonEnvoyer - qui permettra d'envoyer le message issu de la zone de saisie et qui est plac sur la partie sud.

En procdant de la mme manire, vous allez constituer la deuxime applet de mme dimension - Applet2 - qui comporte juste un label - message - et qui doit tre plac sur la partie centrale. Vous ferez en sorte que le texte de ce message soit systmatiquement centr horizontalement en utilisant la proprit horizontalAlignemnt. Par ailleurs, vous pouvez en profiter pour choisir une fonte votre convenance.

index.html
Il faut constituer maintenant la page Web. Il suffit de placer dans la page JSP les deux plugin correspondant aux deux applets. Il peut tre judicieux de proposer un alignement, respectivement gauche pour l'applet n1 et droite pour l'applet n2. Pensez bien prfixer le paquetage lorsque vous dsignez votre applet.

mthode changerMessage dans Applet2


Nous pouvons maintenant nous occuper de la communication entre les applets. Dans Applet2, il suffit de construire une mthode qui permettra de changer le teneur du texte du label message. Cette mthode s'intitule changerMessage et rcupre la chane de caractre issue de la premire applet.

C'est lorsque l'oprateur agit sur le bouton "Envoyer" que la communication avec les applets s'effectue rellement. C'est donc au sein de la mthode qui gre l'vnement de l'action sur le bouton que se situe le passage du message. Dans un premier temps, il est ncessaire de connatre les applets qui se trouvent sur la page Web. Il faut donc rcuprer le contexte grce la mthode getAppletContext que nous avons dj utilis par ailleurs. Rappelons que le contexte correspond en fait la page Web actuelle. Une fois que le contexte est rcupr, il est alors possible de connatre la liste des applets utilises grce la mthode getApplets. Il est noter qu'il n'est possible, par ce principe, de communiquer uniquement qu'avec des applets qui se trouvent sur la mme page Web. La mthode getApplets renvoie un objet de type Enumration. Cet objet possde deux mthodes, notamment la mthode hasMoreElements qui retourne vrai s'il existe encore des valeurs numrer, et permet donc de dterminer si une boucle doit se poursuivre. La deuxime mthode est nextElement qui, au sein de la boucle, permet de retourner un objet de type Object et qui correspond l'lment suivant de la liste (ou le premier si c'est la premire occurence).

Une fois que l'on a rcupr le nom de la classe qui correspond l'applet n2 - communication.Applet2 - il est alors possible d'utiliser par transtypage la mthode correspondante au passage du message - changerMessage. On donne alors en paramtre le texte issu de la zone de saisie.

Fabrication d'une archive


Nous allons reprendre l'exercice du chapitre prcdent en faisant un nouveau projet que nous appelerons Archive. Le but de se projet est de justement crer une archive pour la dployer ensuite avec la page HTML. Nous avons dj fait remarquer ces archives sont prvues pour stocker l'ensemble des classes que comporte une application ou une applet dans un mme fichier. Dans le cas de l'applet, c'est intressant, puisque cela vite de faire systmatiquement une requte http pour chaque classe tlcharge, ce qui rduit considrablement le temps de rponse.

Gnralement, nous fabriquons une archive lorsque le projet comporte beaucoup de classes. Ici, cette archive n'est pas indispensable, c'est juste pour mettre en oeuvre les techniques ncessaires dans le cas o un jour cela s'avre utile.
Faites exactement comme pour le projet prcdent, la seule diffrence tant ventuellement le nom du paquetage que j'ai dsign personnellement par "archive". Il existe galement une petite diffrence sur la page index.html. Nous allons le voir juste un petit peu aprs. Une fois que tout est prt, nous allons demander fabriquer une archive de notre projet. Je rappelle que l'extention de cette archive est <jar>. Pour cela, cliquez sur le bouton "nouveau" pour faire apparatre la galerie d'objet que nous connaissons dj bien. Dans la rubrique Construction, slectionnez "Construction d'archives".

Vous avez l'expert correspondant qui s'affiche. Les rglages se font en cinq tapes. La premire concerne le type d'archive. Dans notre cas, il suffit de prciser que c'est pour une applet.

La deuxime est importante. Il faut vraiment que votre archive soit place au bon endroit pour qu'elle puisse tre dploye au mme titre que la page Web. Elle doit donc tre aplce au mme niveau que la page Web. Dans cette tape, vous pouvez laisser les slections par dfaut qui prcise que l'archive doit tre compresse et tre automatiquement fabrique lorsque nous construisons notre projet.

Sauf si vous avez des bibliothques supplmentaires intgrer, vous pouvez passer la dernire tape. Il faut inclure le manifeste qui dcrit en fait la structure de l'archive. Le serveur Web se servira de ce manifest pour savoir quoi faire. La slection par dfaut suffit pour la plupart des cas.

Comme promis, il faut maintenant rgler la page Web pour qu'elle prenne toutes les classes ncessaires, mais cette fois-ci au travers de l'archive. C'est trs facile faire, il suffit juste de prendre l'attribut archive de la balise applet de chacune de ces classes et de prciser le nom de l'archive.

Vous pouvez ds lors lancer la construction de l'ensemble du projet. Pendant cette construction, l'archive est automatiquement mise en oeuvre. Vous pouvez ensuite effectuer votre dploiement sur le serveur Tomcat et tester votre rsultat.

Pour en savoir plus sur les archives.

Fentre pop-up lance par une applet


Une applet se trouve sur une page Web dans un cadre dont la taille est fixe par les attributs width et height de la balise <applet>, ce qui peut reprsenter une contrainte gnante. Il est possible d'utiliser une fentre pop-up pour faire un meilleur emploi de l'espace disponible.
En fait, cela ne prsente aucune difficult particulire. Il suffit de crer une fentre classique en hritant de la classe JFrame. L'applet se charge ensuite de la crer et de l'afficher au moment dsir. Afin de valider cette particularit, nous allons mettre en oeuvre une toute petite applet qui comporte juste un bouton et qui va permettre d'afficher ou de masquer une fentre reprsentant une calculatrice rudimentaire.

Mise en oeuvre de la fentre


Vous pouvez commencer par construire la fentre comme vous avez l'habitude de le faire. Il suffit donc qu'elle hrite de la classe

JFrame.

public class Popup extends JFrame {


Vous placez ensuite toutes les composants ncessaires, comme les boutons reprsentant les chiffres, la zone d'dition, etc.

Juste une petite remarque. Il ne s'agit pas d'une application classique vu que cette fentre doit tre active par une applet. Cette classe ne doit donc pas comporter de mthode main.

Mise en oeuvre de l'applet


Vous pouvez ensuite construire votre applet, avec la page HTML correspondante, en proposant une dimension relativement rduite puisque la surface doit correspondre la dimension du bouton dsir.

La fentre Popup doit tre un attribut de l'applet.

Par ce systme, l'objet fentre popup existe mais sans tre encore visible. Toutefois, elle est prte fonctionner. Il suffira alors de la rendre visible en lanant la mthode adapte (setVisible) lorsque l'utilisateur clique sur le bouton "Calculatrice".

Conclusion : Finalement, c'est facile de fabriquer une fentre pop-up. Pensez bien qu'il s'agit d'une fentre classique sans tre active par une mthode main vu que ce n'est pas une application. Nous aurions pu aussi proposer une fentre qui s'affiche automatiquement ds l'apparition de l'applet et qui s'enlve par la suite lorsque nous consultons une autre page Web. Il convient dans ce cas l, d'utiliser respectivement les mthodes start et stop de l'applet.

Vous allez mettre en oeuvre une applet qui permettra d'tablir des conversions entre l'uro et le Franc. A l'utilisation, il suffit de slectionner l'onglet qui vous convient pour excuter le calcul correspondant. Dans JBuilder (donc dans Java), vous disposez d'un conteneur d'onglets qui correspond la classe JTabbedPane, et qui se situe sur la palette "Conteneurs Swing". Chaque onglet est reprsent par la suite par un panneau (JPanel), et il suffit de rgler la proprit constraints pout avoir le bon libell.

Par ailleurs, il existe une classe NumberFormat qui formate et analyse les nombres d'une manire spcifique aux paramtres locaux (paramtres propres la France par exemple). Elle me parat utile pour obtenir un affichage habituel pour les valeurs montaires. Cette classe dispose d'une mthode statique getNumberInstance qui retourne un objet du type NumberFormat qui correspond aux paramtres locaux installs dans l'ordinateur. Elle possde galement une mthode qui permet d'indiquer le nombre de chiffres aprs la virgule et qui s'appelle setMaximumFractionDigits. Enfin, il suffit d'utiliser la mthode format de l'objet reprsentant NumberFormat qui retourne la chane formate par rapport un rel pass en argument.

Vous allez galement contruire une applet qui propose deux animations en alternance, soit un texte qui dfile sur la partie basse, soit, dans cette mme zone, un texte qui se dveloppe lettre aprs lettre. Le passage d'une animation l'autre s'effectuera toute les 5 secondes. L'astuce pour raliser cette permutation, est d'utiliser le gestionnaire CardLayout sur le panneau du bas, et c'est un timer qui gre la commutation. Enfin, le texte animer sera donner dans la page HTML.