Etudes des API Java pour la génération de code Flash

publicité
IPST-CNAM
39, allées Jules Guesde
BP 61517
31015 Toulouse cedex 6
FRANCE
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
CENTRE REGIONAL DE TOULOUSE
RAPPORT
présenté en vue d’obtenir
L’EXAMEN PROBATOIRE
DU DIPLOME D’INGENIEUR CNAM
en
INFORMATIQUE
OPTION SYSTEMES D’INFORMATION
par
Patrick DUBERNET
Etudes des API Java
pour la génération de code Flash
Date de la soutenance :
Mardi 15 Mai 2007
Membres du jury :
Président :
Examinateur :
Examinateur :
Professeur Pollet
Professeur Hadj Batatia
Professeur Christophe Piombo
Remerciements
Je tiens à remercier Messieurs Eric-Marc MAHE et Alain BARBIER du service
Clients Solutions de la société Sun Microsystems, pour avoir donné des
informations concernant le produit Java/J2EE, répondu à plusieurs de mes
questions et m’avoir soutenu durant mes recherches.
Merci à Monsieur Stuart MacKay de la société Flagstone Software Ltd, qui
m’a présenté son framework Transform SWFTM pour mieux comprendre
l’intérêt des API Java pour la génération de code Flash.
Merci à Monsieur Sébastien FRAYSSE Directeur des Technologies de
l’Innovation de la société i3M, pour avoir répondu à plusieurs de mes
questions concernant la technologie Flash.
Merci à Madame Dominique BUREAU des Editions O’Reilly®, pour m’avoir
renseigné sur les documents concernant les API Java.
Merci aux enseignants Messieurs Hadj BATATIA, Xavier CREGUT, Pierre
GAMBAROTTO et Romulus GRIGORAS du Centre Régional du CNAM
Toulouse pour l’éclairage professionnel qu’ils ont su m’apporter durant mes
études et mes recherches.
Merci à Thierry DUBERNET et son épouse Marie, qui suivent mon travail et
m’encouragent depuis plus de cinq ans.
Enfin, je n’oublie pas mes amis (tout particulièrement Ionut MIHALCEA,
Davide TORTORA, Mathieu HOLDERBAUM, Thierry CARRERE, Véronique
DUMOUTIER et Olivier GESTA), ainsi que ma famille, pour le soutien
inconditionnel dont ils ont fait preuve.
Table des Matières
INTRODUCTION.............................................................................................................................1
ADOBE MACROMEDIA FLASHTM...............................................................................................2
I.
1.
2.
3.
L’EDI ADOBE MACROMEDIA FLASHTM ........................................................................................ 3
LES LANGAGES FLASH ET ACTIONSCRIPT : ................................................................................... 5
LES FORMATS SHOCKWAVE FLASH (.SWF) .................................................................................. 6
a)
Les formats d’édition........................................................................................................ 6
b)
Le format de publication ................................................................................................... 6
c)
Le mode autonome .......................................................................................................... 6
II.
1.
ARCHITECTURE TROIS TIERS/WEB DYNAMIQUE ...............................................................7
UN PEU D’HISTOIRE – ARCHITECTURE « N » TIERS ........................................................................ 8
L’architecture trois tiers.................................................................................................... 8
En faveur de Java/J2EE .................................................................................................... 9
2.
LE MODELE MVC STANDARD ................................................................................................... 10
a)
Les étapes de fonctionnement ......................................................................................... 11
b)
Les composants/conteneurs ............................................................................................ 12
i.
Les servlets .............................................................................................................. 12
ii.
Les pages JSP ........................................................................................................... 13
iii. Les Beans ................................................................................................................. 14
3.
L’INTEROPERABILITE ........................................................................................................... 15
4.
FLASH ET LES APPLICATIONS DISTRIBUEES ................................................................................. 16
5.
TECHNOLOGIES NECESSAIRES ................................................................................................. 18
III.
1.
2.
3.
4.
IV.
a)
b)
INTERFACE GRAPHIQUE (API/FRAMEWORK) ...................................................................19
OPPORTUNITES DE L’UTILISATION DE JAVA ................................................................................ 19
LES API JAVA (ORIENTEES PERSONNALISATION SWF) ................................................................. 19
LES API JAVA EVOLUEES (ORIENTEES RIA) ............................................................................... 20
LA CREATION DE CONTENUS « RICHES » ................................................................................... 20
API JAVA POUR GENERER DU CODE FLASH ......................................................................21
LA SOLUTION ADOBE MACROMEDIA FLEXTM ................................................................................ 21
LA SOLUTION OPENLASZLOTM ................................................................................................. 22
LES API DE FLAGSTONE TRANSFORM SWFTM ............................................................................. 22
ARCHITECTURE DE NOUVELLE GENERATION ................................................................................. 23
LA COMMUNICATION ENTRE FLASH ET UN SERVEUR D’APPLICATION JAVA ............................................ 24
a)
Interaction entre une animation Flash et une base de données............................................. 24
b)
Architecture et mécanisme interne du serveur de présentation ............................................. 27
c)
Côté client (Flash PlayerTM) ............................................................................................. 28
6.
LA POSITION DE SUN MICROSYSTEMS® SUR LES API FLASH ........................................................... 31
1.
2.
3.
4.
5.
V.
LES AUTRES DOMAINES D’APPLICATIONS DES API JAVA ....................................................32
1.
2.
3.
ACCES AUX DONNEES EN UTILISANT LES SERVICES WEB ................................................................. 32
ACCES AUX DONNEES EN UTILISANT LE RPC JAVA ........................................................................ 33
L’OUVERTURE VERS DE NOUVEAUX SERVICES ............................................................................... 33
CONCLUSION...............................................................................................................................34
ANNEXES .....................................................................................................................................34
ANNEXES .....................................................................................................................................35
TABLE DES ILLUSTRATIONS ........................................................................................................60
GLOSSAIRE ET ABBREVIATIONS .................................................................................................61
BIBLIOGRAPHIE ET REFERENCES ................................................................................................70
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Introduction
De nos jours, de nombreux supports sont capables de véhiculer des
informations en temps réel, de façon visuelle et ergonomique afin de toucher
un maximum de consommateurs, entreprises ou particuliers. Parmi les
périphériques à la pointe de la Technologie se détachent principalement les
téléphones portables de nouvelle génération (technologie 3G), les organiseurs
électroniques (BlackBerryTM, PalmTM, Pocket PCTM …), les consoles mobiles de
jeux (WiiTM, PlayStationTM …) ainsi qu’Internet. Ce dernier tout particulièrement
a révolutionné en quelques années le rapport de l’Homme au monde et au
temps, en apportant une mine d’informations, un gain de temps et de
productivité, et par conséquent des possibilités économiques colossales.
Ainsi, la recherche du profit maximum oriente de plus en plus les entreprises à
développer des applications Web réunissant facilité de développement, de
déploiement, d’utilisation, de maintenance et de mise à jour, tout en étant
ergonomiques (voire ludiques) et accessibles à une population universelle et
multiculturelle. Pour ce faire, Internet est devenu l’élément porteur d’une toute
nouvelle génération d’applications Internet évoluées dites applications
« riches » ou RIA (Rich Internet Applications). Bien qu’Internet reste assujetti
aux limitations des applications, interfaces,
supports physiques et
technologiques existants, nous verrons dans cette étude que ces nouvelles
applications Internet dites « riches » apportent l’information sous une forme de
plus en plus dynamique, interactive et proche des applications « lourdes »
telles que les applications bureautiques installées en local sur les ordinateurs.
Parmi les outils permettant la création de telles applications, Adobe®
Macromedia FlashTM est sûrement l’un des plus évolués du marché. L’intérêt de
Flash est qu’il offre une possibilité graphique proche des applications lourdes
(tout en étant simple d’utilisation côté clients). Flash PlayerTM lit des fichiers
Flash SWF. Java J2EETM et les interfaces pour l’accès programmé aux API
(Application Programming Interface) qui permettent la génération de code
Flash, proposent soit de personnaliser (« customiser »), soit de générer
complètement ces fichiers Flash. En couplant ces deux technologies dans une
architecture de type trois tiers, nous avons les prémices de ce qui permettra
de réaliser des RIA.
Aujourd’hui, plus de 98% des ordinateurs clients connectés à Internet ont un
lecteur de fichiers SWF (Flash PlayerTM) et 86% JVM (Java Virtual MachnieTM)
de JAVA Sun Microsystems® (statistiques réalisées par Millward Brown,
décembre 2006). Tout d’abord, une présentation de Flash et du langage de
programmation ActionScript (AS) sera faite pour mieux comprendre le format
de fichiers SWF. On examinera ensuite une architecture trois tiers type sur
laquelle les RIA s’appuient. Nous apporterons une première réflexion sur
l’intérêt de Flash dans une telle architecture. Dans un second temps, nous
aborderons la partie « front office » et interfaces graphiques offertes par Flash,
suivie de la partie « back office » (applications métiers/serveurs) avec le
concept JAVA et API. Nous terminerons par un résumé des scénarii et
aborderons les autres domaines d’applications possibles avant de conclure.
- Page 1/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
I. Adobe Macromedia FlashTM
Depuis plusieurs années, Internet héberge aussi bien des sites statiques
(vitrines familiales ou professionnelles) que des sites un peu plus
interactifs comme les magasins virtuels. Le format de fichiers standards
utilisés sur le web est le HTML (HyperText Markup Language). Le HTML
permet en particulier d'insérer des hyperliens dans du texte, donc de créer
de l'hypertexte, d'où le nom du langage. Un système hypertexte est un
système contenant des documents liés entre eux par des hyperliens
permettant de passer automatiquement (en pratique grâce à
l'informatique) du document consulté à un autre document lié. Les pages
HTML liées entre elles forment ce que l’on appelle un site Web. Un site
peut être agrémenté de texte, d’images, de sons et de vidéos afin de le
rendre un peu plus « dynamique » et attractif. Le côté interactif d’un site
ne tient quasiment qu’à la navigabilité entre les documents, navigabilité
obtenue grâce aux hyperliens.
Il y a environ une dizaine d’années, une société nommée à l’époque
Macromedia® sort un produit qui révolutionnera le Web : Macromedia
FlashTM. Sa différence fondamentale réside dans le fait qu’il offre un vrai
studio de montage multimédia orienté Web, point que nous développerons
un peu plus loin.
En fait, le navigateur Internet sous sa forme standard ne peut
« décrypter » et afficher le contenu d’une animation Flash. Macromedia®
met donc à disposition un plugin nommé Flash PlayerTM, à installer sur les
machines clientes. Mais le monde des ordinateurs professionnels (comme
familiaux) est composé de plusieurs types de machines car un ordinateur
peut utiliser un CPU (processeur) ou un OS (système d’exploitation)
différent ; il existe trois principaux OS sur le marché pour les ordinateurs
professionnels et personnels : Microsoft WindowsTM, LinuxTM (dérivé du
système d’exploitation UNIX du monde professionnel), et Mac OSTM pour
les ordinateurs Apple®.
Nous devons garder à l’esprit que Flash peut être non seulement présent
dans nos ordinateurs, mais aussi dans d’autres périphériques ou produits
dérivés comme par exemple la téléphonie, les consoles de jeux, etc…
- Page 2/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Figure 1 – Nouvelle génération d’applications
Afin de communiquer sous ces différentes plates-formes, Macromedia a
développé un lecteur de fichiers Flash, le Flash PlayerTM, pour chaque type
de système d’exploitation. Ce fichier Flash est le SWF (ShockWave Flash),
c’est un format de fichiers sous forme binaire (bytecode) qui sera donc
précompilé par Macromedia FlashTM ; le Flash PlayerTM s’occupera de finir le
travail côté client afin de faire fonctionner l’animation sous chacune des
plate-formes.
Examinons maintenant l’EDI Flash, l’histoire de son langage, une approche
du langage ActionScript et la description des différents formats de fichiers
utilisés au travers de Macromedia FlashTM.
1. L’EDI Adobe Macromedia FlashTM
Il faut savoir que Macromedia FlashTM est une application orientée
« web design » qui a su mettre à rude épreuve sa technologie. C’est avant
tout un logiciel qui permet de réaliser des animations vectorielles d’une
grande qualité. L’animation générée peut être agrémentée de différents
composants graphiques et multimédia. En fait, Flash peut « encapsuler »
dans ces animations des images vectorielles, des photos, des fichiers son
et même de la vidéo. Adobe Macromedia FlashTM se présente alors comme
un studio complet d’animation.
Il faut savoir que Macromedia FlashTM est aussi un vrai EDI (environnement
de développement intégré), c’est-à-dire un programme regroupant un
éditeur de texte, un compilateur, des outils automatiques de fabrication, et
souvent un débogueur.
- Page 3/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Timeline
Bibliothèque d’objets
(Movie Clip…)
Scène
EDI
Figure 2 – EDI Macromedia Flash
Ce produit permet d’ouvrir les portes de la créativité et seule l’imagination
de ses utilisateurs en définit les limites. Autrefois, seuls les designers de
sites Internet utilisaient cet outil pour réaliser des animations stimulant
l’ouïe et le regard des « cybernautes ». C’est principalement pour des
raisons marketing qu’il a été utilisé. On réalisait (et on réalise encore) des
minis encarts publicitaires, voire carrément des spots complets, qui
agrémentent ici et là les pages HTML.
Brièvement, nous pouvons dire que le designer possède une scène sur
laquelle il pourra mettre en place un décor et des composants ou
MovieClips. Ces composants sont tout simplement des objets (images
vectoriels, photos, sons, d’autres fichiers Flash) qui sont instanciés sur la
scène. Ce comportement est relativement proche du comportement de
la POO (programmation orientée objet) ; c’est une image, bien sûr, mais
ce n’est pas complètement inexact.
Il existait déjà à l’époque un langage qui était utilisé pour piloter les
animations soit de façon autonome à l’intérieur d’elles-mêmes, soit entre
elles, soit par le biais de composants que l’utilisateur pouvait utiliser
(exemple : bouton graphique que l’on clique, que l’on survole … mais aussi
- Page 4/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
avec des touches au clavier etc…). Un bon début pour l’interactivité.
Ce langage est le Flash Code. Il existait sous la version 4 de Flash mais
aussi sous la version 5. En fait, il est possible de mettre directement du
code dans chaque composant qui sera disposé sur la scène pour simuler
-par exemple - la collision de deux « MovieClips » qui pourraient être
représentés par un ballon et le sol- mais aussi dans la « Timeline » à une
image donnée qui permettrait de faire des déplacements dans le
déroulement de l’animation avec des sauts de séquences, des arrêts, des
retours en arrière…
Nous allons à présent étudier les changements et
technologiques dans le langage de Macromedia FlashTM.
les
avancées
2. Les langages Flash et ActionScript :
Récemment, la société Adobe® a racheté la société Macromedia® et
ses produits, déjà fortement implantés mondialement et leaders sur le
marché de la mise en forme de documents interactifs et dynamiques pour
le Web. Les versions telles que Macromedia FlashTM 4 et 5 étaient dotées
d’un langage plutôt procédural (qui ne renvoie pas de résultats). En
revanche, Macromedia FlashTM 5 était muni d’une première version d’AS
(ActionScriptTM 1.0) qui fut porté par la suite sur la version Flash MXTM.
Comme l’ancien langage, il est simplement destiné aux interactions telles
que les clics sur les boutons, et autres actions décrites en amont. C’est en
2004 que Macromedia FlashTM (aujourd’hui Adobe Macromedia Flash MXTM)
passe au langage propriétaire dorénavant nommé AS.
La version professionnelle comme les nouvelles versions d’Adobe
Macromedia FlashTM incluent AS 2.0 et aujourd’hui AS 3.0. Ces deux
versions possèdent la notion de classes et d’objets, d’héritages,
d’interfaces, de généralisation comme de spécialisation, et nous pouvons
alors parler d’un vrai langage de programmation orienté objet (POO). Il a
été développé pour des tâches plus complexes telles que la manipulation
des contenus et des données.
ActionScript 3.0 est un langage basé sur la norme ECMAScript version 3
(ECMA-262) depuis ActionScript 3.0. En fait, ActionScript 2.0 (et maintenant
3.0) sont proches du langage JavaScript et sont faiblement typés. Mais
bien que l’on puisse encore développer sans le typage des variables, il est
aussi possible de les typer fortement ce qui en facilite le débogage et une
réutilisation plus simple telle que l’on peut le voir dans des grands
langages orientés objet tel que Java. On conserve encore la version 2.0 car
pour cette étude, nous avons observé d’abord une API qui n’est pas encore
passée à la version 3.0 et l’API FlexTM d’Adobe® qui supporte cette
dernière. Ces API seront présentées plus en détail dans le chapitre IV.
La capacité de Flash de combiner du code procédural et du code orienté
objet dans un environnement de développement graphique, basé sur le
- Page 5/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
temps, le rend exceptionnellement souple. Cette souplesse est à la fois
puissante et dangereuse. D’un côté, les animations et les transitions
d’interfaces -qui sont triviales dans Flash- peuvent réclamer des heures de
codage personnalisé dans les langages tel que JAVA et C++. Mais d’un
autre côté, le code (qui est attaché aux images dans le scénario ou les
composants sur la scène) demande du temps pour le localiser et le
modifier. Aussi, l’abus de codes de scénario dans Flash peut rapidement
(et insensiblement) transformer un projet en un amas de codes
impossibles à maintenir.
3. Les formats Shockwave Flash (.SWF)
Tout d’abord, il faut différencier le logiciel Flash du format SWF
(Shockwave Flash), généralement appelé format Flash. Comme nous
l’avons précédemment vu, le logiciel est un outil de création de contenus et
il combine plusieurs formats.
a) Les formats d’édition
− FLA est le format de développement et de programmation. Il
permet de monter des éléments importés (images, sons, textes,
dessins vectoriels), de les animer et/ou de les programmer.
− FLV est apparu avec la version Flash MX (mars 2002) et permet
de traiter de la vidéo (montage, habillage, compression).
− AS (ActionScript) est le format des classes de Macromedia
FlashTM. Les fichiers « .as » contiennent des scripts, des classes
ou des interfaces qui seront intégrés dans un fichier « .fla ». Ce
sont des fichiers textes.
b) Le format de publication
−
SWF est un format «ouvert» de publication pour le Web. Il
nécessite un support HTML pour être identifié par le navigateur et
le plugin pour être interprété par le système d’exploitation. Ce
sont des fichiers binaires, c’est-à-dire qu’ils ne sont pas
directement exécutables par les postes clients : c’est le travail du
Flash PlayerTM, qui va se charger de finir de compiler le code et de
l’exécuter.
c) Le mode autonome
Enfin, le logiciel Flash permet aussi de générer des applications
complètes et autonomes, pour une publication off-line au format EXE,
c’est-à-dire sous la forme d’un projecteur qui contient une version réduite
du player. Nous ne développerons pas ce concept ici.
Aujourd’hui, Flash est de plus en plus utilisé pour interfacer un site Web
avec l’utilisateur final (l’Homme). Nous le verrons apparaître notamment
dans des architectures trois tiers pour des RIA.
- Page 6/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
II. Architecture trois tiers/web dynamique
Nous présentons ici les API Java au travers d’applications pour clients
légers, en nous basant sur l’architecture trois tiers. Aujourd'hui, le Web a
tout changé dans notre rapport avec le monde. Dans la majorité des cas, il
apporte une amélioration certaine dans l’utilisation des applications. Les
utilisateurs attendent toujours plus de ces « outils » (convivialité, facilité
de manipulation, ergonomie et esthétique) et iront voir ailleurs s'ils ne
trouvent satisfaction durant leur utilisation. Ils souhaitent davantage de
libertés et de flexibilité. De leur côté, les professionnels souhaitent pouvoir
communiquer en temps réel avec les particuliers et les entreprises.
Le Web a du mal à être compétitif par rapport à l'évolution actuelle des
attentes. En dépit du fait que tous l'aient adopté, le Web a ses limites en
tant que plate-forme, ce qui frustre les utilisateurs dans l'accomplissement
de leurs tâches. Le problème réside dans l'architecture du Web. Les pages
HTML sont consultées dans un navigateur, toutes les fonctions étant
conservées au niveau du serveur. En fait, quand on regarde l'historique du
design des interactions et des interfaces à partir du "mainframe"
(Ordinateur Central), le Web représente un pas en arrière en termes de
souplesse, de fonctionnalités et de puissance.
Pour combler le fossé entre les faiblesses du Web et les attentes des
utilisateurs, il faut un outil qui offrira des fonctionnalités en temps réel
pour les clients, améliorera les temps de réponse et le niveau d'interaction
des utilisateurs avec l'application, tout en gérant la logique business d'une
façon plus efficace. Il faut savoir que l’utilisation de telles applications
permet de réaliser ce que l’on appelle « l’expérience ». Quand un
utilisateur réalise une transaction sur un site de commerce en ligne, par
exemple, il arrive que celui-ci abandonne la transaction car il peut y avoir
un peu trop d’étapes pour compléter celle-ci (mauvaise « expérience »).
C’est un réel enjeu économique pour les entreprises, parce qu’elles ne
s’adaptent pas aux attentes toujours plus grandes de leurs clients et ne
leur offrent pas le contenu, les services et les données dont ils ont besoin,
elles vont perdre de l'argent (abandon fréquent de caddies et par
conséquent perte d’acheteurs potentiels, appels interminables d’utilisateurs
sur les hotlines du site pour trouver de l’aide, etc…).
Avec ce genre d’architectures, nous pouvons imaginer par exemple
l’émission d’un flux d’informations continus (RSS = Really Simple
Syndication). Ce concept est fréquemment utilisé aujourd’hui afin de
fournir dans un site Web le résumé des nouvelles provenant de sites qui
traitent les actualités, le résumé de certains blogs et autres… Ici, il est
possible d’utiliser le format XML (eXtensible Markup Language) qui est un
moyen de structurer les informations/données pour les afficher grâce à des
parseurs (analyseurs).
- Page 7/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Examinons dans un premier temps les architectures, et la façon dont Java
est utilisé pour créer des applications dynamiques, avant de nous pencher
sur les avantages de Flash.
1. Un peu d’histoire – architecture « n » tiers
Le choix des applications clients/serveur a séduit le monde de
l’entreprise car elles étaient « faciles » à déployer et mises à jour
uniquement côté serveur. Un serveur HTTP suffisait pour répondre aux
requêtes HTTP des différents clients (Internet Explorer, Mozilla, Opera,
Firefox …). Mais rapidement, les grandes entreprises comme les PME ont
souhaité pouvoir donner accès à des données stockées chez eux dans leur
Système de Gestion de Base de Données (SGBD) afin de les mettre en
forme et de les afficher sur les écrans des postes clients externes à
l’entreprise. L’architecture trois tiers faisait son apparition dans ce domaine
sous forme de postes clients connectés (via HTTP) à un serveur Web qui
lui-même accédait aux données hébergées dans un serveur de base de
données. De manière échelonnée, les sites sont passés d’une forme
statique à une forme « dynamique ». Ce dynamisme a pu être réalisé
grâce à des interfaces utilisateurs plus « riches » - ajout de processus au
niveau client pour gérer certain langage : JavaScript, applets Java et
autres. Nous en arrivons à générer dynamiquement des documents.
a) L’architecture trois tiers
Le principe de l’architecture trois tiers repose sur trois niveaux : la
couche présentation, la couche métier et la couche accès aux données.
Figure 3 – Composition d’une application trois tiers.
Les tendances actuelles en terme de développement "client léger"
s'articulent souvent autour de :
− J2EE ou .NET, qui sont des couches souples, stables d'exécution et
d'accès aux données,
− HTML, qui est une couche de présentation compliquée et non intuitive.
- Page 8/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
J2EE est une technologie Sun Microsystems®. Une application utilisant un
serveur Java permet d’absorber une charge élevée au niveau des appels
serveurs (nombre de connexions mais aussi quantité de requêtes). En
revanche, le langage HTML limite les applications.
En effet, le développement de type « client léger » est en vogue car il
permet de réaliser des applications distribuées, d’où l’architecture trois
tiers. Nous allons étudier en détail le concept de ces applications pour la
partie présentation, ce qui nous mènera à Flash qui permet de réaliser non
seulement une application de ce type, mais surtout une application
« riche ».
b) En faveur de Java/J2EE
L’avantage principal de Java/J2EE réside dans le fait que Java est
« multi-threadé » (multi-processus), par conséquent on peut envoyer « n »
requêtes simultanées sans que le service ne s’effondre.
La création d’un service est plus intuitive. Il existe une véritable école du
développement Web services Java, notamment côté J2EE. Aujourd’hui, de
nombreuses applications d’entreprises reposant sur la solution JSP
(JavaServer Pages) sont déployées. Bien que plus complexe à mettre en
œuvre et à appréhender que le PHP, le JSP a l’avantage de reposer sur le
langage Java qui est l’un des plus utilisés à travers le monde. Microsoft® a
lui aussi sa propre technologie nommée ASP (Active Server Pages). Son
inconvénient majeur est qu’il nécessite de fonctionner uniquement sur un
serveur Windows. Ceci ajoute un point fort à la technologie J2EE/JSP, car il
est tout à fait possible de développer une application sous Windows et la
déployer sur un autre système tel que Linux par exemple. Théoriquement,
un composant conforme aux services techniques J2EE doit pouvoir
s'exécuter dans n'importe quel environnement estampillé "J2EE".
Aujourd’hui, Java est reconnu aussi comme l’un des langages de
programmation les plus robustes et sécurisés pour réaliser de réelles
applications professionnelles : c’est le cas du langage Java, mais aussi les
Java Server Pages qui, sur le modèle des Active Server Pages de Microsoft,
combinent HTML et des appels à des composants pour générer des pages
dites dynamiques.
En fait, avec la norme J2EE de développement Web, on réalise des
applications qui permettent de générer dynamiquement des pages
statiques. J2EE repose sur un ensemble de librairies tel que les servlets,
JSP, XML, EJB, XML-RPC, RMI, SOAP… Ces applications reposent -entre
autres- sur l’un des modèles utilisé pour cette étude : le modèle MCV.
- Page 9/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
2. Le modèle MVC standard
L’architecture MVC est proposée par SUN. C’est la solution de
développement d’applications Web. Ce modèle de conception a pour but de
séparer la couche présentation de la couche applicative et de l’accès aux
données. Il se compose de la manière suivante :
− des sources de données représentées par le modèle (M)
− une interface utilisateur représentée par la vue (V)
− une logique applicative représentée par le contrôleur (C)
Figure 4 – Le modèle MVC
Le modèle : il représente les données métiers et la logique relative à
l'accès et à la modification de ces données. Il permet donc les traitements
des données, interactions avec la base de données, etc… Il décrit les
données manipulées par l'application et définit les méthodes d'accès. Il
consomme des servlets et génère des beans (EJB et/ou les JavaBeans).
La vue : elle traduit le contenu du modèle et spécifie la façon dont ces
données doivent être présentées. Ce sont des pages HTML/JSP (pages
HTML qui ont des références de code Java). Quant elles veulent interagir
avec l’application métier, elles sont traduites par la suite en servlets puis
exécutées côté contrôleur. La vue (pour être créée) consomme des beans.
Le contrôleur : contient des servlets qui créent des beans. Les
servlets contiennent « du code Java » qui va générer du HTML. Il définit le
comportement de l'application, il répartit les requêtes de l'utilisateur, les
transforme en actions exécutées par le modèle et sélectionne les vues pour
la présentation. Dans une application Web par exemple, il traitera
typiquement les requêtes utilisateurs à travers le protocole HTTP.
- Page 10/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
a) Les étapes de fonctionnement
Figure 5 – Les différentes étapes
A partir de la figure 5 ci-dessus, on peut décrire 5 étapes :
Etape 1 : le client envoie une requête HTTP à destination d’une servlet.
Etape 2 : la servlet récupère les données transmise dans la requête HTTP
et délègue les traitements avec/sur ces données à des composants EJB
et/ou JavaBeans.
Etape 3 : selon les traitements à effectuer, les composants EJB et/ou
JavaBean peuvent accéder à des sources de données (bases de
données,…).
Etape 4 : une fois les traitements terminés sur la source de données, les
composants rendent la main à la servlet en lui retournant le résultat. La
servlet stocke ce résultat dans un contexte (session, requête,…).
Etape 5 : la servlet transmet la suite du traitement de la requête vers une
JSP qui génère la réponse HTTP envoyée au client.
En fait, l’architecture J2EE met en pratique ce qu’on appelle communément
les composants et les conteneurs.
Les composants dans l’architecture J2EE sont des unités de développement
simple qui fournissent des fonctionnalités standardisées. Leurs interfaces
d’application sont définies et celles-ci peuvent être développées et
adaptées dans chaque entreprise de manière simple.
- Page 11/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Les conteneurs sont les services que propose J2EE. Ce sont eux qui
supportent les composants. Ces services sont standardisés et fiables.
Ainsi, J2EE offre aux développeurs la possibilité de se concentrer sur la
création des composants destinés à encapsuler certains éléments de
l’application tels que :
o
o
o
l’aspect graphique
la navigation
la logique professionnelle
Cette séparation des responsabilités rend les applications plus aisées à
maintenir, à modifier (traitements spécifiques) ou à changer (modes de
présentation), et n'influe pas sur la logique métier qui est hors de portée
des changements structurels effectués.
b) Les composants/conteneurs
Ces composants permettent de transformer les pages HTML statiques
en des écrans animés et réactifs.
i.
Les servlets
C’est la base de la programmation Web J2EE. Une servlet est un
programme Java – classe Java - qui est exécuté sur une machine où est
installé le serveur J2EE, et qui est appelé lorsqu’un navigateur client
appelle une URL (Uniform Resource Locator). Cela permet l'extension des
fonctions de ce dernier, typiquement : accès à des bases de données,
transactions d'e-commerce, etc… Ces requêtes utilisent le protocole HTTP
pour atteindre une servlet donnée. Ce sont les servlets qui permettent de
générer dynamiquement des pages HTML mais aussi -nous le verrons plus
loin- des fichiers XML, voire tout autre format destiné aux navigateurs
Web. Une servlet peut être chargée automatiquement (un fichier
default.jsp) lors du démarrage du serveur Web ou lors de la première
requête du client.
Une fois chargées, les servlets restent actives dans l'attente d'autres
requêtes du client. Une servlet chargée automatiquement se fait par le
biais d’une page HTML ou directement à partir d’un fichier JSP et un fichier
Web « .xml » qui contient le paramétrage des servlets de l’application.
L'utilisation de servlets se fait par le biais d'un conteneur de servlets
(framework) côté serveur. Celui-ci constitue l'environnement d'exécution
de la servlet et lui permet de persister entre les requêtes des clients. L'API
définit les relations entre le conteneur et la servlet. Le conteneur reçoit la
requête du client, et sélectionne la servlet qui aura à la traiter. Le
conteneur fournit également tout un ensemble de services standard pour
simplifier la gestion des requêtes et des sessions.
- Page 12/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
ii.
Les pages JSP
Une page JSP est une page HTML ou XML qui peut contenir du code Java.
C’est donc un document texte dont la base est un langage à balises (tags).
Les JSP sont exécutés par un serveur d’application pour générer la réponse
à une requête HTTP et donc identique à une servlet. La technologie JSP
permet d'insérer des fragments de code Java à l'intérieur d'une page HTML
statique, afin de la rendre dynamique.
Exemple de page JSP :
Code
Java
<% int i ;
For (i=1 ; i<= 10 ; i++)
{
Out.println ( i + "<br> " ) ;
}
%>
Code HTML
<%@page language="Java"%>
<!DOCTYPE HTML PUBLIC “-//W3c//dtd html 4.0 transitional//en”>
<html>
<head>
<title>Examen Probatoire – IPSTCNAM 2007 </title>
<body bgcolor =”#FFFFFF”>
<h1>Résultat de l’éxécution d’un code Java : </h1>
</body>
</html>
Les JSP peuvent contenir quatre éléments qui ont un rôle dans le
comportement dynamique du JSP :
o
les éléments texte qui sont formatés par HTML ou XML. C’est la
partie statique de la page.
o
les directives qui sont des instructions que traite le JSP en
compilant la page pour en faire un formulaire exécutable.
o
les balises qui font appel à JavaBeans pour générer du contenu
dynamique ou exécuter des opérations.
o
les éléments du script qui peuvent être :
ƒ des déclarations
ƒ des scriptlets
ƒ des expressions
Le JSP s'inscrit alors dans la logique de l'architecture J2EE, permettant la
séparation de la partie présentation de la partie logique d'affaires en
intégrant des données à l’aide de balises JSP spécifiques.
Notons que les pages JSP utilisent des JavaBeans. Ce sont ces derniers qui
vont accéder directement à la base de données. JSP est donc un modèle de
contenu dynamique.
- Page 13/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Le premier appel d'une page JSP entraîne la compilation côté serveur du
code Java qu'elle contient, ce qui crée une servlet stockée et gérée par le
conteneur Web.
Le conteneur de servlets le plus répandu est TomcatTM, de Apache
Software Foundation, qui a été créé au départ pour fonctionner en étroite
collaboration avec le serveur Web Apache, et qui peut maintenant
fonctionner de façon complètement autonome. L'installation d'un serveur
Web n'est d'ailleurs pas nécessaire sur une plate-forme J2EE qui sert
uniquement des pages dynamiques. Nous verrons plus loin, dans la section
Java concernant la génération de code Flash, que pour réaliser des
applications « riches », Adobe® et Laszlo Systems® utilisent un serveur
de présentation.
iii.
Les Beans
Les beans sont des composants qui s'exécutent côté serveur, de façon
répartie, entre différents processus, tout en maintenant avec le client un
état conversationnel. Les beans ou leur conteneur prendront en charge
certains aspects de ce fonctionnement ou feront appel à différents services
de la plate-forme J2EE. Il y a
deux types de beans qui sont des
composants basés sur RMI (Remote Method Invocation) : les beans entité
et les beans session, auxquels on accède à l'aide de protocoles synchrones.
Les beans orientés message, répondant aux messages JMS asynchrones,
constituent un troisième type de beans introduits dans la version 2.0 de la
spécification.
Les beans entité modélisent typiquement des objets du monde réel. Ces
objets ont besoin d'une représentation mémoire persistante, ce qui fait
qu'un bean entité pourra gérer sa propre persistance sur le mode bean
Managed Persistence (BMP), ou s'en remettre à son conteneur pour
assurer cette tâche, on parlera alors de Container Manager Persistence
(CMP).
Les beans session forment l'extension de l'application cliente manipulant la
logique métier, ils modélisent typiquement des processus ou des activités
de coordination et organisent les beans entité entre eux afin d'accomplir
des tâches spécifiques. Les concepts qu'ils représentent peuvent être
désignés par des verbes, alors que ceux qui concernent les beans entité le
sont plutôt par des noms.
Il y a deux types de beans session ; ceux dits « sans état » : l'invocation
d'une de leurs méthodes renvoie un résultat sans tenir compte des actions
d'autres composants ; ceux « avec état » : maintiennent un état
conversationnel avec l'application cliente qui les invoque, ils en sont le
prolongement au coeur de la logique métier, ils conservent des données
intéressant le client et peuvent influer sur les invocations de méthodes
suivantes.
- Page 14/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Les beans message modélisent également des processus : ils ne sont pas
tributaires d'une interface distante, mais sont invoqués par un appel
asynchrone. Ce mode de communication est primordial dans les
architectures intégratives, l'appel pouvant être initié par un système
externe à la plate-forme J2EE.
A la différence des beans entité, les beans message comme les beans
session sont tout à fait transitoires et n'ont pas de représentation
persistante.
Nous n’entrerons pas plus dans les détails de ce processus, mais ce qu’il
faut retenir ici, c’est que tout ce mécanisme permet l’interopérabilité entre
chaque partie de notre architecture.
3. L’interopérabilité
Nous en parlions précédemment : les services Web symbolisent un
mécanisme de communication entre applications distantes à travers le
réseau Internet, et ce indépendamment de tout langage de programmation
et de toute plate-forme d’exécution. Il utilise le protocole HTTP (HyperText
Transfer Protocol) comme moyen de transport ; ainsi, les communications
s’effectuent sur un support universel, maîtrisé et généralement non filtré
par les firewalls.
HTTP se trouve dans la couche 5 du Modèle OSI – c’est-à-dire la couche
session qui permet la synchronisation des communications et la gestion
des transactions. Il emploie une syntaxe basée sur la notation XML pour
décrire les appels de fonctions distantes et les données échangées et il
organise les mécanismes d’appel et de réponse. XML permet de séparer la
partie « contenu » de la partie « présentation », ce qui apporte la
possibilité de modifier le contenu (par exemple un texte) dans une page
Internet sans avoir à dessiner la page standardisée dans une page HTML
avec des feuilles de Style CSS (Cascading Style Sheet). Mais XML permet
de faciliter l’échange automatisé de contenu entre plusieurs systèmes
d’information hétérogènes.
Le but est clair : il s'agit de rendre interopérables les composants
développés dans le cadre des architectures distribuées (également
appelées architectures multi-niveaux, qui sommairement associent une
base de données, un serveur d'applications et des serveurs Web).
- Page 15/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
4. Flash et les applications distribuées
Comme nous venons de le voir, la technologie Java et J2EE permet de
réaliser des applications dont la maintenance est assez aisée. Nous
observons, au travers des sites marchands comme des applications
d’entreprises, que la navigation et l’interface utilisateur sont un peu
« lourdes ». Bien que ces systèmes offrent une grande souplesse à
l’accomplissement de nos tâches en tant qu’utilisateur, il est un peu
dommage de ne voir s’afficher à l’écran que des pages au format HTML. Ce
sont bien là des pages générées dynamiquement, mais elles restent
statiques. Ce n’est pas là leur seul inconvénient. Par exemple, pour des
applications complexes comme les réservations de billets pour un voyage,
nous sommes confrontés à une succession de pages qui pourraient être
condensées en une seule si l’on pouvait utiliser des systèmes plus
ergonomiques, à savoir similaires à ceux que l’on retrouve dans des
applications « lourdes ». Nous avons vu précédemment un concept qui
permet la création d’applications pour clients légers, mais il n’en reste pas
moins que nous sommes encore loin de celles que nous pouvons
directement installer sur nos machines, comme par exemple Microsoft
WordTM ou encore Adobe PhotoshopTM.
Dans le cadre du développement d’applications Internet, la tendance forte
actuellement est de joindre au meilleur de la technologie Web, le meilleur
de la communication et le meilleur des applications bureautiques.
Figure 6 – RIA (Rich Internet Applications)
- Page 16/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
La réponse au défi d’exploitation du potentiel d’Internet doit se faire à deux
niveaux : l’offre d’un contenant aussi intéressant que le contenu dans le
navigateur, et la présentation d’interfaces utilisateur plus « riches », plus
interactives et plus dynamiques, qui peuvent être déployées sur les
ordinateurs de bureau, mais aussi sur les nouveaux périphériques. Nous
l’avons vu en première partie, Flash représente un panel d’outils de mise
en forme alléchante de l’information et répond parfaitement à ces
nouvelles contraintes. Nous avons là tous les ingrédients de ce qui pourra
nous permettre de réaliser une nouvelle génération d’applications : les
RIA. Adobe® -comme la société Laszlo Systems®- ont bien compris que
J2EE est aujourd’hui bien implanté dans le monde de l’entreprise. Ils
proposent d’ailleurs des serveurs qui fournissent des interfaces « riches »
et évoluées au format Flash, appelées « Client Léger Riche » ou RIA,
combinant les interfaces utilisateurs « riches » et la facilité de publication
du Web. Si les entreprises souhaitent répondre à la demande d’applications
internes et externes plus ergonomiques, les entreprises devront utiliser ces
plate-formes capables de prendre en charge un large éventail
d’expériences multimédia. De telles applications permettront aux
entreprises de faciliter l’accès aux données et aux processus, de faciliter la
communication et le travail en équipe au sein de l’entreprise comme avec
l’extérieur, et de proposer des expériences interactives à leurs utilisateurs
comme à leurs clients. Voici quelques exemples de domaines d’application:
Figure 7 – Les domaines d’application
- Page 17/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
5. Technologies nécessaires
L’offre d’applications dynamiques nécessite trois technologies : des clients
dynamiques, des serveurs et des outils de développement.
Clients dynamiques : la technologie de clients dynamiques comprend les
fonctions côté client qui permettent de profiter de la puissance de
traitement des ordinateurs et périphériques. Les deux principaux facteurs
permettant de choisir une technologie de clients dynamiques sont
l’adoption de la technologie et ses capacités.
Serveurs : la connexion des clients dynamiques à la logique et aux
données des applications requiert une nouvelle technologie pour serveurs
offrant un environnement de programmation rapide, une intégration avec
les systèmes d’entreprise, la connectivité aux clients et le support des
principaux standards. Les applications dynamiques comprennent
l’intégration des communications bidirectionnelles et des données en temps
réel dans les applications (sans mentionner l’utilisation de bases de
données traditionnelles) et ont donc également besoin d’une nouvelle
génération de fonctions de communication.
Outils de développement : l’existence des technologies pour clients et
serveurs n’a de valeur qu’en combinaison avec un ensemble d’outils de
développement simplifiant la création de solutions. L’architecture
client/serveur des applications dynamiques requiert toute une panoplie
d’outils de développement étroitement liés.
Macromedia FlashTM est utilisé pour enrichir les interfaces graphiques des
sites Internet mais il existe aussi une version pour les périphériques
portables - Flash LiteTM. Adobe Macromedia® comme Laszlo Systems® ont
donc mis en place une technologie qui permet de réaliser rapidement des
interfaces utilisateurs graphiques. Nous allons aborder ces technologies,
puis l’on étudiera plus en détails la communication entre Flash et Java.
- Page 18/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
III. Interface Graphique (API/Framework)
Plusieurs solutions permettent de réaliser des interfaces graphiques
au format SWF. Il est assez difficile de dire que des API Java permettent de
générer purement du code Flash, car ce n’est pas là que réside l’intérêt
principal des API Java. Pourtant il est intéressant de comprendre les
différentes opportunités de son utilisation.
1. Opportunités de l’utilisation de Java
La première est l’utilisation d’API Java pour envoyer des informations
directement aux animations Flash que l’on peut considérer comme des
fichiers gabarits dans lesquels on va pouvoir mettre de l’information.
Prenons comme exemple un fichier Flash qui est une petite animation,
autonome ou sur une page Web connectée à Internet, et qui représenterait
par exemple le soleil, les nuages… L’utilisation de cette API, dans ce cas
précis, pourrait permettre d’envoyer des données au format XML vers cette
animation pour afficher le temps qu’il fait sur Toulouse.
Le second est l’utilisation d’API évoluées qui permettent, grâce à XML
toujours, d’utiliser des composants graphiques comme des onglets, des
tableaux dynamiques, et des méthodes avancées comme des fonctions de
base pour le tri par colonne dans un tableau, le changement de position
d’une colonne à l’autre, la sélection multiple, etc… Il existe pour cela deux
grandes familles d’outils permettant la génération de codes Flash, ou
permettant la réalisation d’applications « riches ». Nous aborderons
OpenLazsloTM de chez Laszlo Systems® et Macromedia FlexTM 2.0 de chez
Adobe®. La génération de fichiers Flash comme on l’entendrait dans
l’environnement de création Adobe Macromedia FlashTM, ne sera pas
abordée ici car ce n’est pas vraiment le rôle des API.
2. Les API Java (orientées personnalisation SWF)
Transform SWFTM de la société Flagstone® (de même que JavaSWF2,
JSwiff…) a été développé pour créer et utiliser facilement des interfaces
utilisateurs pour des applications Internet « riches ». Transform SWFTM est
un regroupement de classes pour chacun des tags et des structures de
données qui constitue la spécification de fichier Flash SWF. Ces classes
fournissent une API complètement orientée objet pour analyser, manipuler
et générer des fichiers Flash. Utiliser Transform SWFTM dans un environnement serveur permet de générer des fichiers Flash « indépendants ». Le
fichier est généré puis téléchargé vers un client pour affichage. Il pourrait
inclure du code pour envoyer/recevoir des messages XML, mais il vaut
mieux penser à Transform SWFTM en tant qu’outil de personnalisation. L’un
des utilisateurs principaux de Transform SWFTM se sert du logiciel pour
réaliser des présentations Flash pour la TV câblée et les écrans publicitaires
à travers l’Europe de l’Ouest. Là, les fichiers Flash existants sont utilisés
- Page 19/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
comme gabarits et l’information est obtenue à partir de plusieurs sources
de données et du fichier Flash final créé. Le fichier est ainsi converti en
vidéo et diffusé en continu (streaming) sur la TV câblée ou téléchargé vers
un réseau de PCs, de téléphones portables ou tout autre périphérique.
3. Les API Java évoluées (orientées RIA)
FlexTM et OpenLaszloTM sont principalement utilisés pour créer des
fichiers Flash qui ressemblent et se comportent comme des applications
bureautiques normales. On envoie et reçoit l’information normalement
sous forme de messages XML vers le serveur. Le serveur peut être
n’importe quel programme qui lit/écrit du XML : des scripts PHP, un
serveur d’applications Web comme Tomcat, etc. Nous arrivons maintenant
à voir évolué le serveur d’applications. Nous parlerons plutôt de « serveur
de présentation ». Ces deux frameworks sont préconisés pour le
développement et le déploiement d’applications Web avec des interfaces
recherchées.
4. La création de contenus « riches »
On peut utiliser Java pour créer un contenu « riche » de deux
façons :
ƒ
soit
l’on
« empaquette »
des
informations
(du
type
XML/images/animations) qui pourront être employées dans une
application Flex ou OpenLaszlo. Cette solution permet de fournir
des applications de type bureautiques (fixes ou mobiles). Il y aura
une plus grande interactivité entre l’utilisateur et l’application - le
traitement de textes ou d’images en ligne en est un exemple
évident (cf. le site http://www.picnik.com).
ƒ
soit on crée complètement le fichier Flash en Java, et l’interaction
utilisateur/application sera alors limitée. Exemple : les systèmes
de visualisation de l'information pour les actualités, la météo ou
n'importe quelle autre information dynamique. La gamme
d’applications où ce type d'informations peut être utilisé est très
large. Exemple : pour les téléphones portables, on utilisera
l'animation Flash pour obtenir une meilleure résolution
d’affichage, l’écran étant de taille réduite.
Poursuivons notre réflexion sur les applications « riches » avec du contenu
interactif et très dynamique. Pour cela, étudions cette technologie par le
biais des API FlexTM, OpenLaszloTM, Transform SWFTM et de la technologie
Java.
- Page 20/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
IV. API Java pour generer du code Flash
Reprenons le concept des applications distribuées au travers d’une
architecture trois tiers sur le modèle MVC. Cette fois-ci, le navigateur
Internet sur le poste client va pouvoir lire autre chose que du HTML. Le
plugin Flash permet aux navigateurs de lire les fichiers Flash au format
SWF (nous le décrirons plus loin) ; il comporte aussi plusieurs
connecteurs/analyseurs/convertisseurs, notamment un XMLConnector et
un parseur d’XML. Cela signifie aussi que nos pages JSP vont devoir
« générer » autre chose que du HTML. En fait, les pages JSP contiennent
du code XML et des appels aux classes Java afin d’exécuter des méthodes
dans certains « blocs » du code XML. Nous verrons qu’il est aussi possible
d’enrichir le contenu d’applications Internet évoluées avec une explication
des possibilités d’accès aux données grâce à Flex et à Java.
Il serait aussi possible d’obtenir plus d’interactivité en codant directement
en Java les effets que l’on retrouve dans des applications bureautiques,
mais ce serait assez long et fastidieux. FlexTM comme OpenLaszloTM
proposent leur plate-forme pour le déploiement d’applications Web avec
des interfaces dont le « look and feel » (le design et la sensation) est
recherché.
1. La solution Adobe Macromedia FlexTM
Adobe Macromedia FlexTM est un outil complet de création d’applications
« riches ». Il s’agit d’un serveur de présentation qui repose sur la
technologie J2EE, composé de deux entités. La première est « Flex Builder
and Flex SDK », qui est un IDE complet avec en plus l’outil de
développement et de débogage en ligne de commande SDK (Software
Developpement Kit). La seconde est « FlexBuilder Plug-in and Flex SDK »
qui est un framework (API) qui s’intègre dans un EDI plus orienté Java
comme Eclipse, bien connu de nos jours. Il inclut une vue de conception
qui permet de placer de façon apparente (« WYSIWYG » = what you see is
what you get = vous obtenez ce que vous voyez) des composants
graphiques tels que des fenêtres, des boutons, des tableaux,…
Figure 8 – EDI/API Flex
- Page 21/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
FlexTM propose aussi le FDS (Service de données Flex) qui est un ensemble
« facultatif » de composants orientés serveurs dans le serveur d’application
de J2EE. Le FDS inclut un service RPC (Remote Procedure Call) de Java qui
permet d’écrire ou de souscrire à des transmissions de messages et des
services de gestion de données. Nous traiterons cette partie qui me semble
pertinente pour les développeurs Java.
2. La solution OpenLaszloTM
OpenLaszloTM est un EDI complet 100% gratuit ce qui le met sur un
pied d’égalité avec FlexTM. Il dispose lui aussi de tous les atouts d’aide au
développement. IDE4LaszloTM est une API qui s’intègre parfaitement à la
plate-forme de développement Eclipse.
Il n’est pas nécessaire d’en dire plus sur OpenLaszloTM. Nous aborderons
les spécificités de traitements et de communication entre Java et Flash de
façon générique, en étudiant les fonctionnalités communes à toutes les API
retenues dans le cadre de cette étude.
3. Les API de Flagstone Transform SWFTM
Flagstone Software LtdTM est l’équivalent de Flex SDKTM, c’est-à-dire
qu’il ne contient que la partie API et non pas les éléments de construction
WYSIWYG contenus dans la version Builder de FlexTM et OpenLaszloTM.
Vous pourrez trouver dans la partie Annexes une traduction personnelle de
ces publications sur Internet concernant son API ainsi que celle de l’API
JavaSWF2TM.
- Page 22/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
4. Architecture de nouvelle génération
Les applications « riches » qui utilisent la technologie Flash sont
déployées sur des serveurs J2EE. Nous savons que n’importe quelle
application au format « XML » peut être compilée au format SWF, et peut
être chargée de manière statique au travers d’une page Web existante.
Cette méthode est connue comme le déploiement « serverless » car aucun
serveur de présentation n’est nécessaire. Il suffit de disposer simplement
les fichiers binaires dans un serveur Web. Il manque à ces « applications »
-déployées de cette manière- certaines fonctionnalités comme la
possibilité, par exemple, de faire tourner des services Web basés sur
SOAP (Simple Object Access Protocol) ou d’appeler des méthodes à
distance avec le langage XML.
Alternativement, les applications « riches » peuvent être déployées comme
des servlets Java traditionnelles qui sont compilées et retournées au
navigateur Web dynamiquement. Cette méthode implique que le serveur
Web exécute le serveur de présentation (Flex/OpenLaszlo). Le serveur de
présentation est lancé au travers d’une application J2EE serveur standard
ou d’un container de servlets Java.
Figure 9 – La nouvelle génération d’applications Web.
Les serveurs de présentation sont donc des servlets qui nécessitent ainsi
un serveur d’application J2EE avec un JRE (Java Runtime Environment).
Nous allons maintenant étudier les concepts de communication entre Flash
et Java.
- Page 23/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
5. La communication entre Flash et un serveur d’application Java
L’un des concepts d’utilisation de ces API est similaire au modèle de
compilation JSP. La première fois qu’une application est demandée via
HTTP sur XML (XMLConnector), elle est compilée au format binaire puis
mise en cache pour servir aux demandes suivantes.
La première fois que le développeur charge une application « riche » au
format XML (MXML/LZX), notons qu’il y a un délai d’attente assez long
avant d’obtenir l’affichage de celle-ci. Cette lenteur est due à la
compilation de l’application au format binaire. L’exécution des demandes
suivantes sera plus rapide puisque l’application sera déjà compilée. Mais en
réalité, l’application « riche » est un fichier binaire SWF. Ce fichier est
mappé dans le fichier web.xml de l’application afin de pouvoir y accéder à
partir d’un navigateur, via une URL standard.
a) Interaction entre une animation Flash et une base de données
Pour permettre l’interaction d’une animation Flash et de serveur de
présentation avec une base de données, on peut utiliser la méthode de
HTTPService. Une application « riche » peut avoir besoin d’informations
extérieures à l’application elle-même tels que les résultats d’une requête
SQL. Pour permettre cette action, Adobe® a mis à disposition l’objet
HTTPService. Les appels de HTTPService sont asynchrones. L’événement
« Résultat » est déclenché sur le HTTPService quand les données
deviennent disponibles pour l’application cliente.
Figure 10 – Accès aux données
- Page 24/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
En utilisant HTTPService, nous pouvons envoyer des demandes « http » à
un serveur n et consommer les réponses t. Bien que le HTTPService
puisse être employé pour consommer différents types de réponses, il est
typiquement employé pour consommer du XML. Nous pouvons employer
celui-ci avec n’importe quel genre de technologie se trouvant côté
serveur : JSP, Servlet, ASP, Ruby on Rails, PHP, etc. Nous indiquons pour
cela le service cible dans la propriété de l’URL de HTTPService.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
<mx:HTTPService id="srv" url="catalog.jsp"/>
n
<mx:DataGrid dataProvider="{srv.lastResult.catalog.product}" width="100%"
height="100%"/>
t
<mx:Button label="Get Data" click="srv.send()"/>n
</mx:Application>
Fichier d’exemple .mxml
En utilisant HTTPService, le fichier donné en exemple fait appel à la JSP
« catalog.jsp ». Puis DataGrid t construit un tableau dans lequel il recevra
les résultats retournés par la classe product.java. La requête est initialisée
par le bouton « GetData ».
<%@page import="flex.testdrive.store.ProductService,
flex.testdrive.store.Product,
java.util.List"%>
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<%
ProductService srv = new ProductService();o
List list = srv.getProducts();
Product product;
for (int i=0; i<list.size(); i++)
{
product = (Product) list.get(i);
%>
<product productId="<%= product.getProductId()%>">q
<name><%= product.getName() %></name>
<description><%= product.getDescription() %></description>
<price><%= product.getPrice() %></price>
<image><%= product.getImage() %></image>
<category><%= product.getCategory() %></category>
</product>
<%
}
%>
</catalog>
Fichier d’exemple .jsp
Le fichier JSP réalise une instance de la classe ProductService (bean) o qui
traitera les requêtes SQL p p’ vers la base de données. Puis il récupère les
informations retournées par les requêtes q et les met en forme par le biais
de la classe Java Product.java r r’.
- Page 25/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Le bean réalise ici une requête SQL, ici une sélection de tous les champs
de la classe « product » de la base de données, classée par nom.
package flex.testdrive.store;
import
import
import
import
import
java.util.ArrayList;
java.util.List;
java.sql.*;
flex.testdrive.ConnectionHelper;
flex.testdrive.DAOException;
public class ProductService {
public List getProducts() {
ArrayList list = new ArrayList();
Connection c = null;
try {
c = ConnectionHelper.getConnection();p
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM product ORDER BY name");
while (rs.next()) {
list.add(new Product(
rs.getInt("product_id"),
rs.getString("name"),
rs.getString("description"),
rs.getString("image"),
rs.getString("category"),
rs.getDouble("price")));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
c.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list; …
Fichier d’exemple .java (javabean)
La classe Product.java, enfin un objet de la classe java (instance de la
classe), permet d’initialiser les différentes variables.
package flex.testdrive.store;
public class Product {
private int productId;
private String name;
private String description;
private String image; …
public Product() {
}
public Product(int productId, String name, String description,
String image, String category, double price) {
this.productId = productId;
this.name = name;
this.description = description;
this.image = …
}
public String getCategory() {r
return category;
}
public void setCategory(String category) {
…
Fichier d’exemple Product.java
- Page 26/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
b) Architecture et mécanisme interne du serveur de présentation
Le serveur de présentation (SDP) n’est en fait qu’une « servlet » ou
une application Java créant un pont entre l’application générée et les
composants de la machine. Il récupère les informations envoyées par
l’application Flash et les passe directement au serveur Web qui, lui, les
transmet directement à l’application Java SDP. Le SDP redirige (comme
nous l’avons vu précédemment) les requêtes vers la base de données mais
aussi vers les fichiers multimédias ou les services Web.
Le SDP s’ajoute au JRE lancé sur la machine, et lui ajoute une couche de
présentation.
Figure 11 – Architecture serveur de présentation
L’architecture d’un serveur de présentation (SDP) est divisée en trois soussystèmes principaux : le compilateur de l’interface, le gestionnaire de
données et le gestionnaire de connexions persistantes.
Le compilateur d’interface consiste en un compilateur de balises XML
(LZX/MXML), un compilateur de scripts JavaScript, un convertisseur de
média et le gestionnaire de cache.
Les deux compilateurs du gestionnaire d’interface convertissent
respectivement les balises XML de l’application et le code JavaScript en un
- Page 27/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
fichier binaire SWF exécutable par le client Flash. Durant le chargement
initial, le compilateur de l’interface génère un fichier en format SWF puis le
place dans un cache au travers du gestionnaire de cache - qui est
dépendant du gestionnaire de connexion persistante (ce qui permet de
conserver tout au long de la transaction, les propriétés de l’utilisateurs
authentifié) - à partir duquel il sera envoyé vers le client. En fonction de la
forme de l’appel du client, le fichier SWF est directement transmis ou est
inclus dans une page HTML. Le convertisseur de média permet de convertir
tout les formats de médias autorisés en un unique fichier binaire
compressé, lisible par le serveur de présentation.
Le gestionnaire de données comprend un connecteur/compilateur de
données, convertissant toutes les données binaires compressées lisibles
par le serveur de présentation et une série de connecteurs permettant à
l’application de récupérer des données via http/XML et SOAP. Les
applications « riches » peuvent ainsi interagir à travers le réseau avec les
bases de données, des services Web (WebServices), des fichiers XML et
d’objets Java.
Comme nous l’avons évoqué plus haut, le gestionnaire de connexions
persistantes gère l’authentification si nécessaire.
c) Côté client (Flash PlayerTM)
Une application « riche » fonctionne au sein d’une machine virtuelle
créée par le Flash PlayerTM, et forme sa propre architecture interne.
Le plugin Flash PlayerTM possède les avantages d’une architecture quasi
complète de déploiement des fichiers SWF et d’un environnement de rendu
graphique robuste et compact. Avec cette architecture, la solution Flash et
SDP évite la nécessité d’installation de logiciel clients supplémentaires.
Ceci permet de pallier à la difficulté de distribuer des applications sur les
différentes plates-formes existantes via le Web.
L’architecture de la machine virtuelle est divisée en trois grandes parties.
Les classes fondamentales des « frameworks » sont une librairie de
composants qui sont téléchargés à la demande, avec l’application fournie
par le SDP (aucune installation n’est requise).
Il y a quatre composants primaires :
•
le système d’évènements reconnaît et manipule les événements de
l’application (clics de la souris, manipulations des flux de données,
etc...). Il permet une programmation des évènements standards sur
le poste client basculant plus d’exécution de codes sur le CPU client.
Ceci améliore la réactivité de l’application « riche » relative aux
implémentations Web conventionnel et réduit le processus de
chargement de l’application placé sur le serveur hôte, en permettant
côté client des tâches du style tri, « processing », validation,
présentation dynamique à travers les différents états de l’application.
- Page 28/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Figure 12 – Architecture Machine virtuelle Flash PlayerTM
•
le gestionnaire de données (chargeur/lieur de données), sert de
pilote de trafic des données acceptant les flux de données à travers
le réseau à partir du SDP et des données liées (de la base de
données) jusqu’aux éléments permettant une présentation visuelle
appropriée comme des champs de texte, des tableaux, des menus …
Il joue un rôle central dans les applications « riches » incluant des
programmes qui utilisent des données mises à jour en temps réel.
•
le gestionnaire d’animation (présentation et ordonnancement)
permet aux développeurs de construire facilement une interface
dynamique de l’application avec un minimum de programmation. Il
permet aux développeurs de positionner un nombre variable
d’éléments de l’interface en utilisant le positionnement en pixels
relatif ou absolu. L’application « riche » qui en résulte s’appuie sur ce
composant pour gérer dynamiquement le positionnement des
éléments sur l’écran alors même que l’application rajoute ou enlève
des éléments de l’interface pour refléter les changements d’états de
l’application. Avec l’algorithme d’animation, les mises à jour de
l’interface écran sont rendues d’une manière fluide et continue,
- Page 29/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
communiquant clairement les changements d’états de l’application à
l’utilisateur. Ces comportements sont transparents pour les
développeurs.
•
le gestionnaire de services fournit un certain nombre de fonctions de
support utilisées par la plupart des applications. Ces services inclus
le support pour les minuteurs, le son et les dialogues asynchrones.
Les classes fondamentales augmentent les fonctions de rendu brut de
Flash Player avec des composants qui simplifient largement la création
d’applications Internet « riches ». Grâce à ces composants, l’utilisateur
final acquiert l’expérience d’une vraie interface dynamique et d’une
application plus productive.
Figure 13 – Nouvelle expérience – Source Adobe® Hôtel Broadmoor
- Page 30/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
6. La position de Sun Microsystems® sur les API Flash
Aujourd’hui, Sun Microsystems® est fortement implanté dans le
domaine de la sécurisation des données et son langage de programmation
Java est robuste. Ce respect de caractéristiques techniques lui conforte sa
place de leader dans le domaine des applications circulant via un réseau
filaire mais aussi sans fil.
Java/J2EE est une plate-forme Web qui a fait ses preuves et qui joue un
rôle pivot dans pratiquement toutes les stratégies informatiques. Il apporte
un modèle standard et ouvert à base de composants, une intégration
standardisée, un processus simple de développement de middleware, une
excellente portabilité et bien d’autres avantages permettent d’utiliser Java
comme base d’applications plus fiables, plus réutilisables, plus souples.
Java est un élément essentiel des applications Web haut de gamme.
Toutefois, il apparaît que les API Java standards livrées avec J2EE
n’incluent pas d’API permettant la génération de code Flash. J2EE est
pourtant doté d’API lui permettant de réaliser des interfaces graphiques
(composants SWING) et d’évènements entrants comme des séquences de
touches ou de mouvements de souris (le robot AWT) mais ne se compare
pas à ce que peuvent nous proposer FlexTM ou OpenLaszloTM.
- Page 31/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
V. Les autres domaines d’applications des API Java
Nous l’avons vu plus haut, il est possible d’utiliser le HTTPService et
d’accéder à des données contenues dans une base de données de manière
semblable aux JSP « traditionnelles ». Mais les frameworks présentés
permettent aussi d’utiliser différents moyens d’accéder à des données qui
peuvent être exploitées par d’autres périphériques tels que les téléphones
portables de nouvelle génération (technologie 3G), les organiseurs
électroniques (BlackBerryTM, PalmTM, Pocket PCTM, …), les consoles mobiles
de jeux
(WiiTM, PlayStationTM, …). Voici, en exemple, deux autres
méthodes d’accès aux données souvent utilisées dans ces technologies :
1. Accès aux données en utilisant les services Web
En utilisant une étiquette WebService, vous pouvez appeler (par le SOAP)
des services Web déployés dans votre serveur d’application. Les objets
retournés par les services Web sont dé-sérialisés automatiquement dans
des objets ActionScript. De même, des objets AS passés comme argument
à une opération de service Web sont agencés en accord avec la description
wsdl. Comme les HTTPServices, les appels de service Web sont
asynchrones.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
<mx:WebService id="srv" wsdl="http://coenraets.org/services/ProductWS?wsdl"
showBusyCursor="true"/>
<mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%"
height="100%">
<mx:columns>
<mx:DataGridColumn dataField="productId" headerText="Product Id"/>
<mx:DataGridColumn dataField="name" headerText="Name"/>
<mx:DataGridColumn dataField="price" headerText="Price"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Get Data" click="srv.getProducts()"/>
</mx:Application>
Fichier d’exemple SampleWebService.mxml
- Page 32/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
2. Accès aux données en utilisant le RPC Java
En utilisant RemoteObject, vous pouvez directement appeler des méthodes
d’objets Java déployés dans votre serveur d’application et consommer la
valeur de retour. Les méthodes des objets de Java retournés par le côté
serveur sont dé-sérialisés dans des objets dynamiques d’ActionScript.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
<mx:RemoteObject id="srv" destination="product"/>
<mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%"
height="100%"/>
<mx:Button label="Get Data" click="srv.getProducts()"/>
</mx:Application>
Fichier d’exemple SamplePOJO.mxml
3. L’ouverture vers de nouveaux services
Il est important dans ces différentes méthodes d’accès aux données
de savoir choisir entre services Web, XML et Remoting pour les applications
dynamiques. Chacune de ces méthodes conviennent plus à certaines
applications que d’autres. Parmi les nouvelles applications proposées, on
retrouve par exemple :
. les services météos, qui peuvent être intégrés dans vos
pages HMTL, mais aussi en tant qu’application autonome
sur votre PC (connecté à Internet), sur vos téléphones
mobiles et autres périphériques multimédia.
. la télévision numérique, qui incruste par exemple un flux
d’informations au bas de votre écran pour vous fournir un
flash de dernière minute.
. la vidéo en continu (streaming) pour les appareils 3G et
maintenant 4G.
. les jeux vidéos Flash avec l’utilisation des mécanismes multi-joueurs en
ligne.
- Page 33/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Conclusion
Les API Java qui permettent la génération de code Flash, trouvent
principalement leur utilité via les applications Internet « riches », qui sont
en plein essor actuellement dans les vitrines du plus grand centre
commercial virtuel mondial : le World Wide Web.
D’un côté, ces nouvelles applications permettront demain aux entreprises
de générer davantage de profits, en proposant des modèles d’échanges
conviviaux et simples d’utilisation à leurs clients, tout en leur présentant
des produits (ou concepts) de façon beaucoup plus dynamique et
ergonomique, et par conséquent plus attractive. Elles faciliteront
l’e-commerce et encourageront l’augmentation du nombre de transactions.
D’autre part, ces API simplifieront davantage le développement et
réduiront le temps de réalisation des interfaces graphiques évoluées qui
permettent de créer des applications Internet « riches », d’où des
économies en termes de coûts pour les entreprises.
A l’heure actuelle fleurissent sur Internet des mini-applications « riches »
gratuites (de production) ressemblant de plus en plus à des applications
dites « lourdes » et payantes (du type Word, Powerpoint, etc…). D’ailleurs,
à la surprise générale, profitant de la sortie récente de Microsoft VistaTM,
Microsoft® parle de l’arrivée imminente sur le marché de son propre
framework de développement d’applications Internet « riches », et du
WPF/E (Windows Presentation Foundation/EverywhereTM), qui s’appuie
sur la plate-forme Microsoft .NETTM, créant ainsi une chaîne complète de
production sous un seul et même label. Est-ce à dire que demain les
applications Internet « riches » pourront menacer la survie -voire
supplanter- ces dernières, ou seront-elles uniquement complémentaire et
orientées vers la réalisation d’applications de services électroniques ou liés
à l’e-commerce ?
- Page 34/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Annexes
About Flagstone
The frameworks were developed by Flagstone to easily create rich user interfaces for web
applications. The original code was written in objective-C and were designed to be used with
Apple's excellent but under-appreciated WebObjects. The code was then ported to Java with the
release of WebObjects 5 and at the insistence of early users.
Les frameworks ont été développés par Flagstone pour créer facilement des interfaces utilisateur
pour des applications Internet riches. Le code original a été écrit dans « objectif-c » et a été conçu
pour être utilisé avec l’excellent (mais sous-apprécié) WebObjects d'Apple. Le code a été alors
porté sur Java avec la version WebObjects 5 et à l'insistance des premiers utilisateurs.
Projects/Les projets
Some of the applications which the Transform and Translate frameworks have been used for
include:
Certaines applications pour lesquelles les Frameworks « Transform » et « Translate » ont été
utilisés incluent :
Dynamic report generation with ActionScript used to control basic animation. Reports? Animation?
Actually in practice this is not an oxymoron, the idea behind using Flash and ActionScript was to
create a strong brand image for the report - particularly if the report was being viewed online.
La génération de rapport dynamique avec ActionSript contrôlait habituellement l’animation de base.
Les rapports ? L’animation ? En fait, dans la pratique, ce n’est pas un oxymoron, l’idée derrière
l’utilisation de Flash et ActionScript était de créer une image de marque forte pour créer un
rapport – en particulier si le rapport était affiché en ligne.
Dynamic generated maps - create interactive maps that add more information than is supported by
for example Google Maps or Microsoft´s MapPoint. I still think this is one of the killer apps for Flash
on the web, particularly since the graphics model is scalable this could be a great way of deploying
location based services without worrying what size of screen the map or information is being
displayed on.
Des cartes générées dynamiquement– création de cartes interactives contenant plus d'informations
qui seraient utilisées par exemple, par des cartes Google® ou par Microsoft´s MapPoint™. Je
continue à penser que c'est un critère déterminant à l’adoption de Flash sur le Web, et en
particulier puisque le modèle graphique est redimensionnable, ceci pourrait être une bonne
manière de déployer des services basés sur la localisation sans se soucier de la taille de l’écran sur
lequel la carte ou l'information seront affichées.
Creating a platform to allow small businesses to easily advertise services on TV channels. This is a
Generator style application but rather than use a scripting language for "assemble" the animation it
simply used an existing Flash file as a template. The application simply substituted the correct
images and text then rendered the Flash file to a framebuffer where it was broadcast on cable TV
channels. The whole system was very cool - with SMS integration which allowed registered users to
order the services advertised.
La création d’une plate-forme pour permettre à de petites entreprises de proposer facilement des
services sur des canaux de TV. C'est un générateur de ce type d’applications, mais plutôt que
d'employer un langage de script pour « assembler » l'animation, il a simplement employé un fichier
Flash existant comme modèle. L'application substitue les images et le texte puis renvoie le fichier
- Page 35/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Flash à une zone tampon « framebuffer » où il sera émis sur des chaînes de TéléVision câblée. Le
système entier est original - avec l'intégration de SMS qui permettent aux utilisateurs enregistrés
de commander certains services annoncés.
Real Estate Sales - this application was similar to the advertising for small businesses except that
the goal was to create an interactive tour of a property. Again templates were used to create the
basic animation. The seller drew a basic floorplan of the house (using a custom Java drawing tool)
and uploaded this along with a set of photos to a server where the complete tour could be viewed
on-line or distributed to real estate offices and used as promotional material for potential
customers in advance of visiting the property.
Ventes immobilières - cette application était semblable à celle dédiée à la publicité décrite cidessus, la seule différence étant de créer une visite interactive d'une propriété. Des modèles ont
été utilisés pour créer l'animation de base. Le vendeur dessine un plan de la maison (à l'aide d'un
outil de dessin Java spécialisé) et télécharge ceci avec un ensemble de photos sur un serveur où la
visite complète pouvait être regardée en ligne ou distribuée aux agences immobilières, et être
utilisée en tant que matériel promotionnel pour les clients potentiels avant de visiter le bien
immobilier.
These are only a few of the big projects that I know the frameworks were used for. I worked on a
couple and got to see the final results so I now understand where the frameworks do a good job
and where they could stand some improvement. Including a parser from day one was a good idea.
Having now worked with a couple schemes for that used Flash files as templates I now have a few
good ideas that will be included in the next release.
Les frameworks n’ont été employés, à ma connaissance, que sur peu de projets importants pour le
moment. J'ai travaillé sur deux d’entre eux, jusqu’ à leur achèvement, et je comprends maintenant
où les frameworks apporte un avantage précieux et où l’on pourrait améliorer ce concept.
L’utilisation d’un parseur dès le début est une bonne idée. Ayant maintenant travaillé sur différents
scenarii nécessitant que des fichiers Flash soient utilisés comme gabarit, j'ai maintenant quelques
nouvelles idées qui seront incluses dans la version suivante.
- Page 36/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Transform SWF
The Transform SWF framework is a collection of classes for each of the tags and
data structures that make up the Flash (SWF) File Format Specification from
Macromedia. The classes provide a completely object-based API for parsing,
manipulating and generating Flash files. This allows Java based applications to
dynamically generate and update files that represent animations and documents
which can be easily distributed and displayed on any platform that supports a
graphical web browser.
Le Framework « Transform SWF » est un groupement de classes pour chacun des tags
et des structures de données qui constitue la spécification de format de fichier Flash
SWF de Macromedia. Les classes fournissent un API complètement orienté objet pour
analyser, manipuler et générer des fichiers Flash. Ceci permet aux applications
basées sur Java de générer dynamiquement et mettre à jour des fichiers qui
représentent des animations et documents qui peuvent facilement être distribués et
affichés sur n’importe quelle plate-forme qui supporte un navigateur Internet
graphique.
In addition to the classes supporting the core API several classes provide a higher
level interface to reduce the level of effort required to implement applications. These
simplify the integration of sound and images into Flash file while text can be displayed
using external font files allowing presentations to be localized for any spoken
language.
En plus des classes qui supportent le cœur de l’API, plusieurs classes fournissent un
niveau d’interface plus élevé pour réduire le niveau d’effort requis pour mettre en
oeuvre les applications. Celles-ci simplifient l’intégration du son et des images dans un
fichier Flash alors que le texte peut être affiché en utilisant des fichiers de polices
externes permettant à des présentations d’être localisées pour tout langage parlé.
Features/Caractéristiques
Provides a full API for manipulating Flash MX 2004 (Flash 7).
Offre une API complète pour manipuler Flash MX 2004 (Flash 7)
Parses and encodes files from the latest version of Flash (Flash 9).
Analyse et encode des fichiers à partir de la dernière version de Flash
Object-based API is easily expanded to support future Flash versions.
L’API orienté objet est facilement extensible pour supporter les nouvelles versions de
Flash
Generate files for any version of Flash.
Génère des fichiers pour n’importe quelle version de Flash.
Parse existing Flash files to deliver customised presentations.
Analyse les fichiers Flash existant pour livrer des présentations personnalisées
Generate images using JPEG, PNG and BMP files.
Génère des images utilisant des fichiers JPEG, PNG et BMP
Generate event and soundtracks from WAV and MP3 files.
Génère des évènements et des pistes sons à partir de fichiers WAV et MP3
Display text from AWT, OpenType or TrueType font definitions.
- Page 37/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Affiche le texte à partir des définitions de polices Abstract Window Toolkit (AWT),
OpenType ou TrueType
Comprehensive 2-D drawing API to create shapes from arbitrary complex paths.
API globale de dessin 2-D pour créer des formes à partir de chemins arbitraires et
complexes.
Java 2 Standard Edition code easily integrates with web application servers.
Le code de Java 2 Standard édition est facilement intégré avec des applications
serveurs Internet.
Frameworks are available with Open Source licensing.
Les Frameworks sont disponibles en licence « Open Source ».
Transform SWF framework is covered by the Berkeley Software Distribution (BSD)
license. This allows you to release applications that use the framework in source or
binary form. The only restriction when developing Open Source or commercial
applications is that you acknowledge that Flagstone Software Ltd. retains the
copyright to the code.
Le Framework Transform SWF est couvert par la licence « Berkeley Software
Distribution (BSD) ». Ceci vous permet de publier des applications qui utilisent le
framework sous sa forme source ou binaire. La seule restriction quand on développe
des applications en Open Source ou en version commerciale est d’admettre que
Flagstone Software Ltd. possède le copyright du code.
What’s New
Last Updated: 3rd Jan 2007
2.1.6 Bug Fixes resulting from testing the framework against the library of Flash files
from a large Flash Portal web site
Dernière version : le 3 Janvier 2007
Version 2.1.6
Déboggages résultant du test du framework comparé à la bibliothèque de fichiers
Flash à partir d’un important site web Flash.
Sample Code
Flash files can be built from scratch by simply constructing instances of objects that
represent the respective Flash data structure and adding them to an FSMovie object in
the order they will be executed by the Flash player.
Les fichiers flash peuvent être construits en partant de rien, par la simple construction
d’instances d’objets qui représentent la structure de données Flash et les ajoutant à
un objet FSMovie dans l’ordre dans lequel ils seront exécutés par le lecteur « Flash
Player »
FSMovie movie = new FSMovie();
movie.setFrameSize(new FSBounds(0, 0, 400, 400));
movie.setFrameRate(1.0);
- Page 38/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
movie.add(new FSSetBackgroundColor(FSColor.lightblue()));
movie.add(new FSDefineShape(shapeId, ....));
movie.add(new FSPlaceObject2(shapeId, layer, x, y));
movie.add(new FSShowFrame());
Complex animations are created in exactly the same way: defining the objects to be
displayed then adding, updating or removing them from the display list.
Les animations complexes sont réalisées exactement de la même manière : en
définissant les objets qui seront affichés puis ajoutés, mis à jour ou supprimés à partir
de la liste d’affichage.
The movie is then encoded to transform the objects into the binary representation
that will be decoded and executed by the Flash Player:
L’animation (flash) est ensuite encodée pour transformer les objets en représentation
binaire qui pourra être décodée et exécutée par le lecteur « Flash Player »
try {
movie.encodeToFile(filename);
}
catch (Exception e) {
... Process Exception ...
}
Transform SWF can also be used to parse existing Flash files and create objects for
each of the data structures decoded from the file.
Transform SWF peut aussi être utilisé pour analyser des fichiers Flash existant et
créer des objets pour chaque structure de données décodée à partir du fichier.
try {
FSMovie movie = new FSMovie(filename);
}
catch (Exception e) {
... Process Exception ...
}
The objects may be inspected and their attributes changed accordingly allowing Flash
files to be used as templates to deliver customised presentations.
Les objets peuvent être inspectés et leurs attributs modifiés en conséquence
permettant aux fichiers Flash d’être utilisés comme gabarits pour fournir des
présentations personnalisées.
More detailed examples are available to get you started with the Transform SWF
framework and how to use the concepts supported in Flash.
Des exemples plus détaillés sont disponibles pour vous permettre de démarrer avec le
framework Transform SWF et de savoir utiliser les concepts supportés par Flash ».
- Page 39/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
High Level Examples/Exemples d’un plus haut niveau
The classes in the com.flagstone.transform.util package of the framework are
designed to make it easy to load images, sounds and fonts stored in files and
generate the objects required to display them in a movie.
Les classes dans le paquet com.flagstone.transform.util de ce framework sont
étudiées pour rendre plus aisé le chargement d’images, de sons et de polices de
caractères stockés dans les fichiers, et générer les objets requis pour les afficher dans
l’animation Flash.
FSImageConstructor generator = new FSImageConstructor("image.png");
// Generate the object containing the shape definition.
FSDefineObject image = generator.defineImage(imageId);
// All images are displayed as a bitmap fill inside a shape.
FSDefineShape3 shape = generator.defineEnclosingShape(shapeId, imageId,
-xOrigin, -yOrigin, new FSSolidLine(borderWidth, borderColor));
// Add all the objects together to display the image.
movie.add(image);
movie.add(shape);
movie.add(new FSPlaceObject2(shapeId, layer, x, y));
movie.add(new FSShowFrame());
Sounds can be played in response to events, such as a button being clicked:
Les sons peuvent être joués en réaction à un événement (exemple : un bouton sur
lequel on clique).
FSSoundConstructor generator = new FSSoundConstructor("beep.wav");
//Add the sound definition and start playing it immediately.
movie.add(generator.defineSound(soundId));
movie.add(new FSStartSound(new FSSound(soundId, FSSound.Start)));
The FSSoundConstructor class can also be used to stream sounds allowing a sound
track to be easily added to a movie:
La classe FSSoundConstructor peut aussi être utilisée pour « streamer » des sons à
partir d’une piste son pour être facilement ajoutée à l’animation :
FSSoundConstructor generator = new FSSoundConstructor("soundtrack.mp3");
- Page 40/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
// Generate the header that describes the streaming sound.
movie.add(generator.streamHeader(samplesPerBlock));
//Play a block of sound for each frame shown.
for (int i=0; i<numberOfBlocks; i++)
{
movie.add(generator.streamBlock(i, samplesPerBlock));
movie.add(new FSShowFrame());
}
Displaying text is greatly simplified using the FSTextConstructor. The class may be
used to generate simple strings using TrueType, Flash or AWT font files. Support for
blocks of text and also Unicode strings is included.
L’affichage de texte est grandement simplifié avec la classe FSTextConstructor. La
classe peut être utilisée pour générer une simple chaîne de caractères utilisant le
format de police TrueType, Flash ou AWT. Le support des blocks de textes et aussi des
caractères Unicode est inclus.
FSTextConstructor generator = new FSTextConstructor(fontId, "Arial.ttf");
String message = "Display this string.";
FSDefineText2 text = generator.defineText(textId, message, size, color);
FSDefineFont2 font = generator.defineFont();
movie.add(font);
movie.add(text);
movie.add(new FSPlaceObject2(textId, layer, x , y));
movie.add(new FSShowFrame());
The FSShapeConstructor class adds a powerful tool for drawing arbitrary paths and
complex shapes. A full range of drawing commands is supported including quadratic
and Bezier curves. The class also supports commands for drawing simple geometric
shapes.
La classe FSShapeConstructor ajoute un outil puissant pour dessiner des formes
simples ou complexes. Une gamme complète de commandes graphiques est
supportée incluant les courbes quadratiques et Bézier. La classe supporte aussi les
commandes pour dessiner une forme géométrique simple.
FSShapeConstructor path = new FSShapeConstructor();
/*
* The line and fill styles used to render the shapes should be
* specified before drawing starts.
*/
path.add(new FSSolidLine(borderWidth, borderColor));
- Page 41/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
path.add(new FSSolidFill(fillColor));
/*
* Draw a rectangle with the origin at the centre of the shape.
*/
newPath();
setStyle(0, 0);
move(xOrigin-width/2, yOrigin-height/2);
rline(width, 0);
rline(0, height);
rline(-width, 0);
rline(0, -height);
closePath();
movie.add(path.defineShape(identifier));
The simplified examples shown are to illustrate how each of the classes in the
framework are used. Detailed, working code is included on the Examples page.
Les exemples simplifiés montrés sont pour illustrer comment chacune des classes sont
utilisées dans le framework. Du code plus détaillé est disponible dans la page des
exemples :
http://www.flagstonesoftware.com/examples.html
Doc API : http://www.flagstonesoftware.com/transform/datasheets/index.html
- Page 42/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Translate AS1
Translate AS1 is a compiler for Macromedia's ActionScript language. Scripts are
compiled to generate the binary encoded actions and byte-codes that are executed by
the Flash Player when a frame is displayed; a button is clicked or when a movie clip
responds to a mouse or keyboard event. The code can be added to the objects in the
Transform SWF framework or integrated with a third-party Flash library.
Translate AS1 est un compilateur pour le langage Macromedia ActionScript. Les
scripts sont compilés pour générer les actions encodées binaires et les bytes-codes qui
sont exécutés par le lecteur « Flash Player » quand une vignette est affichée, un
bouton est cliqué ou quand un « movie clip* » qui répond à une action de la souris ou
du clavier. (*Le « Movie clip » est un objet manipulé dans Macromedia flash qui est
placé automatiquement dans une bibliothèque. Il peut être soit entièrement créé sous
Macromedia Flash soit importé. Le « Movie clip » peut être instancié sur la scène de
l’animation flash autant de fois que l’animateur flash le veut ; ce peut être une simple
image comme un graphique vectoriel avancé. Nous pouvons l’assimiler un peu comme
une classe en Java et les instances sont des objets)
Translate AS1 greatly reduces the level of effort required to implement complex
behaviours when implementing Flash files. Rather than generating individual action
objects programmatically high-level ActionScript can be used - boosting productivity
and reducing errors.
Translate AS1 réduit considérablement le niveau d’effort à fournir pour réaliser des
comportements complexes quand les fichiers Flash sont implémentés. Plutôt que de
produire une action individuelle (= code procédural), des objets d’un haut niveau de
programmation ActionScript (typage fort) peuvent être utilisés - augmentant la
productivité et réduisant le risque d’erreurs.
Features/Caractéristiques
Supports ActionScript 1.x.
Il supporte ActionScript 1.x
Create scripts for keyboard or mouse events to control movies and movie clips.
Il crée les scripts pour les actions clavier ou souris, afin de contrôler des animations
ou des “Movie Clip”.
Program on-screen buttons to implement complex application behaviour.
Il programme les boutons affichés à l’écran pour mettre en application un
comportement complexe.
Generates binary encoded actions which can be integrated with any Flash library.
Il génère des actions encodées binaires qui peuvent être intégrées avec n’importe
quelle bibliothèque Flash.
The simple API is easy to use and integrate into applications.
L’API simple est facile à utiliser et à intégrer dans des applications.
Full syntax checking and accurate error reporting.
Vérification complète de la syntaxe et rapport des erreurs à un niveau détaillé.
Support for preprocessor directives to allow conditional compilation.
Supporte des directives préprocesseur pour permettre la compilation conditionnelle.
Java 2 Standard Edition code easily integrates with web application servers.
Le code Java 2 SE s’intègre facilement avec des applications Web serveurs.
- Page 43/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Frameworks are available with Open Source licensing.
Les frameworks sont disponibles sous licence Open Source.
http://www.gnu.org/licenses/license-list.fr.html
Cette licence est basée sur les termes des licences Expat et BSD modifiée. C'est une
licence de logiciel libre permissive simple, sans gauche d'auteur et compatible avec la
GPL GNU.
Translate AS1 is currently supports ActionScript 1.x. Support for ActionScript 2.0 is
planned.
Translate AS1 supporte actuellement ActionScript 1.X. Support prévu pour
ActionScript 2.0
Les données sur les Classes :
http://www.flagstonesoftware.com/translate/datasheets/index.html
- Page 44/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Describe SWF
Ever wondered what the contents of a Flash file were ? Now with Describe SWF you
can translate the data contained in Flash files into something more meaningful.
Describe SWF is a Flash file browser. You can navigate the hierarchical data
structures in a Flash file to see how animations are created.
Vous êtes-vous jamais demandé ce que contenait un fichier Flash ? Maintenant, avec
Describe SWF, vous pouvez traduire les informations contenues dans des fichiers
Flash sous une forme beaucoup plus significative. Describe SWF est explorateur de
fichiers Flash. Vous pouvez naviguer dans les structures des données des fichiers
Flash qui sont hiérarchisées pour voir comment les animations ont été créées.
Features/Caractéristiques
Fully supports the latest version of Flash.
Il supporte entièrement la dernière version de Flash.
Outline view allows you to quickly navigate through the decoded file.
La vue d’ensemble vous permet de naviguer rapidement au travers du fichier décodé.
TextView displays the values for each field in the selected object(s).
L’afficheur de texte (TextView) montre les valeurs pour chaque champ dans les objets
sélectionnés.
Display the encoded representation of selected objects and fields, either in binary or
hex.
Il affiche la représentation encodée des objets et champs sélectionnés, au travers d’un
fichier binaire ou hexadécimal.
Full descriptions of the data structures including all fields from the Flash File format
specification are available as you browse.
Les descriptions complètes des structures de données incluant toutes les parties d’un
fichier de spécification Flash, sont disponibles pendant que vous l’explorez.
Cross platform application written using Java 2 Standard Edition.
C’est une application multi-plate-formes écrite en utilisant Java 2 SE.
Who is Describe SWF for ? Qui utilise Describe SWF ?
Describe SWF is a useful tool for developers and the curious. If you are developing
software that generates Flash files with Describe SWF you can verify that the tags you
create follow the Flash specification. Rather than trying to display the file in a Flash
Player and trying to guess the cause of any errors, with Describe SWF you can view
the individual tags which make up your file to determine if any errors exist. For the
curious Describe SWF lets you browse the contents of a Flash file and study how the
SWF specification is put into practice.
Describe SWF est un utilitaire pour les développeurs et les curieux. Si vous avez
développé un logiciel qui génère des fichiers Flash avec Describe SWF, vous pouvez
vérifier que les « tags » que vous avez créés réponde à la spécification de Flash.
Plutôt que d’essayer d’afficher le fichier dans le lecteur « Flash Player » et d’essayer
de deviner les causes des différentes erreurs, avec Describe SWF vous pouvez voir
individuellement les « Tags » qui composent votre fichier pour déterminer si des
erreurs existent. Pour les curieux, Describe SWF vous laisse passer en revue le
contenu d'un fichier Flash et étudier comment les spécifications de SWF sont mises en
pratique.
- Page 45/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
JavaSWF2 - A Java Toolkit for Macromedia
Flash(TM) Parsing and Generation
http://www.anotherbigidea.com/javaswf/
JavaSWF2 is a set of Java packages that enable the parsing, manipulation and
generation of the Macromedia Flash(TM) file format known as SWF ("swiff").
JavaSWF2 est un ensemble de “packages Java” qui permet l’analyse, la manipulation
et la génération de fichiers Macromedia Flash (TM) connus sous le nom de fichiers
swiff (« SWF »).
JavaSWF2 is available as Java source code under the JavaSWF2-BSD License - which
is a BSD License that is compatible with the GPL.
JavaSWF2 est disponible en code source Java sous la licence JavaSWF2-BSD – qui est
une licence BSD compatible avec le GPL (Licence Publique Générale GNU).
This release is of Alpha quality - which means that it is not feature complete and has
not been thoroughly tested. However, there are no known major problems as of the
date of release.
Cette version est d’une qualité Alpha – ce qui signifie que ce n’est pas un dispositif
complet et qu’il n’a pas été testé dans sa globalité. Cependant, il n’y a pas de
problèmes majeurs connus depuis la sortie de cette version.
A Yahoo Group has been set up for discussion of the code, reporting bugs and issues
and sharing comments - http://groups.yahoo.com/group/JavaSWF-Support
Un groupe Yahoo a été créé pour discuter sur le code, rapportant les bogues et les
dysfonctionnements, et partageant les commentaires :
http://groups.yahoo.com/group/JavaSWF-Support
The documentation is still rudimentary and will be improved over the next few weeks,
independently of any code releases.
La documentation est encore rudimentaire et sera améliorée au cours des semaines à
venir, indépendamment de toutes les versions du code.
- Page 46/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
The JavaSWF2-BSD License
Copyright (c) 2001, David N. Main, All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met: La redistribution et l’utilisation du code sous sa forme source ou
binaire, avec ou sans modifications, sont permises dans la mesure où les conditions suivantes sont
respectées :
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer. La redistribution du code source doit mentionner le copyright ci-dessus, cette liste de
conditions et la décharge de responsabilités suivante.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials provided with the distribution. Les
redistributions du code sous forme binaire doit reproduire le copyright ci-dessus, cette liste de conditions
et la décharge de responsabilités dans la documentation et/ou les autres matériaux fournis avec la
distribution.
3. The name of the author may not be used to endorse or promote products derived from this software
without specific prior written permission. Le nom de l’auteur ne doit pas être utilisé pour endosser ou
promouvoir des produits dérivés de ce logiciel sans l’obtention préalable de son autorisation écrite
spécifique.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
CE LOGICIEL EST FOURNI PAR SON AUTEUR TEL QUEL, ET CE DERNIER SE DECHARDE DE TOUTE
GARANTIE EXPRESSE OU IMPLICITE, MAIS NON LIMITEE A, DES GARANTIES IMPLICITES DE
MERCHANDISING ET FORME POUR UN BUT SPECIFIQUE ; L’AUTEUR NE SERAIT ËTRE TENU
RESPONSABLE JURIDIQUEMENT POUR TOUT DOMMAGE CAUSE DE FACON DIRECTE, INDIRECTE,
ACCIDENTELLE, SPECIALE OU EXEMPLAIRE (INCLUANT, MAIS N’ETANT PAS LIMITE A, ACHAT OU
SUBSTITUTION DE BIENS ET SERVICES, PERTE D’USAGE, DE DONNEES OU PROFITS OU INTERRUPTION
DE BUSINESS) ET DE TOUTE THEORIE DE RESPONSABILITE LEGALE, QUE CE SOIT CONTRACTUEl,
JURIDIQUE PURE OU NEGLIGENCE DECOULANT DE L’UTILISATION DE CE LOGICIEL, MEME DANS LE CAS
OU L’UTILISATEUR EST AVERTI DE L’EVENTUALITE DE TELS DOMMAGES.
- Page 47/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
JavaSWF2
Installation and Requirements
Procédure d’installation et conditions affiliées.
There are no special installation instructions - JavaSWF2 is provided as Java source
code and it is assumed that you know how to compile it.
Il n’y a pas d’instructions particulières pour l’installation – JavaSWF2 est fourni en tant
que code source de Java, et on part du principe que l’utilisateur sait le compiler.
JavaSWF2 requires JDK 1.2 (Java 2) or later.
platform dependencies.
It is pure Java and has no native
JavaSWF2 requiert le JDK 1.2 (Java2) ou plus. C’est du Java pur et il n’a aucune
dépendance par rapport à une plate-forme d’origine.
Features/Caractéristiques
JavaSWF2 provides parsing and generating facilities for Flash 4 and Flash 5 content.
JavaSWF2 fournit des outils pour analyser et générer du contenu Flash 4 et Flash 5.
Transparent JPEGs and Sound are not implemented in this release, but they are on
the list. Also - ActionScript is only supported in its compiled form (action codes) support for ActionScript source is also on the list.
Les JPEGs transparents et le son ne sont pas implémentés dans cette version, mais ils
sont sur la liste. En outre - ActionScript est seulement supporté sous sa forme
compilée (codes exécutables) - le support de la source d'ActionScript est également
sur la liste.
JavaSWF2 Architecture/L’architecture de JavaSWF2
The
code
centers
around
the
interfaces
defined
in
the
com.anotherbigidea.flash.interfaces package. These interfaces are used to pass
various information about the contents of a Flash SWF file. The SWF parsers and
writers implement these interfaces and drive other classes that implement them.
Le cœur du code se porte sur les interfaces qui sont définies dans le paquet
com.anotherbigidea.flash.interfaces. Ces interfaces sont employées pour
transmettre diverses informations sur le contenu d'un fichier Flash SWF. Les analyses
et les écritures de fichier SWF implémentent ces interfaces et pilotent d'autres classes
qui les implémentent.
There are two levels within JavaSWF2 - the file format level and a more abstract
object model. The file format level provides access to all the details of the SWF file
format - both in parsing and in writing - and is useful if you have knowledge of the file
format and need to implement fast and optimal parsing or generating code.
Il y a deux niveaux dans JavaSWF2 - le niveau de format de fichier et un niveau plus
abstrait de modèle d'objet. Le niveau de format de fichier permet d'accéder à tous les
détails d’un fichier SWF - dans l’analyse et dans l'écriture - et est utile si vous avez la
- Page 48/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
connaissance de ce format de fichier et si vous devez implémenter de façon rapide et
optimale le code analysé ou généré.
The
object
model
level
is
implemented
by
the
classes
in
the
com.anotherbigidea.flash.movie package and provides a means to access and
create SWF content without knowing all the details of the file format.
Le niveau du modèle objet est implémenté par les classes contenues dans le paquet
com.anotherbigidea.flash.movie et fournit des moyens d'accéder et créer du
contenu SWF sans connaître tous les détails du format de fichier.
Refer to the Summary of Classes below for further details.
Se référer au sommaire des classes ci-dessous pour plus de détails.
XML to/from SWF/XML vers/à partir d’un fichier SWF
The DTD for the XML representation of SWF is given in javaswf-dtd.txt
Le DTD (Documents Type Declaration – Documents des déclarations type –W3C :
http://www.w3.org/TR/2000/REC-xml-20001006 ) pour la représentation XML d’un
fichier SWF est donné dans le fichier javaswf-dtd.txt
javaswf-dtd.txt
To compile the classes mentioned below you will need the org.xml.sax.. packages in
the classpath. These are the standard SAX(2) interfaces that are included in the
JavaSWF2 releases and should also come included in all recent XML parser packages.
The Apache Xerces and Crimson parsers are recommended - but any compliant SAX2
parser will do.
Pour compiler les classes mentionnées ci-dessous, vous aurez besoin des paquets
org.xml.sax.. dans l’environnement (Path). Ce sont les interfaces SAX (2) standards
qui sont incluses dans les versions de JavaSWF2 et qui devraient également être
incluses dans tous les paquets d’analyse XML récents. Les analyseurs Apache Xerces
et Crimson sont recommandés - mais n'importe quel analyseur SAX2 conforme suffira.
(SAX = Simple API for Xml, API simple pour XML - L'originalité de cette interface est de fonctionner sous un
mode événementiel, SAX envoyant des évènements (sax events) aux outils XML au fur et à mesure de son
ananlyse. Cette approche permet de traiter un document en cours d’analyse sans attendre que l'ensemble
du document soit entièrement analysé. : http://www.megginson.com/downloads/SAX/ )
To
convert
from
SWF
to
XML
use
the
com.anotherbigidea.flash.readers.SWFSaxParser class.
This implements the
standard org.xml.sax.XMLReader interface - so it looks like an XML parser. It also
implements SWFTagTypes and so can be driven by a SWF parser. The main method
of SWFSaxParser is a command line utility to read a SWF and write out XML.
Pour convertir à partir d’un fichier SWF vers un fichier XML utiliser la classe
com.anotherbigidea.flash.readers.SWFSaxParser. Elle implémente l’interface
standard de org.xml.sax.XMLReader – afin qu’il ressemble à un analyseur d’XML. Il
implémente également SWFTagTypes et ainsi il peut être piloté par un analyseur de
SWF. La méthode principale de SWFSaxParser est un utilitaire en ligne de
commande pour lire un SWF et pour écrire XML en sortie.
To convert from XML back to SWF use the com.anotherbigidea.flash.
writers.SWFSaxWriter class. This can be driven by any SAX2 XML parser and will
drive a SWFTagTypes implementation. There is no utility provided for XML to SWF
since this would mean a dependency on a particular XML parser (until JAXP in
- Page 49/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
incorporated). However, there is a sample provided below of how to hook up the
Xerces parser to produce SWF output.
Pour retransformer un fichier XML en un fichier SWF d’origine, utiliser la classe
com.anotherbigidea.flash.writers.SWFSaxWriter. Ceci peut être piloté par
n'importe quel analyseur XML SAX2 et mènera à une implémentation de
SWFTagTypes. Il n'y a aucun utilitaire fourni pour passer du format XML à SWF
puisque ceci signifierait une dépendance sur un analyseur particulier XML (jusqu'à
JAXP incorporé ?). Cependant, il y a un exemple fourni ci-dessous de la façon de
connecter l’analyseur Xerces pour produire un fichier SWF.
Samples / Exemples
More documentation will follow. However, the following samples provide an
introduction to using JavaSWF2:
Plus de documentation suivra. Cependant, les échantillons suivants fournissent une
introduction à l’utilisation de JavaSWF2 :
How to unprotect a SWF file: See the
com/anotherbigidea/flash/Unprotector.java class in the distribution file.
Comment déprotéger un fichier SWF : Voir la classe com/anotherbigidea/flash/
Unprotector.java dans le fichier de distribution.
- Page 50/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to parse a SWF and dump its contents as text.
Comment analyser un SWF et « modifier » son contenu en texte.
import
import
import
import
java.io.*;
com.anotherbigidea.flash.interfaces.*;
com.anotherbigidea.flash.writers.*;
com.anotherbigidea.flash.readers.*;
/**
* Reads and parses a SWF file and dumps a textual representation
* to System.out.
* Lit et analyse le fichier SWF et convertit la représentation textuelle vers
* System.out
* SWFTagDumper is a class that implements the SWFTagTypes interface
* so it can be driven by the TagParser class.
* SWFTagDumper est une classe qui implémente l’interface SWFTagTypes
* qui peut être pilotée par la classe TagParser.
*/
public class DumpSWF
{
/**
* First arg is the name of the input SWF file
* Le premier argument est le nom du fichier SWF d’entrée. « in »
* If second arg exists then actions are decompiled - the arg is ignored
* Le second argument existe quand les actions sont compilées – L’argument est
* ignoré.
*/
public static void main( String[] args ) throws IOException
{
FileInputStream in = new FileInputStream( args[0] );
SWFTagDumper dumper = new SWFTagDumper(false, args.length > 1 );
TagParser parser = new TagParser( dumper );
SWFReader reader = new SWFReader( parser, in );
reader.readFile();
in.close();
//must flush - or the output will be lost when the process ends
//doit nettoyer - ou la sortie sera perdue quand le processus sera fini
dumper.flush();
}
}
- Page 51/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to extract all the static text in a movie.
Comment extraire tout texte statique dans une animation.
import java.io.*;
import java.util.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.readers.*;
import com.anotherbigidea.flash.structs.*;
/**
* Shows how to parse a Flash movie and extract all the text in Text symbols
* and the initial text in Edit Fields. Output is to System.out.
* montre comment analyser une animation Flash et extraire tout texte en symboles
* texte (Text symbols) et le texte initial en champs d’édition (Edit Fields).
*
* A "pipeline" is set up in the main method:
* Une « pipeline » est mise en place dans la méthode principale :
*
* SWFReader-->TagParser-->ExtractText
*
* SWFReader reads the input SWF file and separates out the header
* and the tags. The separated contents are passed to TagParser which
* parses out the individual tag types and passes them to ExtractText.
* SWF Reader lit le fichier SWF entré et sépare l’entête et les tags. Les
* contenus séparés sont transmis à TagParser qui analyse les types de tags
* individuels et les transmet à ExtractText.
* ExtractText extends SWFTagTypesImpl and overrides some methods.
*/
public class ExtractText extends SWFTagTypesImpl
{
/**
* Store font info keyed by the font symbol id
* Each entry is an int[] of character codes for the correspnding font glyphs
* (An empty array denotes a System Font)
*/
protected HashMap fontCodes = new HashMap();
…
- Page 52/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to create a simple movie at the file format level.
Comment créer une animation simple au niveau du format de fichier.
import java.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.structs.*;
/**
* An example of writing directly to the SWF file format interfaces.
* Create a movie consisting of 4 instances of a Movie Clip containing
* a rotating red square.
*
* Compare this to RedSquare.java
*/
public class RedSquare2
{
/**
* First arg is output filename
*/
How to create a simple movie using the object model.
Comment créer une animation simple en utilisant le modèle objet.
import java.io.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.structs.*;
import com.anotherbigidea.flash.movie*;
/**
* An example of using the Movie package to create a simple Flash movie
* consisting of 4 instances of a Movie Clip containing a rotating red
* square.
*/
public class RedSquare
{…
- Page 53/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to append some frames to an existing movie.
Comment apposer quelques armatures à une animation existante.
import java.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.readers*;
/**
* Shows how to insert a number of frames at the end of a movie.
*
* A "pipeline" is set up in the main method:
*
*
SWFReader-->AddFrames-->SWFWriter
*
* SWFReader reads the input SWF file and separates out the header
* and the tags. The separated contents are passed to AddFrames which
* passes them on to SWFWriter, which writes to the output file.
*
How to create a Movie object from an existing SWF.
Comment créer un objet d’animation à partir d'un fichier SWF existant.
import java.io.*;
import java.util.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.movie*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.readers*;
import com.anotherbigidea.flash.writers.*;
/**
* Simple example of using MovieBuilder to create a Movie object.
* Also shows that MovieBuilder creates a map of the defined symbols.
*/
public class ReadMovie
{
public static void main( String[] args ) throws Exception
{
FileInputStream in = new FileInputStream( args[0] );
- Page 54/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to create text using the object model.
Comment créer du texte en utilisant le modèle objet.
import java.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.structs.*;
import com.anotherbigidea.flash.movie.*;
/**
* Example of creating text using the Movie package.
* Copies the font glyph definitions from an existing SWF.
*/
public class TextHigh
{
/**
* arg[0] is the name of the SWF to be output. …
How to load a JPEG using the object model.
Comment charger un JPEG en utilisant le modèle d'objet.
import java.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.structs.*;
import com.anotherbigidea.flash.movie.*;
/**
* Example of importing a JPEG image.
*/
public class ImportJPEG
{
/**
* args[0] is filename of JPEG
* args[1] is filename of output SWF
*/ …
- Page 55/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Sample of writing frame actions.
Exemple d'écriture d’actions d’image.
import java.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.flash.structs.*;
/**
* Creates an Edit Field and writes the current date/time to it in a loop
*/
public class TimeField
{
/**
* First arg is output filename
*/
public static void main( String[] args ) throws IOException
{
SWFWriter writer = new SWFWriter( args[0] );
SWFTagTypes swf = new TagWriter( writer );
swf.header( 5,
-1,
//Flash version
//unknown length
300 * SWFConstants.TWIPS, //width in twips
50 * SWFConstants.TWIPS, //height in twips
2,
//frames per sec
-1 ); //frame count to be determined
swf.tagSetBackgroundColor( new Color(255,255,255) );
//--Serif system font
swf.tagDefineFont2( 1, SWFConstants.FONT2_ANSI, "_serif", 0, 0, 0, 0,
null, null, null, null, null, null );
//--Edit Field with variable "foo"
swf.tagDefineTextField( 2, "foo", null,
new Rect( 0, 0, 6000, 600 ),
0, new AlphaColor(0,0,255,255),
- Page 56/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
How to convert an XML file to SWF.
Comment convertir un fichier XML en fichier SWF.
import java.io.*;
import java.awt.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.movie.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.writers.*;
import com.anotherbigidea.util.xml.Xerces.*;
/**
* Example of converting an XML file to a SWF file.
* Key point is the use of the SWFSaxWriter class - this implements
* the standard SAX2 ContentHandler interface (via its parents) and
* can be driven directly from any compliant SAX2 XML parser.
*
* SWFSaxWriter drives an implementation of the SWFTagTypes interface.
*
* To convert SWF to XML use the main method of the
* com.anotherbigidea.flash.readers.SWFSaxParser class.
*
* The DTD for the XML is given in javaswf-dtd.txt
*
* Uses the Apache Xerces XML parser - download from apache.org.
*
* Arg[0] = input xml filename
* Arg[1] = output swf filename
VerdanaFont.swf - font used by the TextHigh.java sample.
VerdanaFont.swf - police employée par l’exemple TextHigh.java.
http://www.anotherbigidea.com/javaswf/samples/VerdanaFont.swf
- Page 57/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Summary of Classes/ Résumé des classes
Package com.anotherbigidea.flash
Unprotector
Simple Utility to unprotect a Flash movie
SWFConstants
Constants used by many of ther other packages including tag type codes and various flags
SWFActionCodes
Constants used in Action Script processing
Package com.anotherbigidea.flash.interfaces
SWFHeader
Interface for passing the SWF File Header details
SWFTags
Interface for passing the contents (as a blob) of a
SWF tag (extends SWFHeader)
SWFSpriteTagTypes
Interface for passing the details of the tags that can
be used in both the main timeline and sprite
timelines (extends SWFTags)
SWFTagTypes
Interface for passing the details of the remainder of
the tags that can only be used in the main timeline
(extends SWFSpriteTagTypes)
SWFActions
Interface for passing action codes
SWFVectors
Interface for passing Shape and Glyph vectors
SWFShape
Interface for passing Shape style definitions and
style changes (extends SWFVectors)
SWFText
Interface for passing text records as part of the
definition of the SWF Text definition tags
Package com.anotherbigidea.flash.readers
SWFReader
Reads a SWF file input stream and passes the
header and tag contents to any implementation of
the SWFTags interface.
TagParser
Implements the SWFTags interface. Parses the
contents of all tags and passes the detail to any
implementation of the SWFTagTypes interface.
ActionParser
Parses an action code array (chunk of compiled
ActionScript) and drives any implementation of the
SWFActions interface.
SWFSaxReader
Implements SWFTagTypes and the XML standard
SAX2 XMLReader interface. Converts SWF to XML.
MovieBuilder
Implements the SWFTagTypes interface and builds
an instance of the
com.anotherbigidea.flash.movie.Movie "object
model" class.
Package com.anotherbigidea.flash.writers
SWFWriter
An implementation of the SWFTags interface that
writes to an output stream or file. SWFWriter will
also calculate the length and frame count of the
movie if not known.
TagWriter
An implementation of the SWFTagTypes interface
that reconstructs the tags in binary form and writes
them to any implementation of the SWFTags
interface.
- Page 58/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
ActionWriter
An implementation of the SWFActions interface that
builds a binary action code array.
ActionTextWriter
An implementation of the SWFActions interface that
writes a textual representation of the action codes.
SWFSaxWriter
An implementation of the standard SAX2
ContentHandler interface that drives any
implementation of SWFTagTypes. When driven by a
SAX2 XML Parser will convert XML back to SWF.
SWFTagDumper
An implementation of the SWFTagTypes interface
that writes a textual representation of the entire
Flash movie.
SWFTagTypesImpl
An implementation of the SWFTagTypes interface
that passes all the method calls directly to another
implementation of the same interface. Useful as a
parent class when implementing tag filters.
SWFActionsImpl
An implementation of the SWFActions interface that
passes all the method calls directly to another
implementation of the same interface. Useful as a
parent class when implementing action filters.
DummySWFWriter
An implementation of the SWFTags interface that
does nothing - use as a sink when output is not
required.
Package com.anotherbigidea.flash.structs
...
Various structures used in the other packages
Package com.anotherbigidea.flash.movie
Movie
The root class in the Flash object model.
...
Other classes represent different symbol types in
the object model.
- Page 59/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Table des illustrations
NB : toutes les figures présentes dans cette étude ont été conçues et réalisées par mes
soins, à l’exception des figures no. 8 et 13.
FIGURE 1 – NOUVELLE GENERATION D’APPLICATIONS ................................................................................................................... 3
FIGURE 2 – EDI MACROMEDIA FLASH .......................................................................................................................................... 4
FIGURE 3 – COMPOSITION D’UNE APPLICATION TROIS TIERS. ......................................................................................................... 8
FIGURE 4 – LE MODELE MVC..................................................................................................................................................... 10
FIGURE 5 – LES DIFFERENTES ETAPES ............................................................................................................................................. 11
FIGURE 6 – RIA (RICH INTERNET APPLICATIONS)......................................................................................................................... 16
FIGURE 7 – LES DOMAINES D’APPLICATION ................................................................................................................................. 17
FIGURE 8 – EDI/API FLEX ........................................................................................................................................................... 21
FIGURE 9 – LA NOUVELLE GENERATION D’APPLICATIONS WEB. ................................................................................................... 23
FIGURE 10 – ACCES AUX DONNEES ............................................................................................................................................ 24
FIGURE 11 – ARCHITECTURE SERVEUR DE PRESENTATION.............................................................................................................. 27
FIGURE 12 – ARCHITECTURE MACHINE VIRTUELLE FLASH PLAYERTM ............................................................................................. 29
FIGURE 13 – NOUVELLE EXPERIENCE – SOURCE ADOBE® HOTEL BROADMOOR ......................................................................... 30
- Page 60/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Glossaire et Abbréviations
ActionScript
ActionScript 3.0 est un puissant langage de programmation orienté objet qui permet la création
ultra-rapide d'applications RIA. Il associe avec simplicité applications ultra-complexes,
ensembles de données volumineux et bases de code réutilisables, orientées objet. Grâce à
ActionScript 3.0, les développeurs obtiennent une productivité et des performances optimales
avec les applications Flex. Reposant sur ECMAScript, langage international normalisé de
programmation de scripts, ActionScript 3.0 est compatible avec sa spécification linguistique.
API (Application Programming Interface)
Une API est une interface de programmation normalisée permettant à un logiciel de faire appel
aux fonctions d'un autre programme déjà disponible sur une machine. Autrement dit, c’est une
bibliothèque de fonctions destinées à être utilisées par les programmeurs dans leurs
applications. Ces fonctions facilitent l'écriture des programmes en fournissant des routines
(procédures) pour gérer des éléments particuliers (affichage, pilotage de périphériques…).
Architecture trois tiers
L'architecture trois tiers (« 3-Tier » en anglais) ou architecture à trois niveaux est l'application
du modèle plus général qu'est le multi-tiers. C'est une extension du modèle client/serveur.
ASP (Active Server Pages)
C'est une technologie Web dynamique, équivalente et concurrente de PHP. Développée par la
société Microsoft, elle permet de pouvoir concevoir des sites Web proposant des fonctionnalités
insoupçonnables. En effet, cette technologie permet d'adjoindre au code HTML d'un site, des
scripts (des petits programmes) qui seront traités par le serveur Web, avant que le document
demandé ne soit renvoyé au client. Grâce à un mécanisme très permissif (COM: Component
Object Model), le service Web va ainsi pouvoir manipuler un grand nombre de ressources sur le
poste serveur (bases de données, système de fichiers, mémoire, ...).
BALISES (TAGS)
Les langages de balisage (sous-classe des langages de description) représentent une classe de
langages spécialisés dans l'enrichissement d'information textuelle. Ils opèrent grâce aux
balises, unités sémantiques délimitant chacune un ensemble à l'intérieur d'un fichier texte,
souvent en unicode.
L'inclusion de balises permet de transférer à la fois la structure du document et son contenu.
Cette structure est compréhensible par un programme informatique, ce qui autorise un
affichage personnalisé selon des règles pré-établies ; la typographie (en premier lieu la fonte)
et d'autres éléments de présentation peuvent changer. On peut de plus inclure des éléments
non-textuels.
BMP/CMP (Bean Managed Persistence/Container Managed Persistence)
Ce sont des EJB entités.
Les EJB entités sont des beans ayant majoritairement pour vocation d'être persistants, c'est-àdire pouvant être stockés sur un support physique entre deux sessions.
Les EJB entités peuvent être de deux sortes : BMP (Bean Managed Persistence) ou CMP
(Container Managed Persistence).
- Page 61/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Les EJB BMP sont des beans dont la persistance a dû être programmée par le développeur (Ce
dernier doit respecter un format pour la classe et les méthodes à implémenter sont imposées
par la norme).
Les EJB CMP sont eux des beans dont la persistance est directement assurée par le conteneur
d'EJB ; le mapping entre l'objet et son support de persistance est indiqué au conteneur via les
fichiers descripteurs de déploiement. Le développeur une fois le fichier de déploiement réalisé
n'a pas besoin d'écrire le code de persistance.
Bytecode
Le bytecode est un code-objet, intermédiaire entre le source et le binaire exécutable, utilisé en
Java pour permettre un usage multi-plate-forme de ce langage. Le code n’est donc pas
directement compréhensible par le processeur, ce qui peut provoquer certaines lenteurs. Le
bytecode est exécuté dans une VM (virtual machine). Il est appelé bytecode du fait de son
format où chaque instruction est codée sur un octet (byte en anglais), parfois suivie d'un
nombre variable de paramètres comme des registres ou des adresses mémoire.
CPU
Le CPU (Central Processing Unit) ou « Unité centrale de traitement » en français est un
processeur : c’est le composant essentiel d'un ordinateur qui interprète les instructions et traite
les données d'un programme.
CSS (Cascading Style Sheets)
Le langage CSS (Cascading Style Sheets : feuilles de style en cascade) est utilisé pour décrire
la présentation d'un document structuré écrit en HTML ou en XML, et c'est le World Wide Web
Consortium (W3C) qui en a la direction.
CSS est utilisé pour définir les couleurs, les polices, le rendu, et d'autres caractéristiques liées à
la présentation d'un document. L'objectif est de bien séparer la structure (écrite en HTML ou
similaire) et la présentation (en CSS) du document. Cette séparation fournit un certain nombre
de bénéfices, permettant d'améliorer l'accessibilité, de changer plus facilement de structure et
de présentation, et de réduire la complexité de l'architecture d'un document. Enfin, CSS permet
de s'adapter aux caractéristiques du récepteur.
HTML ne décrit que l'architecture interne, et CSS décrit tous les aspects de la présentation. CSS
peut définir couleur, police, alignement de texte, taille, position, mais aussi le formatage non
visuel, comme la vitesse à laquelle le document doit être lu par des lecteurs de texte.
EDI (Environnement de Développement Intégré)
Un EDI est un environnement de développement intégré (IDE en anglais pour Integrated
Development Environment) c’est-à-dire un programme regroupant un éditeur de texte, un
compilateur, des outils automatiques de fabrication, et souvent un débogueur.
EJB (Enterprise JavaBeans)
La technologie EJB est une architecture de composants logiciels côté serveur pour la plateforme de développement J2EE.
- Page 62/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Firewall
Ensemble de programmes conçus pour protéger les ordinateurs d’un réseau privé de tentatives
d’intrusion, de piratage ou d’infection par des virus informatiques provenant d’autres réseaux.
Sous forme de boîtiers autonomes ou de logiciel (installé sur une machine serveur ou
directement sur le PC de l’internaute), le coupe-feu filtre toutes les parcelles d’informations
(paquets) susceptibles d’entrer sur le réseau privé et détermine, en fonction de règles préétablies, s’il doit autoriser ou rejeter la communication.
FlashTM
Logiciel destiné à la création d’images graphiques animées vectorielles. Les images vectorielles
se distinguent des images classiques en ce qu’elles sont constituées exclusivement d’une série
de formes géométriques représentant des équations mathématiques. Cette technique permet
de réaliser des images de taille importante ou des animations complexes tout en conservant
une taille de fichier très réduite. Ces données sont restituées sur l’écran de l’internaute grâce à
un composant logiciel, couplé au navigateur Web. Adobe FlashTM (anciennement Macromedia
FlashTM; nom original FutureSplash AnimatorTM), ou simplement Flash, se réfère à Adobe Flash
PlayerTM et à un logiciel multimédia utilisé pour créer le contenu d’Adobe Engagement
PlatformTM. Mais le terme « Flash » peut se référer à un lecteur, un environnement ou à un
fichier d’application. Depuis son lancement en 1996, la technologie Flash est devenue une des
méthodes les plus populaires pour ajouter des animations et des objets interactifs à une page
Internet ; de nombreux logiciels de création et OS sont capables de créer ou d’afficher du Flash.
Flash est généralement utilisé pour créer des animations, des publicités ou des jeux vidéo. Il
permet aussi d'intégrer de la vidéo en streaming dans une page, jusqu'au développement
d'applications Rich Media. Les fichiers Flash, généralement appelés "animation Flash" sont au
format .swf. Ils peuvent être inclus dans une page Web et lus par le plugin Flash du navigateur,
ou bien interprétés indépendamment dans le lecteur Flash Player.
Flash PlayerTM
Adobe Flash PlayerTM est un moteur d'exécution client hautes performances et compact, garant
d'interactions puissantes et homogènes avec les principaux systèmes d'exploitation,
navigateurs, téléphones mobiles et terminaux. Flash PlayerTM, développé et distribué par Adobe
Systems® (qui acheta Macromedia® en 2005), est une application client fonctionnant sur la
plupart des navigateurs Internet. Ce logiciel permet la création de graphiques vectoriels et de
bitmap, un langage script appelé ActionScriptTM et un stream bi-directionnel de l’audio et vidéo.
C‘est un logiciel d'environnement de développement intégré (IDE) utilisé pour lire les fichiers
Flash. Adobe Flash PlayerTM 9 représente un progrès sans précédent par rapport à Flash
PlayerTM 8. Il s'agit d'un moteur d'exécution client de qualité professionnelle entièrement revu
et corrigé, capable de gérer les applications à fort pourcentage de données les plus exigeantes
sans ralentir la cadence. Il inclut une toute nouvelle ActionScript Virtual MachineTM (AVM) ultraoptimisée, baptisée AVM2, qui gère les rapports d'erreur et le débogage standard. Grâce à sa
compatibilité avec les sockets binaires, il permet aux développeurs d'étendre les fonctionnalités
du lecteur de sorte qu'il puisse fonctionner avec tout protocole binaire. Flash PlayerTM 9 se
révèle un moteur multiplate-forme encore plus sécurisé et fiable, dont Adobe FlexTM 2 utilise les
fonctionnalités.
FLEXTM
Adobe Flex™ 2 permet aux développeurs de créer une classe entièrement nouvelle
d'applications Internet riches (RIA), du fait que cette solution repose sur des technologies
nouvelles et actualisées qui leur offrent au cours du processus de développement davantage de
possibilités d'accroître la richesse des applications créées. Toutes ces technologies œuvrent
ensemble pour doper la productivité des développeurs et améliorer la satisfaction des
utilisateurs.
- Page 63/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
FRAMEWORK
Le framework (ou cadre d’applications) est l’ossature, la charpente
framework est aussi un ensemble de bibliothèques permettant le
d'applications. Il fournit suffisamment de briques logicielles pour
application aboutie. Ces composants sont organisés pour être utilisés
avec les autres.
d’une application. Un
développement rapide
pouvoir produire une
en interaction les uns
Front et back office
En informatique, le terme front office est un terme d'architecture logicielle. Il désigne la partie
qui prend en charge l'interface d'une application, par opposition au back office qui lui regroupe
la partie gestion (qui, par rapport à une architecture trois tiers, regroupe la partie métier et
données). Par analogie, on peut comparer le front office à la partie d'un magasin qui est
fréquentée par les clients, tandis que le back office correspond davantage à l'administration,
aux entrepôts, aux échanges avec les partenaires, etc…
HTML (Hypertext Markup Language)
Le HTML est le langage informatique créé et utilisé pour écrire les pages Web. Il permet en
particulier d'insérer des hyperliens dans du texte, donc de créer de l'hypertexte, d'où le nom du
langage. Techniquement, HTML est une application du Standard Generalized Markup Language
(SGML). Le développement de HTML proprement dit a cessé depuis 1999, et son successeur, le
XHTML, est une application de l'Extensible Markup Language (XML).
HTTP (HyperText Transfer Protocol)
Le http (protocole de transfert hypertexte) est une méthode d’échange de fichiers (textes,
images, multimédia) sur le Web. HTTP désigne la forme de la requête qu’un navigateur adresse
au site Web lorsque l’internaute tape une adresse Web (URL) ou clique sur un lien hypertexte.
Cette demande est formalisée par le navigateur de l’internaute en une requête HTTP. Cette
dernière sera reçue par un des logiciels fonctionnant en permanence sur le serveur Web, le
démon (daemon) HTTP et chargé d’attendre et de traiter les requêtes de pages des internautes.
Du point de vue de l’internaute, la « réponse » est la page Web demandée ou une fraction de
celle-ci. A chaque requête HTTP, une connexion TCP/IP est établie entre l’ordinateur de
l’internaute et le serveur. Pour accélérer le traitement et tenir compte du fait qu’une page Web
contient fréquemment plusieurs requêtes HTTP - les textes et les images font l’objet de
demandes séparées - la nouvelle version d’HTTP (1.1) traite désormais les demandes
consécutives « en rafale », au cours d’une seule session de communication TCP/IP.
Internet/Web
Internet est le réseau informatique mondial qui rend accessible au public des services comme le
courrier électronique et le World Wide Web. Ses utilisateurs sont désignés par le néologisme
internaute. Internet ayant été popularisé par l'apparition du World Wide Web, les deux sont
parfois confondus par le public non averti. En réalité, le Web est une des applications
d'Internet, comme le sont le courrier électronique, la messagerie instantanée ou les systèmes
de partage de fichiers poste à poste. Dans cette étude, indifféremment désigné par les
termes « Internet » ou « Web », on entendra généralement le World Wide Web.
- Page 64/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Java J2EETM (Java 2 Enterprise Edition)
Java J2EE est une spécification pour le langage de programmation Java de Sun plus
particulièrement destinée aux applications d'entreprise. Dans ce but, toute implémentation de
cette spécification contient un ensemble d'extension au framework Java standard (J2SE, Java 2
standard edition) afin de faciliter la création d'applications réparties.
JavaSWF2TM
JavaSWF2 est un ensemble de packages Java qui permet l’analyse, la manipulation et la
génération de fichiers Macromedia FlashTM connus sous le nom de fichiers SWF.
JMS (Java Message Service)
L'interface de programmation Java Message Service (JMS) permet d'envoyer et de recevoir des
messages de manière asynchrone entre applications ou composants Java. Un client peut
également recevoir des messages de façon synchrone dans le mode de communication point à
point (pour cela, il doit invoquer la méthode receive() qui est bloquante).
JSP (JavaServer Pages)
Le JSP est une technologie basée sur Java qui permet aux développeurs de générer
dynamiquement du code HTML, XML ou tout autre type de page Web. La technologie permet au
code Java et à certaines actions prédéfinies d'êtres ajoutés dans un contenu statique. La
syntaxe du JSP ajoute des balises XML, appelées actions JSP, qui peuvent être utilisées pour
appeler des fonctions. De plus, la technologie permet la création de bibliothèques de balises JSP
(taglib) qui agissent comme des extensions au HTML ou au XML. Les bibliothèques de balises
offrent une méthode indépendante de la plate-forme pour étendre les fonctionnalités d'un
serveur HTTP. Les JSP sont compilées par un compilateur JSP pour devenir des servlets Java.
Middleware
Le middleware désigne les logiciels servant d'intermédiaire entre d'autres logiciels. On utilise
généralement du middleware comme intermédiaire de communication entre des applications
complexes, distribuées sur un réseau informatique.
MXML
MXML est le langage de programmation développé par Macromedia, pour la plate-forme Flex. Il
est dérivé du XML et permet de décrire la présentation des interfaces utilisées dans le cadre du
développement des clients riches ou RIA (Rich Internet Application). Son approche déclarative
permet de contrôler plus étroitement l'aspect d'une application. Au moyen du langage MXML,
les développeurs peuvent positionner des composants et définir des contraintes garantissant
une interface utilisateur plus fluide. Ils peuvent également se servir des états de visualisation et
transitions pour contrôler la manière dont l'application doit répondre à la diversité des actions
de l'utilisateur et événements applicatifs.
Ordinateur Central (Mainframe)
Ordinateur central (mainframe en anglais) est un terme utilisé en informatique pour définir un
ordinateur de grande puissance de traitement.
Un ordinateur central fonctionne selon un modèle centralisé en opposition aux modèles répartis.
Il permet de faire tourner de façon simultanée plusieurs sessions d'un système d'exploitation ou
même de systèmes d'exploitation différents (par exemple, sous l'hyperviseur VM).
- Page 65/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Les ordinateurs centraux sont utilisés dans les très grandes compagnies (banques, compagnies
d'assurances, compagnies aériennes, compagnies de services). De par leur fiabilité et leur
puissance, ils sont parfois les seuls ordinateurs capables de répondre aux besoins de leurs
utilisateurs (traitement de très grandes banques de données accédées par des dizaines ou des
centaines de milliers d'utilisateurs).
OpenLaszloTM
OpenLaszloTM est une plate-forme de développement pour des applications Web. Elle permet de
créer des applications riches (RIA) comprenant une interface riche en fonctionnalités (drag &
drop, onglet, menu déroulant, animation etc.) tout en offrant un déploiement facilité par le biais
du navigateur internet. OpenLaszloTM est compatible avec la majorité des navigateurs internet
et des systèmes d'exploitation disposant d'un plugin Flash. OpenLaszloTM se base sur une
grammaire XML appelée LZX. LZX est une description XML et JavaScriptTM de l'application
identique, sur le principe, à XUL et XAML. Cette description déclarative permet de construire
une interface graphique très rapidement et de bénéficier d'un prototype dans un laps de temps
réduit. Le serveur OpenLaszloTM est une servlet Java qui compile l'application LZX en un binaire
exécutable. Pour l'instant, le binaire repose sur Macromedia FlashTM mais il n'est pas exclu qu'à
terme, la transformation du fichier LZX soit possible pour une autre technologie.
OS (Operating System)
Le système d'exploitation (Operating System en anglais) est un ensemble de programmes
responsables de la liaison entre les ressources matérielles d'un ordinateur et les applications de
l'utilisateur (traitement de textes, jeu vidéo…). Il assure le démarrage de l'ordinateur, et fournit
aux programmes applicatifs des points d'entrée génériques pour les périphériques
OSI (Open System Interconnexion)
Le modèle d'interconnexion en réseau des systèmes ouverts de l'ISO (Organisation
internationale de normalisation) est un modèle de communications entre ordinateurs. Il décrit
les fonctionnalités nécessaires à la communication et l'organisation de ces fonctions.
La norme complète, de référence ISO 7498 est globalement intitulée « Modèle de référence de
base pour l'interconnexion de systèmes ouverts (OSI) » et est composée de 4 parties :
•
•
•
•
Le modèle de base
Architecture de sécurité
Dénomination et adressage
Cadre général de gestion
Cette version de cet article ainsi que les articles consacrés à chacune des couches du modèle se
concentrent sur la partie 1, révision de 1994.
PHP (Hypertext PreProcessor)
Le PHP est un mécanisme très proche d'ASP mais qui est plutôt utilisé sur plate-formes
UNIX/LINUX. Malgré cela, PHP peut être supporté sur une machine Windows. Dans les deux cas
(ASP ou PHP), l'inconvénient majeur réside dans le fait que chaque requête cliente lance une
interprétation de la page à renvoyer au client.
- Page 66/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Plugin
En informatique, le terme anglais plugin (ou plug-in qui signifie brancher), est employé pour
désigner un programme qui interagit avec un logiciel principal, appelé programme hôte, pour lui
apporter de nouvelles fonctionnalités. Le terme plugin étant un anglicisme, de nombreux
termes français ont été proposés pour le remplacer : module externe, module enfichable,
module d'extension, etc… Le terme plugin provient de la métaphore de la prise électrique
standardisée et désigne une extension prévue des fonctionnalités, en comparaison des ajouts
non prévus initialement apportés à l'aide de patches. La plupart du temps, ces programmes
sont caractérisés par le fait qu’ils ne peuvent fonctionner seuls (car uniquement destinés à
apporter une fonctionnalité à un ou plusieurs logiciels), et qu’ils sont mis au point par des
personnes n'ayant pas nécessairement de relation avec les auteurs du logiciel principal.
POO (Programmation Orientée Objet)
La programmation par objet (du terme anglo-saxon Object-Oriented Programming ou OOP), est
un paradigme de programmation, il consiste en la définition et l'assemblage de briques
logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde
physique, comme une voiture, une personne ou encore une page d'un livre.
RIA (Rich Internet Applications)
Les Rich Internet Applications (RIA) sont des applications Web qui partagent les
caractéristiques des applications autonomes sur l'ordinateur. A long terme, les RIA favorisent la
fusion des logiciels traditionnels et les logiciels client-serveur de type internet. La dimension
interactive et la vitesse d'exécution sont particulièrement soignées dans ces applications Web.
Une RIA peut être :
• exécutée sur un navigateur Internet, aucune installation n'est requise ;
• exécutée localement dans un environnement sécurisé appelé une sandbox ;
• éventuellement consultée depuis l'intérieur ou l'extérieur, d'un bureau à un autre.
Le terme "Rich Internet Application" a été introduit dans une publication de Macromedia en
mars 2002.
RMI (Remote Method Invocation)
Le RMI est une interface de programmation (API) pour le langage Java qui permet d'appeler
des objets distants. L'utilisation de cette API nécessite l'emploi d'un registre RMI sur la machine
distante hébergeant ces objets que l'on désire appeler au niveau duquel ils ont été enregistrés.
Cette interface de programmation est très souvent utilisée en parallèle avec l'API d'annuaire
JNDI ou encore avec la spécification de composants distribués transactionnels EJB du langage
Java. Cette bibliothèque qui se trouve en standard dans Java J2SE, est une technologie qui
permet la communication via le protocole HTTP entre des objets Java éloignés physiquement les
uns des autres, autrement dit s'exécutant sur des machines virtuelles java distinctes. RMI
facilite le développement des applications distribuées en masquant au développeur la
communication client / serveur.
RPC (Remote Procedure Call)
Protocole permettant de lancer une procédure d'un programme sur un ordinateur distant. Cette
méthode permet au programmeur de réaliser assez simplement des programmes ClientServeur. Exemple : si nous prenons le cas d'un client souhaitant consulter le stock d'un
fournisseur, pour pouvoir afficher la disponibilité des produits sur son site internet. Ceci peut
être réalisé à l'aide des RPC. Une procédure recevant en paramètre le numéro de produit et
renvoyant le nombre d'articles disponibles va être écrite. Cette procédure va être installée sur
l'ordinateur du fournisseur à travers un serveur d'application. Cette procédure sera ensuite
- Page 67/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
appelée depuis le programme de boutique électronique du client de façon à afficher les
disponibilités.
RSS (Really Simple Syndication)
Really Simple Syndication ou Rich Site Summary ou RDF Site Summary — une famille de
protocoles de syndication de contenu sur Internet, utilisant la technologie XML, utilisés
principalement par les sites Web d'actualités, les weblogs et les podcasts. Il est à noter que
plusieurs technologies RSS ont été développées indépendamment les unes des autres, ce qui
fait qu'il existe plusieurs significations pour le même sigle RSS. Le RSS est le résumé d'un site
représentant le cadrage des ressources. Il est un standard qui sert à syndiquer l'information de
différentes applications en permettant un affichage personnalisé par l'utilisateur de l'information
reçue.
Un flux RSS ou fil RSS (RSS feed en anglais), sigle de Really Simple Syndication (« souscription
vraiment simple »), ou de Rich Site Summary (« sommaire développé de site ») est un format
de syndication de contenu Web, codé sous forme XML. Ce système permet de diffuser en temps
réel les nouvelles des sites d'information ou des blogs, ce qui permet de rapidement consulter
ces dernières sans visiter le site.
SOAP (Simple Object Access Protocol)
C’est un protocole de RPC orienté objet bâti sur XML. Il permet la transmission de messages
entre objets distants, ce qui veut dire qu'il autorise un objet à invoquer des méthodes d'objets
physiquement situés sur une autre machine. Le transfert se fait le plus souvent à l'aide du
protocole HTTP, mais peut également se faire par un autre protocole, comme SMTP. Le
protocole SOAP est composé de deux parties : d’une part une enveloppe, contenant des
informations sur le message lui-même afin de permettre son acheminement et son traitement,
et de l’autre un modèle de données définissant le format du message, c'est-à-dire les
informations à transmettre.
URL (Uniform Resource Locator)
Une URL, de l'anglais Uniform Resource Locator, littéralement « localisateur uniforme de
ressource », est une chaîne de caractères (codé en ASCII, donc utilisant l'alphabet anglais, ce
qui signifie aucun accent comme « é » ou « î ») utilisée pour adresser les Ressources dans le
World Wide Web : document HTML, image, son, forum Usenet, boîte aux lettres électronique,
etc. Elle est informellement appelée une adresse Web.
WSDL (Web Services Description Language)
Il s'agit d'une tentative de normalisation regroupant la description des éléments permettant de
mettre en place l'accès à un service réseau (Service Web). Il fait notamment référence au
langage XML et a été proposé en 2001 au W3C pour standardisation.
XML (eXtensible Markup Language)
Langage à base de mots clés personnalisés servant à définir la structure des données dans un
document Web. Comme avec la norme HTML, il appartient au navigateur d’interpréter les mots
clés et de se conformer à leurs instructions dans la présentation des données sur l’écran de
l’internaute. Tandis qu’HTML se limite à la mise en page, XML définit la structure du document.
Les mots clés personnalisés permettent de distinguer des types de données (comme un numéro
de téléphone, une date, etc…) ou des sous parties du document Web. Ce schéma structurel des
données est lui-même disponible sur le Web et sera utilisé par le logiciel de navigation pour
identifier les types de données. De cette façon, les données voulues peuvent être « appelées »
directement par l’internaute ou un programme intermédiaire, sans avoir à télécharger ou
consulter le document Web dans son ensemble. XML est à la base de nouveaux modèles
d’échanges informatisés des données (EDI).
- Page 68/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
XML-RPC
C’est un protocole RPC (Remote Procedure Call), une spécification simple et un ensemble de
codes qui permettent à des processus s'exécutant dans des environnements différents de faire
des appels de méthodes à travers un réseau. Les processus d'invocation à distance utilisent le
protocole HTTP pour le transport des données et la norme XML pour le codage des données.
XML-RPC est conçu pour permettre à des structures de données complexes d'être transmises,
exécutées et renvoyées très facilement. XML-RPC est l'ancêtre de SOAP (voir définitions XML,
RPC et SOAP dans glossaire).
- Page 69/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
Bibliographie et références
BIBLIOGRAPHIE
Réf. :
C. Moock, Le meilleur d’ActionScript 2.0,
Ed. O’Reilly (2004), 560 pages, ISBN : 2-84177-313-2
Réf. :
P. Niemeyer & J. Knudsen, Introduction à Java 2e édition,
Ed. O’Reilly (2004), 889 pages, ISBN : 2-84177-234-9
Réf. :
P. Sarrion, Développement Web avec J2EE,
Ed. O’Reilly (2005), 235 pages, ISBN : 2-84177-380-9
Réf. :
R. Englander, Java et SOAP,
Ed. O’Reilly (2003), 270 pages, ISBN : 2-84177-230-6
Réf. :
J. Lott, ActionScript en action,
Ed. O’Reilly (2003), 915 pages, ISBN : 2-84177-286-1
Réf. :
B. McLaughlin, Java et XML,
Ed. O’Reilly (2002), 504 pages, ISBN : 2-84177-204-7
Réf. :
V. Karvir, Publication d’applications, de contenus et de communications
avec la plate-forme Flash®, Livre blanc Macromedia® (2005), 22 pages
Réf. :
Développement d’applications dynamiques pour Internet avec Macromedia
MX, Livre blanc Macromedia® (2002), 17 pages
Réf. :
B. M. Michelson, La plate-forme Macromedia Flash,
Ed. Patricia Seybold Group, (2005), 9 pages
Réf. :
J. Allaire, Macromedia Flash MX La nouvelle génération de client
multimédia, Livre blanc Macromedia® (2002), 12 pages
Réf. :
Next Generation Web Applications, Laszlo Systems Technology White Paper
(2003), 16 pages
Réf. :
K. Mullet, The Essence of Effective Rich Internet Applications, Macromedia®
White Paper (2003), 27 pages
Réf. :
Adobe® FlexTM 2, Adobe® FlexTM Technical White Paper (2003), 20 pages
- Page 70/71 -
Etudes des API JAVA pour la génération de code Flash – Patrick DUBERNET, Probatoire CNAM 2007.
________________________________________________________________________________________
REFERENCES INTERNET
9
Les API :
JavaSWF2
http://www.anotherbigidea.com/javaswf/
Flagstone Transform SWF http://www.flagstonesoftware.com/transform/index.html
Flex
9
http://www.adobe.com/devnet/flex/
http://www.adobe.com/fr/products/flex/
http://www.flex.org/
ƒ Les classes de l'API FLEX 2.0
http://livedocs.adobe.com/flex/2/langref/index.html
ƒ Norme ECMA pour création d'XML pour Flex
ECMAScript for XML (E4X) Specification
http://www.ecma-international.org/publications/standards/Ecma-357.htm
Les RIA :
Adobe :
http://www.adobe.com/fr/resources/business/rich_internet_apps/
OpenLaszlo: http://www.openlaszlo.org/
9
Ressources sur l'intégration des données :
http://WWW.adobe.com/fr/devnet/flash/data_integration.html
9
SOAP :
http://www.w3.org/TR/2003/REC-soap12-part1-20030624 (US officiel)
http://www.w3.org/2002/07/soap-translation/soap12-part0.html (FR)
9
Général :
http://fr.wikipedia.org/wiki/Portail:Informatique
http://www.infini-fr.com
http://wwww.developpez.com
- Page 71/71 -
Téléchargement