Maîtriser

Eclipse
Maîtriser
Eclipse
Mensuel - juin 2006 - N°87 • 5,95 €
3
:
H
I
K
O
N
B
=
^
U
Z
^
Z
]
:
?
a
@
k
@
i
@
r
@
a
;
M

0
4
3
1
9

-

8
7

-

F
:

5
,
9
5

E
P
r
i
n
t
e
d

i
n

F
r
a
n
c
e

-

I
m
p
r
i
m
é

e
n

F
r
a
n
c
e

-

B
E
L
G
I
Q
U
E

6
,
4
5


-

S
U
I
S
S
E

1
2

F
S

-

L
U
X
E
M
B
O
U
R
G

6
,
4
5


-

C
a
n
a
d
a

8
,
9
5

$

C
A
N
Pratique :
Java : utiliser Swingx dans NetBeans
Java EE 5 : la puissance des EJB 3
C++ : découvrir le C++ CLI de .Net
XML : utiliser XPath dans PHP 5
WinFX : Windows Workflow Foundation, la machine à flux !
Événement :
- JavaOne : les dernières nouvelles du monde Java
- MySQL multiplie les moteurs de données !
SOA
Qu'est ce que l'architecture orientée service ?
P2P
Pour les professionnels ! Microsoft débarque
Windows devient-il
OPEN SOURCE ?
Compiler
son propre
environnement.
Choisir ses plug-ins
Microsoft
ouvre
le noyau Windows
à l’enseignement
et la recherche
01-87 18/05/06 19:44 Page 3
01-87 2/06/06 11:58 Page 5
3
Programmez n°87 juin 2006
sommaire
/
ACTUS
L’actualité en bref......................................................................................................................................................................................................6
Agenda....................................................................................................................................................................................................................................12
/
TESTS
NetAdvantage 2006 vol 1 : Un pack de composants .Net ......................................................................11
/
EVENEMENTS
JavaOne 2006................................................................................................................................................................................................................14
Comment Microsoft apprivoise l’open source ........................................................................................................16
Microsoft entre à l’université................................................................................................................................................................18
Microsoft Technology Summit : l'Open Source invité à Redmond............................................20
/
CARRIERES..............................................................................................................................................................................................22
/
SGBD
MySQL User Conference 2006............................................................................................................................................................24
Brèves......................................................................................................................................................................................................................................25
/
DOSSIER : Mon Eclipse idéal
Eclipse : Un écosystème omnipotent ....................................................................................................................................29
Compiler son propre SDK Eclipse ................................................................................................................................................31
Exemple d’une configuration Eclipse de production......................................................................................33
Plug-in Open Source ou commercial : comment choisir ..........................................................................34
Une sélection de plug-ins Eclipse................................................................................................................................................35
Développer une application web avec MyEclipse ..............................................................................................38
Témoignages ................................................................................................................................................................................................................40
/
FOCUS SOA : votre nouvel architecte
Architecture et organisation..................................................................................................................................................................43
Mettre en place une architecture SOA..................................................................................................................................46
Témoignages ................................................................................................................................................................................................................49
BPEL & SOA, par l’exemple ..................................................................................................................................................................50
Outils ........................................................................................................................................................................................................................................53
/
FOCUS : P2P : Le P2P chez les pros (2e partie)
P2P : un marché en pleine croissance................................................................................................................................55
Groove Virtual Office : Pour quels usages......................................................................................................................56
Avalanche : le projet P2P en gestation chez Microsoft ............................................................................58
/
TECHNOLOGIE
Les nouvelles armes anti-virus NX et DEP ....................................................................................................................60
Windows Workflow Foundation : Une machine à flux..................................................................................62
/
PRATIQUE
GlassFish, serveur d’application Java EE 5..................................................................................................................65
Enrichissez vos interfaces Java avec Swingx sous Netbeans ............................................................68
Introduction à C++. Net................................................................................................................................................................................70
Travailler avec le stockage structuré de Windows ............................................................................................72
XML puissance 5 avec XPath et PHP......................................................................................................................................75
EJB 3.0 : le grand virage ..........................................................................................................................................................................77
/
TEMPS LIBRE
Ludique..................................................................................................................................................................................................................................80
Livres ........................................................................................................................................................................................................................................82
n°87
CD-ROM PROGRAMMEZ N°87
Adobe flash player bêta
Editeur : Adobe - Version : 9 beta 3
La dernière version bêta du lecteur flash
Adobe flex builder
Editeur : Adobe - Version : 2.0. Environnement de
développement et d'intégration puissant et évolutif
pour le développement d'applications riches.
Adobe flex sdk
Editeur : Adobe - Version : 2.0. SDK de l'environne-
ment de développement et d'intégration puissant et
évolutif pour le développement d'applications riches.
Eclipse SDK
Editeur: Eclipse.org
Version: 3.2 RC3 pour Windows et Linux. Dernière ver-
sion du SDK de la plate-forme de développement.
Easyeclipse Starter Edition
Pour débuter en développement Java sous Eclipse.
Les plug-ins :
Antlr générateur de parseur suivant une grammaire
prédéfinie.
Eclipse RSS Reader plug-in pour créer et
connecter des flux RSS.
Eclipseme
Plug-in dédié au développement d’applications
mobiles avec J2ME sous Eclipse.
Google Search
plug-in permettant d’utiliser le moteur de recherche
Google depuis l’environnement Eclipse.
Hiberclipse
plug-in pour Hibernate, un framework open source
gérant la persistance des objets en base de données
relationnelle.
EclipseJDO
plug-in permettant d'utiliser la norme Java Data Objet (JDO)
Blacksun
collection de plug-ins incluant des éditeurs C#, CSS,
HTML, un constructeur de Builder.
PhpEclipse
Transformer votre Eclipse en environnement de déve-
loppement PHP.
Erlide
Développer avec Erlang sous Eclipse !
Ruby Development Tool 0.8.0
la nouvelle star des langages de développement. Orienté
objet. IDE Open Source pour la plate-forme Eclipse.
Apache Beehive
projet open source issu de BEA Workshop, environ-
nement de développement J2EE et orienté SOA.
Oracle Database 10g Express Edition
PHP
Version : 5.1.4 - La dernière version de PHP pour Windows
Sources des Articles
3
Attention : Edition sans CD-Rom
les exemplaires diffusées sur certaines zones
géographiques, représentent une édition
spéciale, sans CD.
03-05 Edito 87 18/05/06 20:13 Page 3
Altova
®
XMLSpy
®
2006 – The industry standard XML development environment.
Altova
®
XMLSpy, l’outil standard de développement XML,
est la référence en matière de modélisation, d’édition, de
déboguage et de transformation de toutes les technologies
XML. Sa conformité aux normes, ses outils de gestion inno-
vants et son intégration de plate-formes avancées vous
permettront d’optimiser votre stratégie. Avec XMLSpy 2006,
vous pouvez structurer des schémas XML, créer des
documents XML puis générer automatiquement un code
d’exécution dans plusieurs langages informatiques.
Vous aussi, devenez un génie de la programmation!
Téléchargez XMLSpy
®
2006 dès
aujourd’hui: www.altova.com
Offrez ce qu’il y a de
mieux à vos projets de
développement
Bénéficiez d’un aperçu de XMLSpy
®
2006
et comprenez pourquoi il est essentiel de
maîtriser XML.
Nouveautés dans la version 2006:
l
Support schema-aware XSLT 2.0
l
Support schema-aware XPath 2.0
l
Intégration Microsoft
®
Visual Studio
®
.NET 2005
l
Intégration Eclipse 3.1
Altova XMLSpy est compris
dans Altova XML Suite.
Microsoft, Visual Studio, and .NET are either
trademarks or registered trademarks of Microsoft
Corporation in the United States and/or other countries.
W
a
n
te
d
:
C
+
+ D
evelo
p
ers
03-05 Edito 87 18/05/06 20:13 Page 4
5
Programmez n°87 juin 2006
E
dito
LE MAGAZI NE DU DÉVELOPPEMENT
Abonnement : Programmez 22, rue René Boulanger,
75472 Paris Cedex 10 - abonnements.programmez@grou-
pe-gli.com - Tél. : 01 55 56 70 55 - Fax : 01 55 56 70 20
- du lundi au jeudi de 9h30 à 12h30 et de 13h30 à 17h00, le
vendredi de 9h00 à 12h00 et de 14h00 à 16h30 - Abonnement
(magazine seul) : 1 an - 11 numéros - France métropolitaine :
45 € (295,18 FF TTC) - CEE et Suisse : 51,83 € - Algérie, Maroc,
Tunisie : 55,95 € - Canada : 64,33 € - Tom : 79,61 € -
Dom : 62,84 € - Autres pays : nous consulter.
TOUT NOUVEAU
TOUT BEAU !
Rédaction : redaction@programmez.com
Directeur de la Rédaction : Jean Kaminsky
Rédacteur en Chef : François Tonic.
Ont collaboré : J. Chable, C.P. de Geyer, X. Leclerq, J.M.
Maman, F. Mazué, C. Padych, F. Bordage, J. Clune, F.
Barbin, C. Bouillier, F. Santin, S. Cordonnier, S.Haim
Lubczanski, B. Paroissin, J. Marc, R. Bourdon, S. Revel
O. Smedile, C. Jovi, H. Darmet.
Dessins : Michel Piédoue.
Maquette : AJE Conseils
Publicité : régie publicitaire : ECC, Stéphane Kaminsky -
pour la publicité uniquement : Tél. : 01 56 31 21 54 -
Fax : 01 56 31 21 59 - publicite@programmez.com.
Editeur : Go-02 sarl, 6 rue Bezout - 75014 Paris - Dépôt légal :
2
e
trimestre 2006 - Commission paritaire : 0707K78366 -
ISSN : 1627-0908 - Imprimeur : ETC - 76198 Yvetot
Directeur de la publication : Jean-Claude Vaudecrane.
L’édition destinée aux abonnés comporte un cd rom et un encart rédactionnel.
PROCHAIN NUMÉRO n°88 - juillet/août 2006 - Parution le 30 juin 2006
SPÉCIAL LANGAGES
de ASP à XUL
La schizophrénie
du développeur
À
force de lui dire qu’il est mort et enterré sous dix mètres
de claviers usagés non recyclables, le développeur reprend un peu espoir
quand on lui affirme que son métier change. Mais espoir de courte durée, car
on lui assène une droite offshorisée…
Bon, admettons que notre développeur, en pleine forme, ose même sortir de chez lui
sans l’allure d’un geek tendance aqua. À peine dehors, il apprend qu’il ne va plus
coder comme avant, que les outils automatiques lui volent sa future arthrite. Et aus-
sitôt, on lui révèle qu’il doit plonger, tête la première, dans l’affreuse plomberie de
ces merveilles de nouvelles architectures et applications de nouvelles générations.
Que du bonheur ! Ou presque…
Bien assis dans un fauteuil, notre développeur admire béat, en poussant des
"waouh ! encore ! encore !", les démos que les éditeurs présentent dans les confé-
rences. Tout le monde est tellement bluffé qu’il veut la même chose chez lui, dans
son entreprise. Une fois rentré à son bureau avec sous le bras des tonnes de docu-
mentation, d’outils en tout genre, commerciaux ou open source, notre ami le déve-
loppeur se met au travail, l’architecte maison ayant déjà élaboré les jardins suspen-
dus de Babylone en mettant du SOA pour l’armature, du Web 2 pour l’entrée, de
l’Eclipse pour la maçonnerie et moult frameworks pour le mortier.
Mais voilà qu’à peine commencé, le développeur se demande comment il va bien pou-
voir faire, comme dans la démo. Il regarde Eclipse pour développer un ou deux plug-
ins à lui et pour apprivoiser la plate-forme RCP, il se rend compte qu’il lui faut lire et
comprendre des centaines et centaines de pages et voir, après quelques nuits
blanches, que tout n’est pas forcément documenté comme il le faudrait. Il se penche
alors sur l’armature mais, il rend compte ici aussi que la structure complexe imaginée
par l’architecte en chef demande des renforcements ici et là à coup d’orchestrations,
et des modifications ça et là, faute d’outils adaptés et de standards disponibles !
En désespoir de cause, il se dirige vers l’entrée en se disant que Web 2 est plus faci-
le. Que nenni ! Il faut s’assurer de la compatibilité des frameworks avec le reste de
la construction, trouver le bon outil Ajax / JavaScript pour coder proprement, etc.
Le résultat final diffère toujours des plans initiaux, d’où la nécessité de s’adapter en
temps réel pour avancer. Le développeur doit jongler avec l’immaturité des outils, des
technologies, composer au mieux entre les plans et la réalité du codage en essayant
de colmater ici les lacunes des outils, des librairies, là des bugs, comme un funam-
bule oeuvrant à dix mètres du sol sans filet !
Si en plus, on lui apprend que Windows flirte un peu, beaucoup, presque passion-
nément avec l’Open Source, qu’ Eclipse écrase tout, que Borland cherche toujours un
acheteur pour ses IDE, et que Sun a changé de patron, comment ne pas devenir schi-
zophrène ?
s François Tonic
Programmez.com change !
Quels langages choisir ?
Pour quel usage ?
Les points forts et les points faibles
de chaque langage.
Quelles formations ?
Quels débouchés professionnels ?
03-05 Edito 87 18/05/06 20:13 Page 5
SPÉCIFICATION
W3C sort l’adressage pour services web
Le consortium W3C propose depuis peu les spécifications 1.0 du web
services adressing. Il permet de définir l’adressage des services web et
l’identification des messages, indépendamment du transport. Il autorise
l’interaction entre plusieurs services et l’échange de messages asyn-
chrones. Il est possible d’utiliser cette spécification avec SOAP. Web
Services Addressing adresse des objets pour les applications composées
de services web s’appuyant sur les URI. Pour fonctionner, on passe par
une référence d’un point d’entrée ou EPR. EPR peut aussi tenir le rôle
de cookies lors d’interaction de services. En outre, il possède un sac de
métadonnées. Ce sac décrit les informations complémentaires propres à
EPR comme la description du point d’entrée, une description WSDL, des
données web sémantique. Cette spécification est très importante dans
l’orchestration de services web d’une architecture complexe.
Site : www.w3c.org
OUTILS
JBoss continue à évoluer
Le rachat de JBoss par Red Hat n’a pas bridé le travail de l’éditeur.
Début mai, on nous annonçait la version 1.2 de la solution JBoss
Operations Network. Cette mouture incorpore un module de mise à jour.
JBoss s’engage ainsi à assurer le support nécessaire durant le cycle de
vie d’une application issue de sa plate-forme. L’outil avertit les utilisa-
teurs des nouvelles versions, des services de sécurité, etc. Côté spécifi-
cation, JBoss rejoint l’OASIS, le W3C et le WS-I. Cette triple participation
doit assurer à JBoss un meilleur support des web services et du SOA
dans ses outils et participer aux futures évolutions des spécifications.
Enfin, sur JBoss Portal, la nouvelle version 2.4 prend en charge les ser-
vices web dédiés aux portlets distants (WSRP).
Site : www.jboss.com
OUTILS
Zizasoft et le travail en équipe
L’éditeur vient de sortir la version 3 de son utilitaire pour les équipes
de développement, zsCompare. Cet outil a pour but de stocker, gérer les
sauvegardes, de comparer les versions de fichiers, de manager les
fichiers d’archivages et même de contrôler la bonne gravure d’un CD,
ainsi que de faire une revue des changements de code… Bref, toutes les
fonctions de gestion que l’on peut avoir à faire quand on travaille en
équipe et en réseau. La v3 rajoute de nouvelles fonctions de comparai-
son (support des textes, XML, HTML, fichiers de registres Windows, word
et PDF). Il est maintenant possible de créer et comparer des snapshots.
Dans l’édition professionnelle, on dispose d’un langage script pour
automatiser l’outil. Disponible sur Windows, MacOS X et Linux. À partir
de 35 dollars (édition Lite).
Site : www.zizasoft.com
SOCIÉTÉ
Sun perd
McNealy
Co-fondateur de Sun en 1982,
Scott McNealy était la figure
emblématique de la société.
Fin avril, il annonce sa démis-
sion du poste de patron ! Il est
remplacé par Jonathan Schartz,
chez Sun depuis 1996. McNealy
demeure au sein de la société pour développer les opportunités de mar-
ché. Cette annonce " surprise " survient dans un contexte difficile pour
Sun qui affronte une forte concurrence sur le matériel et le logiciel et
des résultats financiers mitigés.
JAVA
NetBeans tous azimuts !
NetBeans vient de lancer une préversion de Java RTS NetBeans Module.
Il supporte le temps réel dur et logiciel. Il incorpore deux nouveaux
threads spécifiques à la notion de temps réel et doit assurer une
meilleure gestion des événements, des priorités et du temps d’exécu-
tion. S’il possède 28 priorités comme un thread normal, la priorité d’un
thread RTS est renforcée. Le module fonctionne avec NetBeans 5.0. Le
module propose un assistant de création de projet.
Toujours pour NetBeans, Lattix vient de sortir un module de gestion de
dépendances, afin de maintenir l’intégrité des projets NetBeans. La
visualisation se fait via une carte d’architecture. Tout au long du déve-
loppement, le module Lattix LDM teste et vérifie la bonne cohérence de
l’ensemble. L’outil existait déjà pour Eclipse. Il est disponible en 4 édi-
tions, dont une édition communautaire gratuite.
La communauté vient aussi de sortir officiellement la bêta de NetBeans
5.5. Cette version assure le support de Java EE 5 et donc des EJB 3, de
la compatibilité avec Glassfish. Le support des services web est étendu
grâce à Jax-WS 2.
Sites : http://www.lattix.com, www.netbeans.org,
A
ctus
6
Programmez n°87 juin 2006
PEOPLE
Codes Sources fait la fête
La crème des développeurs .Net était rassemblée le 1er avril sur un
aéro-club de Cergy-Pontoise, par Nicolas Sorel –alias Nix-, fonda-
teur-animateur du site Codes Sources. Une cinquantaine de
"geeks", dont certains auteurs du Hors-série .Net de Programmez.
La communauté de codes Sources, mais aussi des amis, et même
Cyril (Cyrus), champion du PHP étaient de la fête : ces gens là ne
sont pas sectaires ! Tout au long de cette folle journée, les partici-
pants ont fait leur baptême de l’air, à bord d’un petit bi-place.
Nix (t-shirt " geek ") et les stars de .net…
06-07 18/05/06 19:13 Page 6
06-07 18/05/06 19:13 Page 7
saturation, utilisateur, serveur). À partir de ces tableaux de bord, l’outil
génère des rapports que l’on exploitait dans sa suite bureautique.
Site : www.sysload.com
INTÉGRATION
Iona rajeunit Artix
L’éditeur Iona vient de
présenter la version 4 de
son outil d’intégration
Artix. Il s’agit d’un ESB
(Enterprise Service Bus)
pour les architectures
SOA. Cette v4 inclut une
orchestration de services
avec BPEL afin de coor-
donner et faire interagir
les services. La concep-
tion des flux d’orchestra-
tion se base sur Eclipse.
Pour garantir le bon acheminement des messages entre les services,
Artix incorpore WS-RM (Reliable Messaging) et on bénéficie d’une implé-
mentation JMS comme API standard. L’éditeur annonce aussi une
meilleure prise en compte des environnements z/OS. Artix 4.0 est dis-
ponible à partir de 10 000 euros par processeur. "Les meilleures pra-
tiques SOA exigent d'adopter une stratégie générale d'entreprise et
une méthodologie de déploiement par étapes pour répondre aux chan-
gements des besoins métier" précise Massimo Pezzini, Vice-Président et
analyste de Gartner. " Cette approche des SOA favorise le réemploi des
ressources existantes et l'incorporation ultérieure de nouvelles
technologies ; c'est un gage de création de valeur des investisse-
ments consentis dans les SOA".
Site : www.iona.com
WEB
Ajax se met à la business intelligence
L’éditeur Information Builders, spécialiste en business intelligence,
annonce son nouvel outil : WebFOCUS Power Painter. Il s’agit de créer,
en client léger, des rapports et analyses. La contrainte de ce genre d’ou-
tils est de bénéficier d’une interface très ergonomique et très visuelle.
Pour arriver à cela, l’éditeur s’appuie sur Ajax pour proposer une inter-
face desktop. L’outil permettra une personnalisation de l’interface selon
les compétences de l’utilisateur. Site : www.informationbuilders.fr
SOCIÉTÉ
IBM rachète encore
IBM continue de faire ses achats. C’est au tour de BuildForge d’intégrer
l’univers IBM, pour un montant inconnu. BuildForge travaille dans l’au-
tomatisation des processus de développement logiciel pour aider au
maximum le développeur à automatiser, notamment dans les équipes
de développement. BuildForge était déjà " IBM Ready for Rational soft-
ware Business partner ", et de nombreux utilisateurs des outils
BuildForge travaillaient avec les logiciels Rational.
ORGANISATION
Borland annonce et confirme
Après l’annonce du rachat de Segue Software et du désengagement de
l’éditeur du marché des IDE, Borland a annoncé la finalisation du rachat
et de la nouvelle stratégie maison : gestion du cycle de vie, au sens
large, et de sa qualité (avec les tests notamment). Et pour mieux
répondre à cette vision, l’éditeur définit une nouvelle organisation. Tout
d’abord, cela passera par une réduction d’effectif de 300 personnes. La
force marketing et commerciale se portera désormais sur le marché du
cycle de vie. Le support utilisateur sera combiné avec le département
Recherche et Développement afin d’avoir une meilleure réactivité et
réponse. En Europe, les trois marchés clés pour Borland seront
l’Allemagne, l’Angleterre et la France. Le secteur des outils de dévelop-
pement, regroupant l’ensemble des IDE, comptera environ 180 per-
sonnes. Il travaillera indépendamment de l’éditeur, montrant que le pro-
cessus de cession est en marche. Borland annonce qu’il travaille à trou-
ver un ou des acquéreurs dans les prochains mois. Mais la situation ne
doit pas perdurer trop longtemps. Car, plus le temps passera, plus le
doute sur l’avenir des ex-IDE Borland sera mal perçu par les utilisa-
teurs… Dans le même temps, Borland lance sa nouvelle solution de
Requirement Definition and Management, Caliber DefineIT, permettant
de spécifier les exigences fonctionnelles graphiquement, d’exécuter des
scénarios, de modéliser des cas d’utilisation, de générer des cas de
tests. Cette solution regroupe CaliberIT et CaliberRM dans un package
nommé Caliber Analyst. Site : www.borland.com
PORTAIL
Sysload soigne le serveur
L’éditeur Sysload Software lance SP Portal 2.0, sa solution de reporting
de capacité et d’utilisation des serveurs. SP Portail permet d’observer,
d’analyser la charge serveur, son utilisation. Les rapports permettront de
définir les ressources mal exploitées et celles surexploitées.
L’exploitation optimale des serveurs n’est jamais évidente. La v2 de SP
Portal complète sa panoplie de tableaux de bord (capacité, application,
A
ctus
8
Programmez n°87 juin 2006
p8 19/05/06 12:42 Page 8
RÈGLES
Ilog se met à Ajax
Ilog, éditeur français d’outils de règles métiers, vient d’annoncer l’inté-
gration d’Ajax dans son outil JViews 7.5. Il sera encore plus aisé de
construire des interfaces utilisateurs riches pour le Web. L’apparition
d’Ajax concerne l’ensemble de la gamme JViews. À Ajax, Ilog ajoute le
format graphique SVG (Scalable Vector Graphics) et la technologie Java,
JSF. Le module Maps inaugure un tout nouveau moteur cartographique
et pour les armées, de nouvelles vues de terrain 3D sont aussi dispo-
nibles. L’éditeur a aussi mis à jour Ilog Rules et Ilog Gantt pour .Net.
Ces deux outils sont maintenant intégrables dans Visual Studio 2005.
Dans la foulée, Ilog est devenu Gold Certified du programme Microsoft
Partner, prouvant ainsi toutes les qualités d’Ilog sur la plate-forme
Windows / .net. Site : www.ilog.fr
RFID
Sybase se renforce dans le RFID
RFID devient le nouveau marché à la mode depuis quelques mois.
Sybase qui éditait déjà RFID iAnywhere, renforce son support en prenant
en charge le plus largement possible les systèmes RFID mobiles ou
fixes. Il dispose maintenant d’une synchronisation des lecteurs et des
formats d’étiquettes personnalisés ou encore de la présence du GPIO
(general purpose input and output). La nouvelle version 2.1 facilite
A
ctus
encore plus la création d’application mobile RFID. Elle supporte de nou-
veaux formats d’étiquettes, support intégré des lecteurs RFID de poche.
" De plus en plus d’entreprises commencent à opérer une montée en
charge de leur système RFID, si bien qu’elles multiplient lecteurs et
antennes à proximité les uns des autres, ce qui provoque souvent des
interférences ", déclare Martyn Mallick, directeur des solutions mobiles
et RFID d’iAnywhere. " La solution idéale pour régler ce problème
consiste à coordonner les lecteurs afin qu’ils fonctionnent mieux en
mode de lecture intensive. RFID Anywhere permet désormais de contrô-
ler les lecteurs par tranche horaire et GPIO, ce qui apporte un gain d’ef-
ficacité significatif. " Site : www.sybase.com
SÉCURITÉ
Aladdin en rempart ultime
L’éditeur annonce la version de eSafe 5, la FR2. Cette mouture intègre
une protection anti-spyware, un filtrage d’URL, une journalisation du tra-
fic sortant, avec identification des utilisateurs dans les rapports, bloca-
ge des téléchargements FTP. " eSafe 5 FR2 symbolise un nouveau posi-
tionnement du filtrage d'URL qui est désormais un composant critique
pour pérenniser la sécurité, la protection et la productivité des entre-
prises ", déclare Shimon Gruper, Vice-Président des technologies de
l'unité Aladdin eSafe. Le filtrage d’URL intègre notamment une inté-
gration LDAP et d’Active Directory pour l’identification des utilisateurs.
Site : www.aladdin.com
p9 18/05/06 18:04 Page 9
comme il s’agit d’un sous-ensemble, il ne sera pas complet. Tout ce qui
est 3D, sera absent ! Dommage. Les démonstrations présentées mon-
trent tout le potentiel de la librairie.
Un des gros morceaux de la journée fut Ajax et surtout Atlas, l’ " Ajax
like " de Microsoft s’appuyant sur ASP.NET et sur son propre langage
XML de conception. Atlas a pour objectif de simplifier le développe-
ment de site Web 2. Pour le moment, rien n’est décidé sur la future
licence d’Atlas. Pourquoi ne pas le mettre en licence Shared Source ?
Cela ne pourrait qu’aider Atlas à se développer et à évoluer grâce à la
communauté.
Ce fut aussi une excellente occasion de démontrer toute la puissance
des futurs Gadgets de Windows Vista et Microsoft Live, le Dashboard
d’Apple sauce Microsoft. Les possibilités sont incroyables. Un des
maîtres français des gadgets, Aurélien Verla de Wygwam, a démontré
toute la puissance de la technologie. On devient vite accro à ces petites
applications s’utilisant via Vista ou Live.com. Un grand concours, mal-
heureusement lancé un peu dans le secret, eut un grand succès et une
belle créativité. Et le choix est immense, cela va du programme télé à
la circulation dans Paris. Voir : www.live.com
Côté " nouveautés ", les participants ont pu voir très rapidement l’ul-
tra portable / mobile Origami, présenté il y a quelques semaines par
Microsoft, fonctionnant sous Windows XP embarqué. Tout aussi suc-
cinctement, une citation de xNav, une nouvelle technologie clavier ne
nécessitant ni touches, ni stylet. On utilise le doigt. Le clavier est tota-
lement repensé par " secteur ". La salle est restée assez dubitative
devant les manipulations…
Souvent passée sous silence, la gamme Expression de l’éditeur va boulever-
ser la donne dans le développement de site Web et le graphisme. La gamme
se compose de Graphic Designer, Interactive Designer et Web Designer. Tout
pour réaliser des sites Web 2 de haute qualité, tout en profitant des tech-
nologies de WinFX. Adobe est le premier visé par cette offensive.
s François Tonic
L
e thème central était le web nouvelle génération, avec Web 2.0.
Le programme annoncé se voulait alléchant : MSN, la program-
mation autour d’un site Web 2, une prestation de Steve Ballmer,
et un important focus sur l’utilisation avec la nouvelle gamme
Expression, Ajax et Atlas, le Web au-delà du navigateur et le framework
Windows Presentation Foundation.
Une des sessions les plus attendues était celle de Steve Ballmer, PDG
de Microsoft. Durant environ 30 minutes, il a martelé la stratégie de
Microsoft sur le Web et les principaux axes de développement, décliné
sa vision sur la connectivité accrue entre tous les nouveaux appareils
numériques que ce soit dans la mobilité, les applications, la télévision.
En suivant cette évolution, il s’agit aussi de trouver le bon modèle éco-
nomique. La souscription constitue un des domaines sur lequel travaille
Microsoft, ainsi que la publicité (sur le Web) plus largement. Sur ce
point, Microsoft doit combler un retard important face principalement à
Google qui multiplie l’annonce de services. Si Web 1.0 était gratuit, cela
ne sera plus le cas avec Web 2. Il faut un nouveau modèle économique
adapté. On ne vendra plus des applications comme avant dans les pro-
chaines années… Steve cite au fur et à mesure les grandes nouveautés
de Microsoft : Vista, Windows Presentation Foundation, Internet
Explorer 7, avec un soupçon de standards venant du W3C. Comme pour
mieux appuyer cela, une démonstration, impressionnante, du futur
guide de télévision en ligne du groupe de presse EMAP(Télé Poche),
entièrement réalisé avec les technologies Microsoft… Sur la concurren-
ce, Steve dit que cela aide Microsoft à faire mieux, à se dépasser.
Des technologies prêtes à déferler !
La suite de la journée fut très intéressante aussi. Commençons par la fin,
avec le fameux Windows Presentation Foundation Everywhere (WPF / E).
Officiellement présenté lors de la dernière PDC, WPF / E est un sous-
ensemble de WPF, capable de fonctionner sur divers navigateurs et sys-
tèmes pour exécuter les applications utilisant la technologie WPF. Pour
le moment, le plus grand flou entoure cette librairie. L’objectif est de
pouvoir utiliser les IHM développés avec WPF / E. Le plug-in pèsera
environ 2 Mo et devrait être disponible courant 2007. Cependant,
E
vénements
10
Programmez n°87 juin 2006
Conférence
Mix 2006 Paris : le web 2.0 fait son “show”
Organisée en quelques semaines par les
équipes de Microsoft France,Mix est une confé-
rence nouvelle génération de l’éditeur qui
mise surtout sur les intervenants extérieurs à
Microsoft en se voulant le plus concret pos-
sible, avec démonstration à l’appui. Il s’agit
d’une copie de Mix réalisée à Las Vegas en mars
dernier. Contrairement à l’édition américaine,
l’édition française se déroule sur une seule
journée au lieu de 3.
La folie des Gadgets !
p10 événement 18/05/06 18:05 Page 10
N
ous avons installé la version complète
valable pour le framework .net 2.0.
L'incorporation à Visual Studio 2005 devra
passer par l'exécution de l'entrée "Create
NetAdvantage Visual Studio Toolbox Tab" du menu
nouvellement créé. La documentation est remar-
quable et vous disposez d'un répertoire "samples"
pour chacun des contrôles, que ce soit en C# ou
en VB (pour les composants WebForms mais aussi
WinForms). La richesse fonctionnelle est ici au ren-
dez-vous : nous avons été impressionnés par les
possibilités du composant UltraWinChart ou
WebMonthView. La personnalisation de l'affichage
est très grande, et en général chaque élément
(titres, styles, sous-composants) est hautement
configurable. L'éditeur propose une panoplie de
composants facilitant cette saisie et permettant de
détecter automatiquement des erreurs. Ceux-ci ont
été baptisés WebTextEdit, WebNumericEdit,
WebDateTimeEdit, etc. L'utilisation de certains
contrôles est grandement facilitée par une série
d'assistants, comme celui utilisé pour la création
d'un graphique. Ce dernier est vraiment ultra puis-
sant, vous permettant par exemple de prendre dif-
férents types de datasources (dataset, datatable,
xml,etc), et d'afficher de nombreux types de gra-
phiques comme l'histogramme, le camembert, les
bulles, un graphique linéaire. Tous ces composants
profitent des SmartTags de Visual Studio. Les
SmartTags représentent une sorte de menu contex-
tuel pour vos contrôles, et vous avez la possibilité
de créer vos propres SmartTags pour chaque
contrôle NetAdvantage. En résumé, il s'agit d'un
très bon investissement dans le cadre de .net.
T
est
NetAdvantage 2006 vol 1 : Un pack de composants .Net
Infragistics propose depuis des années une boîte à outils de composants pour professionnels. Avec ce pack,
vous avez à votre disposition plus de 100 contrôles dans le cadre de la construction d'une application gra-
phique autonome (GUI WinForms) ou Web (Webforms compatible AJAX). Ce logiciel vise un triple but : réuti-
lisation facile du code, réduction du temps d'apprentissage, et maintenance facile des applications réalisées.
Fiche technique
NetAdvantage 2006 vol 1
Editeur : Infragistics
Site : http://www.infragistics.com/
Prix : Version d'essai téléchargeable / avec
Souscription (MAJ) et Support 875 €
Configuration requise: Windows XP n.et 2.0, 500
Mo d'espace disque, VS 2005
Les +
• Code source fourni pour tous les contrôles
• Hautement configurable
• 3 versions par an (souscription)
• Documentation de qualité
Les -
• logiciel et support testés en Anglais
• prix assez élevé pour les développeurs
n'utilisant pas .net comme coeur métier
Par Xavier Leclercq
p11 18/05/06 18:06 Page 11
mercial et considèrent que les technologies Open Source peuvent
répondre à ces exigences " explique Massimo Pezzini, vice-Président et
analyste reconnu du Gartner. Celtix 1.0 met en œuvre Jax-WS pour les
web services, l’utilisation du standard WS-RM pour la garantie d’ache-
minement des messages ou encore de l’implémentation des standards
WS-Adressing, JBI et SCA. Site : www.objectweb.org
SYSTÈME
Novell dévoile SUSE Linux 10.1
La nouvelle version majeure de la distribution SUSE est désormais dis-
ponible. La v10.1 inclut plus de 1 500 applications. Elle inclut des outils
de virtualisation comme Xen et OpenOffice 2 et surtout Mono, la pile
.Net open source. Cette version est créée par OpenSUSE, la distribution
gratuite de Novell. Durant l’été, Novell sortira Linux Desktop 10. Une des
principales avancées est une version OpenOffice enrichie de fonctions
entreprises. Il sera possible de convertir des macros VB sans ajout d’ou-
tils tierces. Nommé Open WorkGroup Suite, cet ensemble bureautique
doit offrir une alternative à Microsoft. Novell y ajoute l’outil collabora-
tif : Groupwise. Et Zenworks pour le côté administration.
TESTS
Conformiq distribué par Verifysoft
L’allemand Verifysoft Technology distribue l’outil Conformiq Test
Generator. Il s’agit d’un outil générant des tests et les exécutant. Le
développeur décrit dans un modèle UML le test. Ensuite, on applique le
test généré sur l’application cible. Il peut servir de test fonctionnel, de
système, de validation ou encore de non régression. Selon l’éditeur, l’ou-
til fonctionne avec l’ensemble des langages du marché. Test Generator
fonctionne sur Windows et Linux. Site : http://www.verifysoft.com
DÉVELOPPEMENT
Une nouvelle plate-forme de
développement Web ?
Opera et Virtual Mechanics annoncent une nouvelle plate-forme de déve-
loppement web. Virtual Mechanics intégrant dans son outil de création
web le navigateur Opera. Web Engine, le nom de l’outil, est actuellement
en version bêta. Il est multi terminal. Pour Virtual Mechanics, il s’agit de
pouvoir permettre une visualisation immédiate des pages construites,
surtout qu’Opera fonctionne parfaitement sur terminaux mobiles. Web
Engine s’appuie sur SVG et xHTML. La version finale de l’outil est atten-
due pour le 3e trimestre 2006. Site : www.virtualmechanics.com
MODÉLISATION
Win’Design puissance 7
L’environnement de modélisation de processus métier, Win’Design, sort
en version 7. Cette édition étend les fonctionnalités du modèle Business
Process. On bénéficie d’une interface vers le moteur de workflow de
l’éditeur W4. La v7 permet de créer les données directement dans le
module de Business Process, une fois les processus créés, et non plus
de passer par le module database. Dans la partie visualisation, il est
possible d’utiliser une représentation en couloirs d’une répartition du
travail. Site : www.win-design.com
CLUB
Mercury lance son club utilisateur
Fin avril, l’éditeur Mercury annonçait la création de son club utilisateur en
France : e-CUME. Il réunit les clients des outils Mercury (qui le souhaitent) pour
des ateliers de travail et pour des séances plus informelles tous les trimestres.
DONNÉES
BMC veut un nouveau standard
L’éditeur BMC participe activement à la création d’un standard sur la
fédération et l’accès aux données. BMC rejoint Fujitsu, HP et IBM. Le
besoin d’un référentiel fédérant l’ensemble des systèmes d’informations
et des données devient critique pour certaines entreprises. Il s’agit de
pouvoir donner au CMDD (configuration Management DataBase) un
standard unique, utilisable par l’ensemble des éditeurs. Le CMDB est
une base de données de gestion des configurations. Chez BMC, il s’agit
de l’offre BMC Atrium. Site : www.bmc.com
INTÉGRATION
Celtix 1.0 arrive !
Presque un an après la création du projet Celtix par Iona, ObjectWeb et
Iona annoncent la disponibilité de la version 1.0 de l’outil ESB / SOA. Il
s’agit d’une annonce importante pour l’offre SOA Open Source face à la
nombreuse offre commerciale. " Les entreprises commencent à prendre
rapidement conscience que la décision de s'engager dans une démarche
SOA ne signifie pas forcément adopter une plate-forme développée par
un fournisseur unique. Elles cherchent activement des solutions leur
offrant une meilleure flexibilité à la fois sous l'angle technique et com-
A
ctus
12
Programmez n°87 juin 2006
agenda
MAI / JUIN
Du 18 mai au 22 juin
TDF Tech 2006 (Tour de France
Technique) sur les versions 10 de
Windev,Webdev et Windev Mobile,
organisé par PC Soft.
www.pcsoft.fr
Du 31 Mai 2006 au 01 Juin 2006
Paris Expo CNIT La Défense
I-EXPO 2006
Salon de l'informatique numérique - Veille
et gestion de l'information. Réunit les pro-
ducteurs de contenus professionnels, les
éditeurs de logiciels pour valoriser le
contenu et les prestataires de services.
www.i-expo.net
Du 07 Juin 2006 au 08 Juin 2006
Paris Expo CNIT La Défense
Progiforum 2006 Salon des progiciels de
gestion comptabilité-finance-décisionnel
www.progiforum.com
Du 20 au 22 Juin 2006
Disneyland Paris, Hotel New York
Gartner Midsize Enterprise Summit
Séminaire du cabinet Gartner pour les PME.
www.midsizeenterprise.com/europe/index_fr.php
JUILLET
Du 04 Juillet 2006 au 08 Juillet 2006
Vandoeuvre-les-Nancy, Bâtiment du 1er
cycle, Faculté des Sciences. Campus de l’
Université Henri Poincaré - Nancy 1.
Les Rencontres Mondiales du Logiciel
Libre 2006 (RMLL) Rendez-vous mon-
dial des développeurs et des acteurs
importants du Logiciel Libre. www.rmll.info
SEPTEMBRE
Du 26 au 28 septembre 2006
Paris La Défense, CNIT
ERP’2006, la 9ème édition du Salon des
Progiciels de Gestion Intégrés pour les
grandes entreprises et les PME-PMI
www.salons-solutions.com
ETRANGER
Du 04 au 08 juin 2006
Etats-Unis, Las Vegas, Caesars Palace,
Conférence annuelle de Progress
Software, destinée aux experts et utilisa-
teurs des solutions Progress.
www.progress.com
Du 13 au 17 août 2006
Etats-Unis, Orlando
FileMaker Developer Conference, sur
le thème : porter les solutions FileMaker
sur le Web. www.filemaker.com/devcon
p12 agenda 18/05/06 18:07 Page 12
p12 agenda 18/05/06 18:08 Page 13
La vocation première de Sun
est de maintenir l’unité de Java et de tout
faire pour augmenter son adoption "
Jonathan Schwartz, CEO de Sun.

Eviter les divergences
Jonathan Schwartz a également exhorté les développeurs à s’impliquer
dans la définition des prochaines versions de Java et des frameworks
associés en rejoignant le JCP (Java Community Process). Le JCP décide
des principales orientations de la plate-forme Java.
En s’ouvrant ainsi, Sun cherche à maintenir la cohésion de sa plate-
forme et à éviter les " forks " tels que JBoss Seam, Oracle ADF et
Apache Struts qui représentent autant d’initiatives divergentes, même si
elles visent au final à résoudre les mêmes lacunes. " JBoss Seans
comble le gap existant entre les composants métier et la couche de pré-
sentation (JSF) dans l’architecture Java Enterprise Edition 5 " explique
Marc Fleury, fondateur de JBoss. Epaulé par Borland, Google, et Sun,
JBoss va mettre tout le monde d’accord en standardisant un modèle de
A
près la nomination il y a
quelques semaines de
Jonathan Schwartz à la tête
de Sun, la rumeur enflait dans la
blogosphère : Sun va-t-il distribuer
le langage Java et les frameworks
associés - Java EE, Java SE, Java
ME, etc. - sous licence open
source ?" La question n’est plus
"allons nous le faire ?", mais plutôt
"comment allons nous y parvenir ?"
a précisé Jonathan Schwartz lors de
la conférence JavaOne 2006 qui
regroupait 10 000 développeurs du 16 au 19 mai dernier à San Francisco.
Comme cette migration prendra du temps, Sun a tenu à rassurer les
développeurs en joignant le geste à la parole. Après son serveur d’ap-
plication (Java EE 5) Glassfish et son outil de développement NetBeans,
l’éditeur a libéré son infrastructure de portail Java System Portal
Server 7, son moteur BPEL Java CAPS BPEL Engine (issu du rachat de
SeeBeyond), ses outils de développement Java Studio Creator et
NetBeans Enterprise Pack, et son bus JMS qui rejoint le projet OpenJava
MQ. Sun tente de se positionner sur le marché des outils orientés SOA
bien que la concurrence soit déjà très vive.
L’autre annonce open source concerne Linux. Jusqu’à présent, les éditeurs
de distributions Linux n’avaient pas le droit de distribuer le JDK et le JRE.
Sun a donc mis au point une nouvelle licence - Operating System
Distributor's License for Java - qui leur permet maintenant de distribuer le
JDK et le JRE. Une initiative soutenue par les distributions Linux - Ubuntu,
Gentoo, et Debian – ainsi que Sun Open Solaris, Schillix et BeleniX.
E
vénements
14
Programmez n°87 juin 2006
JavaOne 2006
Sun s’ouvre pour maintenir
la communauté Java unifiée
Pour contrer Eclipse et maintenir ainsi la communauté Java soudée,
Sun libère tous ses logiciels et focalise ses efforts sur la fédération des
éditeurs. Il poursuit son effort sur une alternative séduisante à Eclipse
IDE : NetBeans. Des initiatives qui commencent à porter leurs fruits.
composant web qui se positionne entre les EJB 3.0 et les JSF. Les " web
beans " seront proposés à la normalisation auprès du JCP.
Malgré son succès, Eclipse IDE et la plate-forme de développement de
client riche Eclipse RCP s’appuient eux aussi sur des technologies qui
ne sont pas standard (la couche graphique SWT notamment). Plutôt que
de lutter ouvertement contre IBM, Sun a préféré améliorer son IDE
NetBeans 5.5 (actuellement en version bêta). " Cet outil a fait des pro-
grès fulgurant en un an. C’est une sérieuse alternative à Eclipse IDE "
estime Sami Jaber, directeur technique de Valtech Toulouse. D’autant
que la JSR 198 - Standard Extension API for IDEs – vient d’être approu-
vée par le JCP. Elle standardise la notion de plug-in et devrait donc per-
mettre, à terme, d’utiliser les mêmes plug-in dans Eclipse et NetBeans.
Pilotée par Oracle, cette initiative est
soutenue par les membres clés
d’Eclipse : IBM, BEA, Borland, SAP,
etc. Le premier exemple d’interopéra-
bilité est Matisse4Eclipse qui permet
d’intégrer l’éditeur WYSIWYG de
NetBeans dans Eclipse IDE.
Java en chiffres
- 700 millions de PC
possèdent une JVM
- 1 milliard de téléphones
portables compatibles
- 1,25 milliard de JavaCard
l'inventeur de Java, M. Gosling à
JavaOne 2006.
14-15 événement 19/05/06 11:28 Page 14

E
vénements
15
Programmez n°87 juin 2006
jMaki, alternative à OpenAJAX
Soutenu par Sun, le projet open source jMaki permet d’utiliser différents
framework AJAX clients (écrits en Javascript) au sein de tags JSF et JSP.
Grâce à cette approche, les développeurs Java peuvent continuer à uti-
liser leur langage de prédilection tout en générant des sites web repo-
sant sur une architecture AJAX. En fournissant par défaut des adapta-
teurs pour Dojo, Prototype et Yahoo Widgets, jMaki abstrait également
le développeur du framework qu’il utilise. Il peut ainsi changer de librai-
rie cliente sans remettre en cause son code. Cette initiative est le
concurrent direct de l’AJAX Toolkit Framework (ATF) d’Eclipse. - site:
http://ajax.dev.java.net
Java ME change d’architecture
Pour s’adapter à l’évolution des téléphones portables Sun propose une
nouvelle architecture - Mobile Service Architecture. Basée sur les JSR 248
et 209 (Advanced Graphical User Interfaces), elle va faciliter le dévelop-
pement d’applications plus riches - multimédia, 3D, etc. - et couvre des
problématiques comme la géolocalisation, le paiement via téléphone
portable, Bluetooth, etc. Certaines technologies sont déjà disponibles.
C’est le cas du Wireless Toolkit for (CLDC) with Mobile Services
Architecture (MSA) qui permet de tester et déboguer les applications
reposant sur la JSR 248 / MSA, du Java Wireless Client qui permet d’exé-
cuter plus d’applications en même temps, des outils de test Java Device
Test Suite (JDTS) 2.0, et enfin du Java Toolkit for CDC qui offre de
meilleures performances et une portabilité améliorée. L’extension
NetBeans “Mobility Pack for CDC” facilite de son côté le développement
d’applications reposant sur CDC. -Site : http://java.sun.com/javame
s Frédéric Bordage
Java EE 5 disponible
Ca y est ! Java Enterprise Edition 5.0 est disponible. Au menu des nou-
veautés : le support d’AOP (Aspect Oriented Programming), un modèle
de composants Enterprise Java Bean (EJB) 3.0 permettant de transfor-
mer n’importe quelle classe Java (Plain Old Java Objects ou POJO) en ser-
vice transactionnel, un meilleur support des services web et d’AJAX au
sein des Java Server Faces (JSF) 1.2, et une nouvelle API de persistance
reprenant le modèle du célèbre outil de mapping TopLink. Grâce à l’en-
semble de ces évolutions, Sun affirme qu’il a réécrit une application J2EE
1.4 en utilisant 60% moins de classes, 80% de fichiers XML en moins,
et 30% de ligne de code en moins. Java EE 5.0 serait aussi 30% plus
performant. L’implémentation de référence de Sun est d’ores et déjà dis-
ponible et JBoss 5.0 devrait suivre avant la fin de l’année. IBM, BEA et
Oracle n’ont pas encore annoncé de date precise.
Web Beans fusionne Struts,
Seam et Oracle ADF
Le concepteur d'interface Matisse sur Eclipse...
Apache, Borland, Google, Oracle, et Sun vont concentrer le meilleur de
leurs frameworks au sein d’un seul modèle de composant pour la
conception d’applications web : les " web beans ". Ces composants
emprunteront différents aspects aux frameworks respectifs des éditeurs
: meta-données d’Oracle ADF, gestion déclarative et contextuelle de
l’état de JBoss Seam, etc. L’objectif est de faciliter et d’accélérer le déve-
loppement d’interfaces web. " Une initiative cruciale pour faire avancer
Java et maintenir sa position de standard d’entreprise " estime Linda
DeMichel, responsable EJB chez Sun. A l’origine d’Hibernate, c’est Gavin
King, actuellement architecte chez JBoss, qui pilotera cette initiative de
standardisation.
EN BREF
- Java SE 6 est désormais figé et
disponible en version bêta sur
http://java.sun.com/javase/6.
- Oracle soutient Grails qui vise à
améliorer la productivité des
développeurs Java en suivant la
même philosophie que Ruby On
Rails. Il a aussi donné à la com-
munauté open source (Apache
MyFaces) son kit de développe-
ment AJAX qui s’interface avec JSF.
- Grâce à la JSR 277 - Java Module
System – Java s’ouvre aux autres
langages : JRuby, Jython, Groovy, etc.
- Sun ouvre deux nouveaux por-
tails destinés aux développeurs :
l’un sur AJAX (developers. sun.com/ajax) et l’autre sur Javascript
(developers.sun.com/ javascript).
- Spring 2.0 RC1 disponible.
- La JSR 209 - Advanced Graphical User Interfaces - améliore les pos-
sibilités graphiques sur les périphériques mobiles.
Swing est désormais performante
et au même niveau que les autres plates-
formes de développement "
Romain Guy, ingénieur Sun travaillant sur Swing
Les applications Swing disposent
d’un look natif et d’une aussi
bonne ergonomie que les appli-
cations Windows natives.
14-15 événement 19/05/06 11:28 Page 15
Le conférencier en charge de cette annonce était Bernard Ourghanlian,
CTO de Microsoft France, qui nous l’a commentée.
Est-ce un pas vers l’open source, pour Microsoft ?
" Nous ne sommes pas opposés à l’open source. Le seul sujet sur lequel
nous sommes intraitables est la licence GPL, car elle implique la néga-
tion de l’existence même de l’éditeur. Nous sommes tout à fait d’accord,
par exemple, avec les termes de la licence BSD/Berkeley. Ainsi, les
sources et l’implémentation d’IPv6 sont disponibles depuis 3 ans.
L’étape d’aujourd’hui concerne Windows, même si Windows CE est libre
depuis 3 ans. Il y a un " lobbysme ", en interne, chez Microsoft, pour
faciliter l’enseignement.
s Jean Kaminsky
L
e 25 avril, dans le cadre des Journées Académiques, organisées
pour les enseignants (voir pages suivantes), Microsoft annonçait,
au détour d’une conférence, le projet Windows Research Kernel.
Le but premier est de pouvoir construire et tester des versions expéri-
mentales du noyau dans le cadre de recherches et de l’enseignement.
Cette initiative s’inscrit dans un dipositif plus vaste, en direction de l’en-
seignement, comprenant également le Windows Operation Systems
Internals Curriculum Resource Kit, axé contenu de formation, et
ProjectOz. Ce dernier est un projet d’un environnement de système d’ex-
ploitation utilisant les interfaces systèmes natives de Windows pour réa-
liser des expériences sur les principes fondamentaux des systèmes.
L’objectif est donc de faciliter l’enseignement de Windows.
E
vénements
16
Programmez n°87 juin 2006
1• WINDOWS devient-il “ libre ”?
Comment Microsoft
apprivoise l’Open Source.
Ne faisons pas durer le suspense, la réponse est " non ". Mais nous ne posons pas cette
question pour le simple et vain plaisir d’un titre racoleur. Microsoft vient en en effet de rendre
diponibles les sources de Windows, pour la recherche et l’enseignement. Analyse.
W
indows Research Kernel est disponible en
bêta 1. Cette version sera accessible aux
universités, écoles en charge d’enseigner les sys-
tèmes d’exploitation et les auteurs d’ouvrages sur
les systèmes. Cette initiative vise à permettre aux
étudiants d’étudier le source, de le manipuler, de
construire des projets. Il permettra aussi de pou-
voir créer des publications basées sur le cœur de
Windows, rendre plus simple la comparaison de
Windows avec les concurrents et simplifier les
licences d’accès aux sources. Aujourd’hui, malgré
les dernières licences Microsoft, l’éditeur possède
toujours un grand nombre de licences… Windows
Research Kernel se base sur XP SP2 et Windows
x64. L’ensemble de ce qui compose NTOS sera
disponible, excepté le plug and play, le gestion-
naire d’énergie et le code spécialisé ainsi que
tout le code n’appartenant pas au noyau. Bref,
tout ce qui concerne l’interface, le file systems, le
réseau, les pilotes, etc. demeure en dehors de
l’initiative. Le code livré ne sera pas livré " brut
de fonderie ". Quelques modifications seront
effectuées par les ingénieurs maison : simplifica-
tion du code ici et là, nettoyage des commen-
taires. Remarque savoureuse de Bernard
Ourghanlian : "nous avons corrigé des fautes
d’orthographe et supprimé quelques gros mots".
Bon à savoir : tout ce qui ne sera pas dans le
code source sera mis dans une libraire binaire. De
nombreux outils seront tout de même livrés avec
le projet pour tracer, surveiller les performances,
déboguer, paramétrer…
500 000 lignes de codes
L’ensemble sera packagé avec un sous
ensemble du DDK et de la documentation sur
les pilotes. On aura droit aux sources du systè-
me de fichiers de l’IFSKIT, la documentation des
API Windows. Tout cela représente tout de
même 500 000 lignes de code. De quoi donner
mal à la tête… Les sources sont organisées
selon deux grands répertoires : public pour les
fichiers include partagés par l’ensemble du sys-
tème et base/ntos/ qui contient les sources du
noyau. Pour éviter de " crasher " un PC,
Microsoft a prévu d’inclure dans le package
l’outil de virtualisation : Virtual PC. Une excel-
lente idée ! Bien entendu, il est interdit de
dévoiler, de publier les sources codes ou enco-
re de publier à des fins commerciales un noyau
modifié. La licence est donc non commerciale,
dans un cadre uniquement d’enseignement et
de recherche. Dans certains cas, il faudra inclu-
re les notices de copyright Microsoft. Toute dis-
tribution, communication devra se faire dans un
cadre de recherche, d’enseignement unique-
ment. Au final, cette initiative est intéressante,
même si elle est limitée à un cadre très strict.
Microsoft tente ainsi de reprendre du terrain
dans les écoles, les universités et chez les étu-
diants. Par certains aspects, cette initiative rap-
pelle celle d’Apple avec le projet Darwin regrou-
pant les couches basses de MacOS X.
s François Tonic
Microsoft fournit le noyau de… Windows !
p16-21 événement 19/05/06 11:41 Page 16
p16-21 événement 19/05/06 11:41 Page 17
E
vénements
18
Programmez n°87 juin 2006
forte culture Unix dans les Universités. Sun et IBM ont beaucoup inves-
ti. Paradoxalement, l’arrivée de Linux a permis de passer de la station
de travail au PC. En général, il y a les 2 OS. Cela dépend des applica-
tions. Pour le développement web et l’administration serveurs, il y a
un réflexe Linux. Pour le développement client, Windows est reconnu. "
MSDN Academic Alliance
L’arme principale employée pour conquérir les universités est la MSDN
Academic Alliance. Lancée en 2001, elle permet l’accès aux logiciels
Microsoft, en contrepartie d’un forfait annuel pour l’école, ou le dépar-
tement de l’université, quel que soit le nombre d’enseignants, d’étu-
diants ou de machines, et pour une utilisation à l’école ou à la mai-
son, dans un cadre pédagogique. La seule interdiction : l’utilisation pro-
fessionnelle ou commerciale. Montant du forfait : 927 euros.
Ce programme inclut les produits serveur, le système d’exploitation, les
outils de développement.
Ne sont pas inclus : Word, Excel, Powerpoint et " évidemment les jeux !".
Près de 500 écoles (universités, écoles d’ingé-
nieurs, quelques écoles de commerce et des
lycées avec classes de BTS) sont abonnées au
programme, et elles devraient être au nombre de
550 en fin d’année. Une centaine d’établisse-
ments, en moyenne, rejoint le programme chaque année, depuis le
début de l’opération. La moitié l’utilise effectivement, les autres per-
mettent simplement l’accès des étudiants aux logiciels.
" Les barrières tombent "
Parallèlement à l’Academic Alliance, l’éditeur a mis en place un disposi-
tif complet d’actions. A son service, une équipe dédiée, bien sûr, mana-
D
epuis la mi-avril, les étudiants peuvent télécharger gratuitement
un certain nombre de logiciels de l’éditeur. Cette initiative de
Microsoft France est une première mondiale.Ces logiciels, com-
plets et illimités, peuvent être installés sur les machines personnelles
des étudiants, mais sont réservés à un usage strictement privé et non
commercial. Ils sont téléchargés directement
sur un site de l’éditeur dédié à l’Education,
après une simple inscription, via le Windows
Live ID (ancien " passport ").
En 3 jours, 1000 étudiants se sont inscrits,
puis 150 par jour en moyenne, précise Laurent
Ellerbach, responsable des relations avec les
développeurs et avec l’Enseignement supé-
rieur.
Jusqu’à présent, ce téléchargement exigeait que l’établissement d’ensei-
gnement ait souscrit au préalable un accord avec Microsoft , dans le
cadre de la MSDN Academic Alliance. Déjà 70 000 logiciels ont été télé-
chargés depuis la rentrée 2005.
Les logiciels gratuits pour les étudiants
Visual Studio 2005 Professionnel • Visio • MS Project • One Note
SQL Server 2005 • InfoPath 2003 • Virtual PC 2004
Inscription : www.msdnaa.net/france
Après vérification de son statut étudiant, on reçoit un mail avec l’URL du
site de téléchargement, un code d’accès et un mot de passe.
Attention : réservé aux étudiants de la Métropole et des DOM-TOM.
Enseigner la diversité
Cette action directe vers les étudiants marque pour l’éditeur un coup
d’accélérateur. En effet, il y a des établissements réfractaires. Mais aussi,
même quand l’école est partenaire de Microsoft, " cela bloque au
niveau d’un certain nombre d’enseignants. Le mot d’ordre de ceux-ci
pouvant se formuler ainsi " jamais, moi vivant,
Microsoft ne passera ! " regrette Laurent
Ellerbach.
" Il se trouve que nos technologies ne sont pas
les plus enseignées, on veut ré-équilibrer. Nous
nous battons pour que les technologies Microsoft, soient enseignées au
même titre que les autres. Dans un contexte donné, l’étudiant doit pou-
voir choisir la meilleure technologie et non pas une technologie par
défaut. Bien comprendre est indispensable pour faire un choix. Si la
technologie Microsoft est la meilleure et répond le mieux au besoin, elle
sera certainement choisie."
" Nos technos serveurs n’ont jamais vraiment été enseignées. Il y a une
Traditionnellement, les universités restent le bastion de Linux et de l’open source. Parce qu’elles for-
ment les élites de demain, Microsoft ne pouvait pas en demeurer exclu. Persuader le corps ensei-
gnant et séduire les étudiants, est devenu une priorité stratégique pour l’éditeur.
2 • Enseignement :
logiciels gratuits pour les étudiants…
"L’arrivée de Linux a
permis de passer de la
station de travail au PC "
p16-21 événement 19/05/06 11:41 Page 18
E
vénements
19
Programmez n°87 juin 2006
L’Université Microsoft
Les Journées Académiques rassemblent chaque année
environ 250 chercheurs, enseignants et doctorants du
monde de l'Enseignement Supérieur et de la Recherche.
Cette conférence représente une bonne occasion pour les
enseignants/chercheurs d’échanger sur des perspectives
d’enseignement et d’innovation. Elle propose aussi de
découvrir les dernières innovations technologiques
Microsoft, notamment la plate-forme .NET. " Le but est de
changer l’image que les enseignants ont de Microsoft,
mais aussi de leur permettre d’échanger entre eux ", pré-
cise L. Ellerbach. La quatrième édition des Journées aca-
démiques se tenait fin avril à Paris. Le focus était mis sur
les produits et les technologies de demain : Windows
Vista, Office 2007, Visual Studio 2005, AJAX, WinFX,
XAML. Cet évènement a été l’occasion pour Bernard
Ourghanlian, CTO et CSO de Microsoft France (Directeur
technologie et sécurité) d’annoncer la mise à disposition des
sources du noyau de Windows pour l’enseignement et la recherche
(article précédent).
Témoignages
Nous avons recueilli quelques avis d’enseignants, dans le cadre des
Journées Académiques. Réticence, force d’inertie, et progression.
Dijon : 70% choisissent .Net
Le Centre Universitaire Catholique de Bourgogne est un des premiers
à avoir intégré dans son cursus des certifications Microsoft : Réseau-
Serveur d’une part, développement d’applications d’autre part. En
développement, 70% choisissent .Net.
IUT de Reims : " ne pas être lié à un outil ".
" Par tradition, on a toujours favorisé Linux, reconnaît un enseignant.
On s’est abonné à MSDN il y a un an, mais nous n’avons pas encore
de formation à .Net. Nous enseignons la programmation en Java et
PHP. On se pose la question, c’est le grand débat. On vient ici par
curiosité. On sent que nos collègues enseignants sont réfractaires.
Nous voulons avoir un esprit de veille technologique. On est obligé
d’avoir une vision ouverte, de ne pas être lié à un outil, mais d’être
capable de s’adapter à toutes les plates-formes et les outils. "
Université de Bretagne : " nous refusons toutes les certifications ".
" C’est surtout dans l’enseignement supérieur qu’il y a des réticences
envers Microsoft. Nous sommes orientés Java, Unix. Mais il y a une for-
mation .Net dans la filière " Génie logiciels/Réseaux ". Nous refusons
toutes les certifications, nous refusons d’être liés à aucun constructeur ".
Une Majorité de terminaux.
Montpellier : " A la Faculté, ils sont sur des terminaux, ils n’ont pas
du tout de Microsoft. A l’école d’ingénieurs, on forme simultanément
à l’Open Source et à Microsoft ". Toulouse 3 : " Sur 5 000 à 6 000
machines, on n’avait que de l’Unix. On n’a pas les moyens de mettre
des PC à disposition des étudiants ".
gée par Laurent Ellerbach, mais aussi un corps d’une quinzaine d’ex-
perts technologiques, chargés de faire des conférences à destination
des professionnels et aussi des étudiants.
• Environ 14 000 étudiants ont assisté à ces conférences. Ils repartent
généralement avec un livre Microsoft Press en bonus. " Faire des
conférences choquait il y a quelques années, mais les barrières tom-
bent et les enseignants y trouvent un bon complément à leurs ensei-
gnements ", reconnaît Laurent Ellerbach.
• L’éditeur suscite la création de Students Clubs. Il y en a une cinquantai-
ne à l’heure actuelle. L’objectif serait d’en compter un par établissement.
• Les étudiants peuvent devenir MVS, (Most Valuable Students). Ils sont
déjà 90 à avoir mérité le label.
• L’Imagine Cup est un concours qui existe depuis 4 ans, et qui vise à
" faire découvrir et aimer le code par les étudiants ". La coupe comp-
te 60 000 participants dans le monde, dont 8 500 Français. La France
est le 3e pays représenté, après l’Inde et le Brésil. Elle gère une caté-
gorie, le " Projet Hoshimi ". http://www.imaginecup.fr.
• Des partenariats peuvent également s’établir au coup par coup. Une
des premières actions vers les étudiants avait été, dès 2000, le site
web du Laboratoire Supinfo des technologies Microsoft, réalisé en
partenariat, entre l’école et l’éditeur. En décembre 2005, 200 étu-
diants avaient suivi les Students Days de Supinfo. Voir également le
partenariat avec l’INSA de Lyon (encadré).
• Un autre partenariat original mérite d’être signalé : le support pour les
administrateurs système-réseau de l’Education Nationale, avec l’INSA
de Lyon. Ce partenariat est triangulaire : il associe l’école, le ministère
de l’Education Nationale et Microsoft. Une cellule d’une douzaine d’étu-
diants, en relation avec des responsables et le service support de l’édi-
teur, gère un forum auquel sont inscrits environ 1000 administrateurs
système et réseau. " La formation d’administrateur système et réseau
n’est pas enseignée dans les écoles d’ingénieurs. C’est une expérience
unique pour les étudiants participants. Et d’ailleurs unique au monde
", souligne Laurent Ellerbach, " le terrain de jeu de ces étudiants, c’est
la vraie vie. Ils sont très demandés dès qu’ils sortent de l’école ".
s Jean KAMINSKY
p16-21 événement 19/05/06 11:41 Page 19
E
vénements
20
Programmez n°87 juin 2006
OpenOffice. Notre correspondant local a parlé de créer ce même type
d’API pour manipuler des fichiers OpenXML. Plus d’informations sur
http://www.oofrance.com.
Microsoft Research
Rick Rashid, un collaborateur proche de Bill Gates est venu nous pré-
senter quelques unes des recherches effectuées par Microsoft dans ses
laboratoires. Au programme, virtualisation des interfaces (écran holo-
graphique tactile comme dans le film " Minority report "), retouches
d'images évoluées telle que la modélisation 3D à partir d'une image 2D
ou encore la Sensecam, petit boîtier qui enregistre votre vie à la maniè-
re d'une boîte noire pour les humains. Si l’on en doutait encore,
Microsoft est présent partout, sa force de frappe est immense.
Présentation de IE7
IE7 sera le navigateur embarqué dans Windows Vista (et disponible sur
XP). Parmi les nouveautés, un renforcement de la sécurité, l'ajout d'un
système d'onglets, l'aperçu avant impression et la possibilité de choisir
le moteur de recherche intégré à l'interface du navigateur. On retiendra
surtout que le conférencier recommande IE7 pour sa grand-mère (sic !)
Nous, développeurs nous lui préférerons Firefox qui dispose déjà de ces
fonctionnalités et même de plus (excepté le mode protégé disponible
sous Windows Vista, ndlr).
Linq
Linq est un nouveau langage de requête basé sur un pseudo langage
SQL pour les développeurs .NET. Le grand intérêt de Linq est sa possi-
bilité d'effectuer des requêtes sur des données quelque soit leur type,
bases de données bien sûr, fichiers XML, mais aussi des données pro-
venant directement du code tels que des tableaux, objets ou toute autre
source de données.
.NET, PHP, Atlas, IIS7 et Rialto
Pour les architectes PHP, c'est la conférence que nous attendions le
plus. Scott Guthrie (responsable des équipes de développement de IIS
et ASP.net) nous a fait une démonstration de Visual Studio. L'outil per-
met de développer du site web classique assez facilement. On appré-
ciera que quelques fonctionnalités de base soient implémentées telles
que l'affichage de listes, création de menu,...
L'outil est pratique et permet de travailler vite et sans mettre les mains
dans le code. C’est un peu l’approche PHP de Dreamweaver qui permet
de générer les actions de base sans coder.
Dans le monde PHP, les solutions sont beaucoup plus axées codage et
C
ette année, quatre Français étaient conviés à participer à ce som-
met par Steve Sfartz, architecte en système d'informations chez
Microsoft France : Romain BOURDON – (WAMP5, Anaska), Didier
GIRARD - (Improve), Vincent MASSOL - (Cactus, Maven / Pivolis), Cyril
PIERRE DE GEYER – (www.afup.org , www.ass2l.org / Anaska). Pour un
professionnel des solutions liées au monde du logiciel libre, se rendre
chez Microsoft, c'est un peu se rendre chez l’adversaire. C'est quelque
chose de courant, car cela permet de savoir ce que fait l'autre et éven-
tuellement de se repositionner. L'année dernière, au Salon PHP, les deux
premiers inscrits étaient deux salariés de Microsoft. Chacun regarde ce
que fait l'autre ! Sur place, finalement peu de Linuxiens, la plupart des
ordinateurs tournent avec Windows. Mais comme l'OpenSource ne signi-
fie pas uniquement Linux, en y regardant de plus près on aperçoit beau-
coup de Firefox, Thunderbird, OpenOffice, Eclipse, PHP, Gimp ...
Quelques conférences intéressantes
Microsoft et l'Open Source
Le modèle économique de Microsoft est basé sur la vente de licences à
grande échelle. Dans ce cadre, il y a forcément conflit avec les licences
libres. D'autre part, Microsoft est conscient que sans interopérabilité,
ses outils perdront beaucoup de valeur face à ses concurrents, du coup
c'est une direction forte. Tant mieux pour les logiciels OpenSource pour
lesquels cet aspect est une force. Au final, si l'utilisateur y gagne, tout
le monde y gagne.
Microsoft est également dans une phase de réflexion quant à publier
certains de ses outils sous licence libre. Pour l'instant ils testent, mais
peut être demain Atlas ou d'autres frameworks seront complètement en
logiciel libre et ouvert ? La difficulté est d'accepter de ne plus être le
seul à avoir la main sur le projet.
OpenXML
Le concurrent de la solution d'OpenOffice.org : OpenDocument.
La bataille fait rage pour la normalisation d'un modèle XML pour les
documents des suites bureautiques. D'un coté l'OASIS, un organisme
indépendant, travaille sur la normalisation du format OpenDocument
utilisé notamment par OpenOffice.org. De l'autre, Microsoft pousse son
propre format OpenXML. Lequel des deux sera le premier à être offi-
ciellement standardisé ?
Dans tous les cas ce sera une grande avancée pour l'utilisateur, car ce
format sera ouvert et permettra à d'autres applications, supportant le
XML, de lire / modifier / créer facilement des fichiers bureautiques.
Un exemple des avancées d'interopérabilité qui pourraient être faites :
il a été discuté des API PHP permettant de manipuler des fichiers
Microsoft Technology Summit :
3• L'Open Source invité à Redmond
Le " Microsoft Technology Summit " est une conférence destinée aux membres des commu-
nautés libres, se déroulant à Redmond, au siège du géant des logiciels. Sur place, près de qua-
rante personnes représentant Java (surtout), PHP et d'autres tendances telles que la fonda-
tion Mozilla ou Apache. Microsoft souhaite y présenter ses technologies pour avoir des retours
et aussi permettre une meilleur intéroperabilité de ses outils.
p16-21 événement 19/05/06 11:41 Page 20
E
vénements
21
Programmez n°87 juin 2006
Conclusion : Microsoft change
• Microsoft change, et quoi qu'on en pense il faudra prendre ce para-
mètre en compte. D'une vision manichéenne avec laquelle il était
facile de trouver ses repères, Microsoft est passé à un discours plus
nuancé. Le modèle économique étant de vendre massivement des
licences on peut se demander comment cela va évoluer ?
• Les efforts de la communauté du logiciel libre continuent à porter
leurs fruits : l'impact sur les grands éditeurs du marché est réel.
• Les outils de la communauté Open Source sont d’un bon niveau. Ne
connaissant pas où peu les outils de Microsoft nous avions parfois
un complexe d’infériorité à cause de la force marketing du géant de
Redmond, nous avons été conforté dans la force de nos outils.
aide au développement propre (PHPEdit, Eclipse, ZendStudio). On y
retrouve, pêle-mêle, des outils de profiling, de deboggeur, d’autocom-
plétion, de gestion de travail collaboratif, … Pour avoir autant de fonc-
tionnalités en ASP.net il faut utiliser plusieurs outils et parfois mettre la
main au portefeuille (de nombreux outils open source, freeware existent
pour compléter Visual Studio, ndlr).
Finalement, la comparaison entre PHP et ASP n'a plus vraiment de rai-
son d'être, il faudrait comparer PHP et .Net. Ainsi, l'approche ne serait
plus une approche site Web mais plutôt une approche application Web
dédiée aux systèmes d'information. Après la plate-forme web, la partie
cliente avec le framework à la Ajax de Microsoft : Atlas. Encore un
Framework Ajax, c'est la mode (même si Atlas fait partie de l’univers
ASP.Net et intègre son langage de script, ndlr). Pour s'imposer, Microsoft
a changé ses habitudes : le Framework sera en partie sous la "Microsoft
permissive licence" et ne sera pas lié uniquement à .Net. Rien n'empê-
chera d'utiliser PHP ou JSP pour développer avec. En marge de cette
conférence, nous avons eu l'occasion de voir fonctionner un autre fra-
mework Ajax qui vaut le déplacement : Rialto.
Pour terminer, les conférenciers nous ont fait une petite présentation du
serveur web IIS 7. La grande nouveauté semble être la gestion d'un
équivalent des fichiers htaccess sous IIS. Microsoft entend ainsi essayer
de rattraper en partie le retard de IIS par rapport à Apache.
Conclusion
L'organisation de l'événement était excellente. Cependant, cela n'a pas
empêché quelques petits " dérives ". A la toute fin de la première jour-
née, le responsable des conférences a fait une annonce surprenante
pour nous : un bon de 120 dollars à utiliser dans le " Microsoft Store "
habituellement réservé aux employés ! Une fois arrivés sur place, nous
nous sommes rendus compte qu'en fait de " bon d'achat ", il s'agissait
d'un " droit d'achat " ... Ainsi nous avions l’occasion de dépenser notre
argent à hauteur de 120 dollars dans le magasin Microsoft. Un choc des
cultures et de mentalité. De Microsoft, nous avons rencontré des
codeurs et des architectes et le courant est bien passé. On s’attendait
à ce qu’ils cherchent à nous faire changer de bord et ça n’a pas été le
cas. En fait la seule personne qui rabaissait toujours l’OpenSource et qui
donnait des conseils pour le juguler était quelqu’un de notre groupe !
Sûrement une recrue pour Microsoft bientôt.
s Romain BOURDON, Créateur de WampServeur (www.wamp5.com). Directeur
Technique Anaska et Cyril PIERRE de GEYER, Cofondateur de l’association
française des utilisateurs de PHP, Responsable du pôle formation Anaska.
p16-21 événement 19/05/06 11:41 Page 21
Logiciels et services : croissance de 7 % en 2005
Jean Mounet, président du Syntec, vient de présenter le bilan 2005 du sec-
teur des logiciels et services. Résultat : +7 % par rapport à 2004, un chiffre
d’affaires de 31 milliards d’euros et de bonnes perspectives pour 2006 et 2007.
" L’année 2006 devrait s’inscrire dans la conti-
nuité de 2005, le secteur L&S devant pour-
suivre la bonne dynamique engagée depuis 2
ans et afficher une croissance de l’ordre de 6%
à 8%. Les investissements des entreprises
dans les L&S devraient donc encore afficher à
court et moyen terme une croissance nette-
ment supérieure à la croissance économique ",
a-t-il indiqué. Une réelle prouesse dans " un
climat économique franchement peu dyna-
mique ". Pour mémoire en effet, le PIB français
a été de +1,4% en 2005 et pourrait être de
1,8% en 2006… contre 8,8% pour la Chine,
3,6% pour les Etats-Unis et 3,2% pour
l’Espagne (sources: Xerfi, OCDE).
Dans la moyenne européenne…
En France, aucun des 4 grands domaines d’acti-
vités du secteur L&S n’échappe à la croissance
qui s’est globalement accélérée sur un an.
L’ingénierie/intégration se taille la part du lion
avec 40% de parts de marché. Viennent ensuite
l’infogérance avec 29% de PDM, en nette pro-
gression par rapport à 2004 (+11%), puis les édi-
teurs (25%) et le conseil (6%) – chiffres Pac,
Syntec informatique. Autre enseignement : sur le
plan européen, le domaine L&S représente 30,7%
de PDM , répartis en 10,7% pour les logiciels et
20% pour les services. Ils sont pourtant derrière
le géant des TIC : les opérateurs télécoms qui
représentent 44,2% du marché (source : EITO). En
termes de dynamisme, la France se situe dans une
bonne moyenne européenne -où l’Italie fait figure
de parent pauvre - . Pourtant, elle ne parvient pas
à remonter son retard en matière d’investisse-
ments L&S. Certes, si elle a plus que triplé ses
dépenses L&S dans le secteur IT entre 1973 et
2005, passant de 12% à 41% (chiffres Pac, Syntec
informatique), elle est encore largement distancée
par les Etats-Unis. En 2005, ceux-ci ont consacré
51% d’investissements en L&S dans les dépenses
IT (Pac, Regent Associates, Analyse Syntec infor-
matique). C’est donc sur ce point qu’il lui faut
continuer à maintenir la pression…
C
arrière
22
Programmez n°87 juin 2006
Au premier plan, Joseph Mariani, directeur du
département "technologies de l'information et de
la communication" à la direction de la technolo-
gie, ministère délégué à l'enseignement supérieur
et à la recherche, a accueilli au ministère de la
recherche, les participants.
I.S Able a pour mission de mettre en place une
structure indépendante d’évaluation en com-
pétences informatiques ; il est géré par l’asso-
ciation TopDev.
Au programme de la rencontre : l’évolution des
compétences informatiques au cours des 20
dernières années (sujet développé par Jacques
Printz, responsable de la chaire logiciel au
Cnam et membre de l’association promouvant
l’histoire de l’informatique et des télécommu-
nications), quelques données sur les compé-
tences actuellement recherchées, par Pierre
Lamblin, directeur études et recherches de
l’Apec. Puis trois débats se sont succédés : les
compétences des informaticiens, celles des
non informaticiens et enfin, " que penser d’un
système d’évaluation de compétences indivi-
duelles ? "
Pas une épreuve de rapidité…mais
apprendre à travailler en réseau !
L’événement s’est terminé par la remise des
prix du concours de programmation TopDev
2006. Son président, Chrystel Coassin, est
TopDev : en route
pour la troisième édition !
Le 10 avril dernier, le ministère de la Recherche accueillait une belle bro-
chette de participants dans le cadre d’une conférence organisée pour le
lancement de la certification en compétence informatique I.S. Able
(Informations Systems Ability).
revenu sur cette épreuve qui s’est déroulée
lors du week-end du 27 au 29 janvier dernier.
Ouverte à tous (" étudiants, professionnels ou
simples passionnés ") et à l’international, elle
a réuni 771 participants issus de 65 pays.
L’objectif : la mise en concurrence des informa-
ticiens en programmation multi langage multi
environnement (Java, PHP, .Net, Python), "tota-
lement indépendante des éditeurs de logiciels
de programmation ou de modélisation", sur un
sujet fixé et fermé pour une durée limitée de
60h. L’épreuve a consisté en la réalisation
d’une application Web, tirée d’un cas réel pro-
fessionnel, produite proprement et documen-
tée, et non pas " d’un exercice de programma-
tion à réaliser le plus vite possible ".
Lauréats de l’édition 2006 : Arnaud Vandyck et
Yannick Boogaerts (formateurs en informatique
au service de technologie de l’éducation du
professeur Dieudonné Leclercq, faculté de psy-
cho pédagogie à Liège). Deuxième place :
Fabrice Fontaine (consultant technique indé-
pendant à Paris, diplômé de l’ENSI Caen-
ISMRA et titulaire d’un DEA en intelligence arti-
ficielle). Troisième place : André-François
Landry (consultant indépendant à Saint-Omer
au Canada). Quatrième place : Mohamed
Ouchra (responsable informatique) et Patrice
Manset (développeur Web). Cinquième place :
Andréi Toma (étudiant à l’Insa de Lyon et vain-
queur de TopDev 2005).
L’édition TopDev2007 est en phase de prépa-
ration. Chrystel Coassin confie qu’il cherche à
"élargir l’équipe" et à ouvrir le concours à des
associations d’étudiants. La date, encore tenue
secrète, sera prochainement communiquée et,
conclut Chrystel Coassin non sans humour " il
faudra plus encore apprendre à travailler en
réseau " !
En savoir plus :
http://www.topdevone.com/index_fr.php
http://www.is-able.com/V_La_Competence_
Informatique.html
Par Claire Padych
22carrière 18/05/06 18:16 Page 22
'Z006 lnIel CcrpcraIicn, lnIel, le lcgc lnIel, PenIium, lIanium, lnIel Xecn eI VTune scnI des marques eI des marques depcsees de lnIel CcrpcraIicn cu de ses ñliales aux EIaIs Unis d'Amerique eI auIres pays. *0'auIres ncms eI marques
peuvenI eIre reclamees ccmme apparIenanIes à d'auIres.
Transfcrmez |a µu|ssance Hu|I|Ccre
en Perfcrmances de |'Aµµ||caI|cn
Préµarez vcs aµµ||caI|cns µcur qu'e||es µrcñIenI du µara||é||sme eI de |a mcnIée en charge
Bcn du µrem|er ccuµ:
Ccmµ||aIeurs InIe|' C÷÷ eI FcrIran
amelicrez les per!crmances via le mulIi ñlaires sans mcdiñer vcIre envi·
rcnnemenI
Ana|yseurs InIe|' VTune"
idenIiñez rapidemenI les gculeIs d'eIranglemenI di!ñciles à Ircuver
InIe|' ThreadChecker
Ircuvez les bugs mulIi ñlaires laIenIs via la visualisaIicn en Iemps reel
InIe|' HPI L|brar|es
mise en ceuvre scuple de NPl sur archiIecIures mulIi reseaux
InIe|' C|usIer HaIh kerne| L|brary
permeI aux develcppeurs de parallelismes de develcpper des applicaIicns
Linux numeriquemenI sIables
Vcus éccncm|sez jusqu'à 1Z0C Pr|x C
HT
InIe|' Thread|ng Tcc|s Z.Z 594,00
InIe|' C÷÷ Ccmµ||er 9.1 µcur w|ndcws 339,00
InIe|' V|sua| FcrIran Ccmµ||er 9.1 SIandard 4Z4,00
Ed|I|cn µcur w|ndcws
InIe|' V|sua| FcrIran Ccmµ||er 9.1 Prcfess|cna| 1189 ,00
Ed|I|cn µcur w|ndcws
InIe|' VTune Perfcrmance Ana|yzer 8.0 594,00
InIe|' InIegraIed Perfcrmance Pr|m|I|ves 5.1 169,00
µcur w|ndcws
Pcur en savcir plus, ccnIacIez Valerie cu Frederic au 01 30 BZ 04 54, envcyez·ncus un
email à inIelQmicrcsigma.!r cu allez sur ncIre siIe à www.micrcsigma.!r/inIel.
"Entre 24,5 et 31,5 pourcent plus rapides suite aux
améliorations du compilateur Fortran pour Linux*
sont très signiñcatifs quant à nos applications"
Dr. James Murray
Astronomer and System Administrator
Swinburne Centre for Astrophysics and Supercomputing
22carrière 18/05/06 18:16 Page 23
Techniquement, un moteur de stockage s’appuie sur les " pluggable sto-
rage engine API " de MySQL. Ces interfaces fournissent différents ser-
vices de bas niveau qui facilitent et accélèrent le développement d’un
moteur de stockage spécifique. Le moteur de stockage gère les accès
disques ou mémoire tandis que le moteur SQL sert d’interface entre le
client (serveur d’application, etc.) et les différents moteurs de stockage.
Grâce à ce découplage, une table peut être migrée d’un moteur de stoc-
kage à un autre, à l’aide d’une simple instruction SQL " alter table ‘engi-
ne’ ". Les spécificités du moteur de stockage sont totalement invisibles
pour le développeur qui n’a pas une seule ligne de code à changer dans
son application.
De nombreux moteurs sont déjà en cours de développement. C’est
pourquoi l’éditeur vient de lancer un programme de certification pour
les moteurs partenaires ainsi qu’un site - forge.mysql.com – qui regrou-
pe l’ensemble des projets open source liés à MySQL.
Mais comme le note Juergen Faisst, directeur général de Thinking
Network qui développe un moteur MOLAP pour MySQL, " il faudrait
pouvoir aller encore plus loin en facilitant le développement d’interfaces
et d’optimiseurs SQL spécifiques ". MySQL jouerait alors le même rôle
d’intégration et de fédération qu’Eclipse pour les outils de développe-
ment. Une idée qui séduit aussi Jérémy Zawodny, expert MySQL chez
Yahoo ! et qui se demande " combien de temps faudra-t-il avant que
MySQL intègre l’interface données de Google : Google Data API ? "
Nous souhaitons fédérer les initiatives en
facilitant le développement de nouveaux
moteurs de stockage grâce à notre architecture
unique : ouverte et modulaire "
Bertrand Matthelié,
responsable marketing Europe de MySQL
O
n peut, par exemple, recourir à des tables MyISAM pour lire
très rapidement des données et à des tables InnoDB pour
garantir l’exécution de transactions ACID. C’est grâce à cette
modularité que MySQL affiche d’excellentes performances face aux
solutions d’IBM, Oracle et Microsoft. Ces dernières imposent d’utiliser
un seul moteur de stockage transactionnel, même si une table n’est
accédée qu’en lecture, ce qui réduit leur performance. Partant du prin-
cipe que la nature des applications évolue de plus en plus et de plus
en plus vite, MySQL a décidé d’axer le développement des nouvelles
versions de son SGBD/R autour de la modularité. " Si vous n’utilisez
qu’un seul moteur, il y a des tas de fonctionnalités qui ne vous inté-
ressent pas. Si vous recourez à plusieurs SGBD, vous devez embaucher
plusieurs DBA et faire face à des problèmes d’intégration " résume Zack
Urlocker, vice président de MySQL AB.
La modularité comme stratégie
Grâce à son architecture à deux étages – moteur SQL d’un côté et
moteurs de stockage de l’autre – MySQL veut encourager le développe-
ment de nouveaux moteurs de stockage répondant aux besoins spéci-
fiques de chaque application. " Nos utilisateurs doivent pouvoir choisir
le moteur de stockage le plus adapté à leurs contraintes, et même, au
besoin, développer leur propre moteur(*). Cette modularité est synony-
me de meilleures performances " estime Bertrand Matthelié, respon-
sable marketing Europe de MySQL AB.
SGBD
24
Programmez n°87 juin 2006
MySQL User Conference 2006
MySQL veut " eclipser " les bases de données
Depuis sa création, MySQL permet d’utiliser
plusieurs moteurs de stockage pour répondre
aux différentes contraintes techniques d’une
même application.
J
a
m
e
s

D
u
n
c
a
n

D
a
v
i
d
s
o
n
/
O
'
R
e
i
l
l
y

M
e
d
i
a
"
.

Les trois fondateurs de MySQL ont annoncé le nouveau moteur transaction-
nel Falcon - " free as in beer " - lors de la conférence qui réunissait ses uti-
lisateurs à Santa Clara (Californie) fin avril.
(*) : comme l’on fait Friendster, Google et Yahoo !

24-25 événements 18/05/06 19:53 Page 24
BRÈVES
SQL Server Service Pack 1
M
icrosoft a lancé fin avril dernier le premier service pack dédié à
SQL Server 2005. Cette mise à jour inclut de nouvelles fonctions :
mirroring de base de données, de nouvelles fonctions pour les SQL
Server Reporting Services, apparition du Management Studio Express
pour l’administration. Le domaine de SP1 propose aussi un support plus
large des différents types de données ou encore la mutualisation des
connaissances pour le décisionnel, sans oublier une meilleure intégra-
tion de la mobilité. Et désormais, SQL Server 2005 s’intègre bien mieux
avec SAP NetWeaver Business Intelligence via un nouveau composant
fournissant les données SQL Server à l’outil SAP.
Ingres 2006
O
n l’avait presque oublié, le SGBD Ingres continue à exister et tente
de se redynamiser en annonçant ses plans pour 2006 et 2007. Le
grand chantier concerne le SGBD Ingres en version 2006. Cette édition
mise sur les performances, l’exécution parallèle des requêtes et leur opti-
misation, un nouveau système de partitionnement ainsi que sur la haute
disponibilité grâce à des mécanismes de clustering, disponible sous
Linux, Windows et Solaris. Côté développement et connexion, le SGBD
supporte PHP, Python, Perl, Ruby, s’intègre à .Net et Visual Studio et inclut
le support de JDBC 3 pour JBoss, WebSphere et WebLogic. D’autre part,
l’éditeur annonce une meilleure intégration à Linux sur l’installation nati-
ve (format RPM) que ce soit sous KDE ou Gnome. Côté nouveaux sys-
tèmes, Ingres 2006 prend en compte OpenVMS Itanium, Solaris x86 et
x86-64, MacOS X et même Xbox 360 ! L’éditeur travaille aussi activement
sur OpenROAD, un IDE de développement compatible Ingres 2006. L’outil
doit supporter les nouvelles fonctions d’Ingres et aura un support com-
plet d’Unicode. L’évolution d’OpenROAD se fera en plusieurs étapes entre
2006 et 2007 : apparition d’un runtime mobile pour Windows Mobile,
intégration aux IDE phares du marché (Visual Studio, Eclipse), fonction de
modélisation graphique basée sur UML. Ce renouveau bénéficie aussi à la
France qui voit renaître le club utilisation Ingres !
Site : http://www.ingres.com
BI City : Oracle s’expose
F
in avril dernier se tenait une journée sur le Business Intelligence,
orchestrée par Oracle autour de ses solutions et de solutions parte-
naires. Le BI est devenu un outil stratégique dans la prise de décision.
La matinée fut surtout consacrée à la vision d’Oracle sur le BI, les solu-
tions de l’éditeur. Ce fut aussi l’occasion de lancer Oracle Business
Intelligence Suite. Cette suite vise à bâtir du BI et du Data Warehouse.
Couplée à Oracle 10g, il sera possible de rapidement créer, manager,
déployer des applications BI. Ce fut aussi l’occasion, via une table
ronde, de discuter du futur du décisionnel, notamment avec le SOA.
L’après-midi fut largement occupé par les retours d’expériences. Cette
rencontre entre utilisateurs et retours d’expériences réelles a été une
des clés du succès de la journée. Justin Ziegler, DSI de PriceMinister, se
montre enthousiasme de cette formule, " avoir un retour du terrain est
primordial. L’investissement est important, on ne paie pas seulement les
licences, on met en place une équipe ". Cela permet de voir réellement
l’utilisation des outils. " Je suis prêt à renouveler l’expérience si j’y trou-
ve un intérêt. On aura d’autres choses à dire en 2007 ". La journée fut
un réel succès : plus de 900 inscrits. Si BI City 2007 existe, l’objectif
sera ambitieux : atteindre les 1 500 personnes !
Les moteurs actuels de MySQL
Moteur Editeur Type Intérêt
InnoDB Oracle Transactionnel (ACID). Support des
verrou au niveau des lignes transactions longues.
Berkeley DB Oracle Transactionnel (ACID). Alternative à InnoDB
verrou au niveau des lignes.
intégrité référentielle.
MyISAM MySQL Non transactionnel. chaque table Très rapide en lecture.
est un fichier. verrou au niveau Adapté au web et
de la table. à certains type
de datawarehouse.
Merge MySQL Collection de tables MyISAM Performances et
identiques qui sont vues comme une dépasser les limites
seule table par le SGBD. physiques des disques.
Federated MySQL Base de données logique réparties permet l'accès à des
sur plusieurs serveurs physiques. tables d'un serveur
distant (pour l'instant
uniquement un server
MySQL)
Memory MySQL Table stockée entièrement en mémoire. Performances lors de
(Heap) recherches sur des
tables contenant de
très nombreux
enregistrements.
Archive MySQL Données compressées avant d’être Très rapide en lecture.
stockées sur disque. Elles ne peuvent Nécessite très peu de
pas être supprimées ou mises à jour. place sur le disque.
Compatible avec
certaines contraintes
légales liées à
l’archivage de données
légales (factures, etc.).
Cluster MySQL Cluster temps réel Performance et haute
(NDB) disponibilité
CSV MySQL Stockage des données dans Simplicité de manipulation.
un fichier plat au format CSV. Format très ouvert.
Un fichier par table.
Blackhole MySQL Moteur ne stockant pas les données. Test de montée en
charge afin de
déterminer les goulots
d’étranglement liés au
code SQL et non au
moteur de stockage
(par exemple).
Tous ces moteurs sont disponibles sous licence GPL.
Les moteurs à venir
Moteur Date Editeur Type Intérêt
PBXT Q4 2006 PrimeBase XT Transactionnel (ACID). Alternative à InnoDB
SolidDB Q1 2007 Solid IT Transactionnel (ACID). Alternative à InnoDB
Falcon Q1 2007 MySQL Transactionnel (ACID). Supporte un très gros
Verrou MVCC plus fin volume de transactions
que la ligne. courtes. Adapté selon
l’éditeur aux
applications " web 2.0 ".
OpenOLAP Q1 2007 Thinking Moteur MOLAP. Datawarehouse
Networks AG et décisionnel.
Tous ces moteurs sont disponibles sous licence GPL.
s Frédéric Bordage
SGBD
25
Programmez n°87 juin 2006
24-25 événements 18/05/06 19:53 Page 25
nouveautés et améliorations. On notera l’apparition de nouvelles fonc-
tions serveurs pour la robustesse, de continuité et de sécurité des don-
nées, le support de .Net 2 et de Visual Studio 2005 ainsi que des nou-
veaux matériels Symbian. Pour l’administration, un nouvel outil gra-
phique servira à administrer, déployer, Monitorer.
Site : http://www.ianywhere.com
OUTILS
Embarcadero vise une surveillance
optimale
L’éditeur Embarcadero prépare la sortie de Performance Center 2.0. Cette
version doit apporter un monitoring 24 – 7 des bases de données DB2
sous Linux, Unix et Windows. L’outil supportait déjà Oracle, Sybase et
Microsoft. Avec la masse croissante des données et des applications, le
monitoring constitue un élément critique dans la disponibilité des don-
nées et les bonnes performances.
Site : http://www.embarcadero.com
OUTILS
Importez du texte dans une base
Comment importer automatiquement des colonnes de textes dans dif-
férentes bases ? L’import de données est souvent une corvée à incor-
porer dans une application. La librairie RegexImporter prend en charge
cette fonction. Elle supporte Oracle, MySQL, SQL Server. Fonctionne uni-
quement sous .Net (1.x pour le moment). Version d’essai disponible. La
licence développeur coûte 270 euros.
Site : http://earthquakes.lgg.ru/products.aspx
OUTILS
Quest Software aide toujours MySQL
L’éditeur Quest Software rend disponible la version 2 de son outil Toad
for MySQL. Toad permet d’apporter des fonctions d’administration, de
performance et sécurité aux bases MySQL. Cette v2 inclut un module de
" version control integration " pour vérifier rapidement le code, d’un
gestionnaire de sécurité ainsi qu’un enregistreur de macro. Toad for
MySQL est gratuit mais sans support, pour bénéficier d’un support, il
faut débourser 170 euros.
Site : www.quest.com
SGBD
4D en version 2004.4
L’éditeur français 4D a une nouvelle fois mis à jour sa base de données.
Estampillée 2004.4, il s’agit essentiellement d’une version de mainte-
nance corrigeant des bugs des versions précédentes. La principale nou-
veauté est le support du MacIntel (Mac utilisant des processeurs Intel).
Toujours aucune nouvelle sur la prochaine version majeure que l’on
attend depuis 2003. La rupture annoncée en fin 2002 avec le projet
"Goldfinder" ne devrait pas avoir lieu.
Site : www.4d.fr
SGBD
IBM DB2 Viper : prêt à mordre
Disponible depuis plusieurs semaines en préversion, le prochain DB2,
nom de code Viper, confirme la volonté d’IBM de rester sur le marché
très concurrentiel des SGBD. DB2 affronte Oracle, Microsoft et MySQL.
DB2 Viper devrait arriver en version finale durant l’été, au plus tard à la
rentrée. Viper se veut une base de données hybride permettant d’utili-
ser le relationnel classique et XML. L’éditeur met en avant cette dualité
en précisant que XML est supporté nativement et que l’on peut mani-
puler des données XML sans aucune transformation.
Outre son fonctionnement sur Windows, Linux et Solaris, la partie déve-
loppeur a été soignée. On retrouve le support de .Net 2 mais surtout de
PHP, avec l’ajout du Zend Core. Facilitant ainsi l’accès aux bases DB2
depuis une application PHP. Si rien n’est connu en détail, une version
express gratuite de Viper sera disponible sans doute vers la fin de l’an-
née. SOA n’a pas été oublié dans ce SGBD. La possibilité d’exposer et
de consommer des Web Services facilite l’utilisation de DB2 dans un
cadre SOA. Pour les gros volumes de données, on dispose d’une fonc-
tion de compression. La fédération de données est disponible unique-
ment en environnement DB2, un module sera à acquérir si on en sort.
MOBILITÉ
SQL Server
partout
Pour investir l’ensemble des mar-
chés, Microsoft lancera une ver-
sion express de SQL Server dédiée
aux mobiles. Elle assurera une
synchronisation vers les bases
SQL Server et le modèle de déve-
loppement sera identique à la version desktop. Il est probable que les
licences d’accès client seront payantes. Cette version est identique à l’édi-
tion SQL Server Mobile, mais avec les limitations des versions express.
On ne pourra pas l’utiliser avec son serveur web. Une première version
devrait être disponible durant la prochaine TechEd (novembre). Elle ne
supportera pas Xpath.
SOCIÉTÉ
EMC se renforce dans la réplication
EMC, spécialiste du stockage, vient de racheter Kashya, compagnie tra-
vaillant sur les logiciels de réplication de données et de protection. Le
montant du rachat est d’environ 153 millions d’euros. EMC souhaite
injecter des outils et technologies dans le stockage.
Site : www.emc.com
MOBILITÉ
iAnywhere 10 en programme bêta
La filiale de Sybase travaille activement sur la version 10 du SGBD
iAnywhere. Il s’agit d’une très importante mise à jour avec plus de 200
SGBD
26
Programmez n°87 juin 2006
p26 18/05/06 18:24 Page 26
p26 18/05/06 18:24 Page 27
D
ossier
28
Programmez n°87 juin 2006
Mon Eclipse idéal
À peine 5 ans ont été nécessaires à Eclipse pour s’imposer comme l’outil de développement
Java par excellence et devenir une plate-forme technique et technologique de référence.
L
e passage de Borland à Eclipse pour
JBuilder puis le retrait de ce même
Borland du marché des environnements
de développement avec la vente de l’en-
semble des IDE n’a fait que confirmer la supré-
matie d’Eclipse. Pour autant, les autres IDE ne
sont pas morts. NetBeans semble être le chal-
lenger n°1 alors que Jbuider, IntelliJ ou encore
Jdeveloper peinent à rester dans la course.
De très nombreux environnements de déve-
loppements utilisent Eclipse. IBM, Adobe, BEA,
Software AG, Compuware, Oracle, Zend, etc.
pour ne citer qu’eux ! Cette utilisation se fait
sous deux formes essentiellement : intégration
de socle Eclipse pour bâtir une solution " pac-
kagée " dessus ou fournir des plug-ins. L’autre
avantage de l’outil est de s’appuyer sur une
communauté d’éditeurs et open source très
active aussi bien dans la définition de nou-
veaux frameworks que dans la conception de
nouveaux outils. La profusion de plug-ins com-
pense le manque de fonctions disponibles par
défaut dans l’environnement de développe-
ment. Cependant, la plate-forme souffre de
plusieurs maux : complexité du développe-
ment de plug-ins ou d’applications RCP, quali-
té des plug-ins très variable, ergonomie
moyenne, pas de certifications des extensions.
Quand on débute le développement Java, le
réflexe Eclipse est tentant. Mais encore faut-il
savoir par où commencer. Comment choisir
des plug-ins ? Quelles précautions prendre ?
Peut-on recompiler son environnement
Eclipse ? Faut-il créer sa propre configuration
ou utiliser des distributions clé en main ?
Autant de question que nous allons aborder
dans ce dossier.
Que vous soyez pro ou amateur d’Eclipse, il est
toujours utile de connaître les fondamentaux.
s François Tonic
28/41 18/05/06 19:34 Page 28
D
ossier
Eclipse : un écosystème omnipotent !
On ne présente plus Eclipse. À la fois, framework,
plate-forme client riche, IDE, Eclipse, issu des
laboratoires IBM, a su en quelques années bousculer
le marché des environnements de développement
au point de forcer l’acteur historique Borland à passer
à l’ennemi… Eclipse ne risque pas de s’arrêter
en si bon chemin, sans pour autant " détruire ",
son principal concurrent, NetBeans.
E
clipse n’est pas mono langage mais véri-
tablement multi langage, capable de
coder en Java, C, C++, C#, etc. Il fonc-
tionne sur de nombreux systèmes. Il se pose
désormais en plate-forme universelle pour les
outils. Il est ouvert, extensible, multi plate
forme. Basiquement, Eclipse repose sur un
runtime OSGI, la librairie d’interface SWT, Jface
et l’interface utilisateur (Generic Workshop). À
cela s’ajoutent le Java developments tools, les
documentations, l’IDE, les ressources.
L’un des intérêts d’Eclipse est son architecture
ouverte et modulaire avec l’ajout de plug-ins, des
extensions à l’environnement. Aujourd’hui, il exis-
te presque un millier de plug-ins, commerciaux et
open source, de qualité et de pertinence très
inégaux. Il est l’outil majeur dans les développe-
ments Java / J2EE et bientôt sur Web 2.
Les distributions Eclipse
À l’instar des distributions Linux, les distribu-
tions Eclipse commencent à se multiplier sur le
marché. Il s’agit, la plupart du temps, de pac-
kager l’IDE Eclipse et différents
plug-ins, souvent open source,
parfois commerciaux quand il
s’agit d’éditeurs. C’est une ten-
dance vouée à se renforcer. Le but
est de fournir aux développeurs
un socle fonctionnel complet. Il
existe parfois des versions com-
munautaires gratuites et des ver-
sions payantes incluant le plus
souvent du support. Ainsi, Yoxos
propose trois éditions de sa distri-
bution avec possibilité de sous-
cription et de support. L’édition
développeur, sans souscription
(donc sans mise à jour) est à
24,95 euros, par contre, l’édition
entreprise démarre à 450 dollars
avec support. Il existe aussi des
initiatives open source comme
EasyEclipse pour bâtir une distri-
bution entièrement ouverte.
EasyEclipse propose des éditions de démarra-
ge, Desktop Java, serveur, mobile, LAMP. Vous
trouverez aussi des " distributions métiers "
construites pour répondre à un problème busi-
ness comme le management, la distribution
(supply chain), etc. Intuit Eclipse illustre cette
capacité modulaire d’Eclipse. Vous trouverez
aussi des distributions de développement
orienté. Le but de toutes ces distributions est
toujours le même : assembler, intégrer, tester
des plug-ins pour livrer un environnement clé
en main au développeur. Cette méthode a
l’avantage de vous éviter de chercher, de tes-
ter les plug-ins et surtout de vérifier l’inter-
opérabilité entre les différents modules ! Pour
démarrer rapidement, c’est l’idéal. Quand vous
travaillez en équipe, il faut absolument
construire une distribution type déployée sur
l’ensemble des postes de développement. Il
faut en effet garder l’homogénéité de l’envi-
ronnement de développement et éviter toute
installation sauvage.
Se former à Eclipse
Maîtriser Eclipse n’est pas chose facile. Toute
une offre de formation existe. Le premier élé-
ment est la documentation, officielle ou non,
point de départ pour démarrer et apprendre
les premières fonctions (malheureusement pas
toujours complète et souvent volumineuse et
en Anglais). Il existe plusieurs dizaines d’ou-
vrage sur Eclipse et son utilisation dans le
développement, dont plusieurs en Français.
C’est une bonne manière pour se former et se
perfectionner dans certains
domaines. La communauté étant
très active, les forums Eclipse,
en Français ou en Anglais, sont
nombreux. Un des sites franco-
phones le plus connu est
EclipseTotale. La formation
Eclipse est un marché en plein
essor, grâce à une demande elle
aussi en croissance. Il existe
déjà une offre de formations
relativement étoffée. PLB propo-
se ainsi une formation de 4
jours sur la conduite de projets
Eclipse en étudiant CVS, Ant et
Junit. Valtech n’est pas en reste,
29
Programmez n°87 juin 2006
28/41 18/05/06 19:34 Page 29
avec 3 jours pour personnaliser l’environne-
ment et faire du travail en équipe. Sysdeo
(groupe SQLi) propose aussi des formations
similaires. Les prix sont très variables, mais
comptez entre 1 200 et 1 700 euros. On pour-
ra aussi citer : Anyware Technologies, ac6,
dawan.
Certification, logos
Un des points négatifs mis en avant concerne
la diversité des plug-ins, des commerciaux, de
l’open source. Il y a forcément une qualité très
variable d’un plug-in à l’autre. Il n’existe pas
de certification officielle de la Fondation
Eclipse. Seuls les projets officiels sont en
quelque sorte adoubés par la fondation. Il
existe bien des logos officiels "Built on Eclipse",
"Eclipse Ready", "Eclipse Incubation",
"Eclipse Proposals" mais ils n’apportent aucu-
ne certification ou garantie explicite de quali-
té. Pour que l’écosystème d’Eclipse continue à
croître, il devient nécessaire de mettre en
place une véritable procédure de certification,
avec des batteries de tests pour homologuer le
plug-in. Espérons que cela se mette en place
d’ici fin 2006. C’est pour cela que des éditeurs,
comme BEA avec Workshop Studio, packagent
leur propre Eclipse avec des plug-ins, pour
garantir le bon fonctionnement des différents
modules en production.
S’y retrouver
dans la jungle des plug-ins
Comme vous allez le voir dans la suite du dos-
sier, une des difficultés est de pouvoir trouver les
bons plug-ins pour créer son environnement de
travail. Il existe plusieurs manières de procéder.
Sites d’annuaires
Le plus pratique est de passer par des cata-
logues. Il en existe plusieurs. L’un des plus
connus est Eclipse plugin central (www.eclip-
seplugincentral.com). Il recense la plupart des
plug-ins disponibles par catégories (28 en
tout). Surtout, les plus actifs et les nouveautés
sont bien mises en avant. Il existe aussi : one-
clipse (www.oneclipse.com), eclipse plugins
(www.eclipse-plugins.info).
Le site officiel
La fondation propose sur eclipse.org son
propre catalogue des plug-ins commerciaux et
open source. C’est un bon point de départ
pour toute recherche. Il est cependant moins
pratique dans sa présentation et dans la mise
à jour des informations.
s François Tonic
30
Programmez n°87 juin 2006
Petit historique
1998 : IBM commence le développement d’un
environnement de développement qui se
nommera Eclipse. Le but est de soutenir,
suivre la croissance du marché Java émergent.
2001 : le projet adopte le virage de l’open
source, avec la création du consortium
Eclipse.
2003 : année capitale pour l’environne-
ment qui débarque dans sa première ver-
sion majeure (apparition des préversions
de la 3.0).L’adoption par les développeurs
commence à croître fortement. Mais c’est
aussi l’année des critiques du marché sur
le contrôle d’IBM sur Eclipse et le flou sur
l’avenir de l’outil.
2004 : création de la fondation Eclipse
pour rendre l’environnement indépendant
d’IBM, tout du moins, moins dépendant.
Première conférence EclipseCon !
2005 : annonce d’Eclipse Rich Client
Platform.
2006 : la fondation regroupe 12 dévelop-
peurs stratégiques, 8 développeurs à plein
temps et plus de 80 sociétés membres de
la fondation et/ou utilisant Eclipse dans
leurs solutions.
Les grands projets Eclipse
Eclipse s’occupe d’une série de projets visant à créer des socles techniques / technologiques
sur de nombreux domaines applicatifs et de développements liés à Eclipse et utilisables par
les développeurs. Voici une petite sélection :
- EMF (Eclipse Modelign Framework) : framework de modélisation et de génération de code
dédié aux outils et applications basées sur un modèle de données structurées. Il utilise
XMI pour les spécifications du modèle.
- VE (Visual Editor) : projet visant à créant un constructeur d’interface utilisateur supportant
Swing, SWT.
- WTP (Web Tools Platform) : l’objectif est d’étendre la plate-forme avec des outils pour
développer des applications web de type J2EE. Il inclut des outils HTML, Javascript, CSS,
SQL, XML, etc. Un assistant de création web service est disponible.
- TPTP (Test & Performance Tools Platform) : il doit fournir des outils sur l’optimisation, le
monitoring, le tracing et les tests.
- STP (SOA Tools Platform) : construire un framework et des outils extensibles orientés SOA.
Il devrait prendre en compte les spécifications du Service Component Architecture (ou SCA).
En complément, la fondation mène un projet ambitieux : Callisto. Il s’agit de fournir, cet été,
la livraison de 10 projets Eclipse, sans fournir une unification des projets. Callisto touche le
reporting avec BIRT, le développement C/C++, les outils de données, EMF, la disponibilité
d’Eclipse 3.2, les outils Web.
A noter que l’Ajax Toolkit Framework, en pleine phase de conception, fait partie du WTP. Il
s’agit de fournir une interopérabilité entre les principaux frameworks Ajax, des assistants.
Les premières " versions " seront disponibles dans quelques semaines.
D
ossier
28/41 18/05/06 19:34 Page 30
L’adoption toujours croissante d’Eclipse par les entreprises a
su faire de cet IDE Java, un des leaders du marché. Outre sa
gratuité, le succès d’Eclipse provient aussi de sa flexibilité qui
permet à chaque entreprise d’adapter cet outil à ses propres
besoins. Que vous soyez une entreprise désireuse d’adapter
votre distribution Eclipse à vos processus de développement,
ou simplement que vous ayez envie de personnaliser votre
outil fétiche, voici quelques informations pour vous guider
dans les premières étapes de l’élaboration de votre propre dis-
tribution, avec notamment la compilation du SDK d’Eclipse.
E
clipse est une plate-forme libre, sous
licence Eclipse Public Licence dont l’ob-
jectif, à l’origine, est de permettre aux
utilisateurs de pouvoir réaliser n’importe quel-
le tâche, mais également de ne rien faire de
particulier ! Cela semble être paradoxal, pour-
tant c’est justement ce qui fait toute la puis-
sance de cette plate-forme. Ce que l’on
désigne souvent sous le nom d’Eclipse n’est
autre qu’une plate-forme permettant la créa-
tion d’applications de type client riche ; c’est
l’ajout de plug-ins à cette coquille ‘vide’ qui le
rend si utile, si flexible et surtout si populaire.
Pour les développeurs Java, c’est l’utilisation
du plug-in JDT (Java Development Tools) qui
transforme Eclipse en un puissant IDE Java ! Il
existe également un certain nombre de plug-ins
pour les autres langages, par exemple
PHPEclipse pour le PHP, CDT pour le C/C++,
COBOL pour le Cobol, …
Dans les parties suivantes, nous verrons com-
ment compiler et personnaliser quelque peu
son propre SDK Eclipse. Cela vous permettra
d’obtenir une plate-forme qui convienne réelle-
ment à vos besoins, et surtout de vous familia-
riser avec la méthode automatisée de compila-
tion du code source Java et de l’assemblage du
runtime d’Eclipse. Le résultat de cette compila-
tion vous donnera un SDK Eclipse opérationnel
que vous pourrez utiliser immédiatement.
Nous effectuerons ces étapes sur un système
d’exploitation Windows XP. La procédure
concernant les systèmes Linux, MacOS, Unix, …
est sensiblement la même à quelques excep-
tions près qui sont notifiées dans les instruc-
tions de compilation fournies dans les sources
du SDK d’Eclipse.
Les prérequis à la compilation
Avant toute chose, vous devez préparer votre
environnement afin de rendre possible la
bonne construction de votre distribution.
Evidemment, vous devez disposer d’un JDK 1.4
au minimum. Pour la compilation d’une release
3.2, l’installation d’un JDK 5 sera requise.
Vous aurez ensuite besoin d’Apache Ant (ver-
sion 1.6.1 au minimum) pour exécuter les
scripts de compilation et d’assemblage. Une
fois que vous avez téléchargé Ant sur le site
d’Apache (http://ant.apache.org/) et décom-
pressé celui-ci, ajoutez la variable d’environne-
ment ANT_HOME contenant le chemin vers le
répertoire où vous avez installé l’outil, et enfin,
ajoutez à la variable d’environnement PATH le
chemin vers le répertoire bin. Après cette pro-
cédure, Ant devrait être correctement configuré,
vous pourrez d’ailleurs tester cela en entrant la
commande ‘ant’ dans une console et vous
assurer que celle-ci est reconnue.
Une fois l’outil Ant correctement installé et
configuré, un autre utilitaire est indispensable
à la compilation d’Eclipse : Info-ZIP. Celui-ci est
constitué d’exécutables permettant de com-
presser et décompresser les fichiers néces-
saires à l’assemblage final du runtime Eclipse.
Téléchargez les exécutables zip et unzip (atten-
tion unzip est compressé dans l’exécutable
proposé au téléchargement, il vous faudra donc
exécuter celui-ci pour décompresser le pro-
gramme unzip). N’oubliez pas d’ajouter le
répertoire contenant ces 2 exécutables dans la
variable d’environnement PATH de votre systè-
me, afin que le script de compilation soit
capable de trouver ces deux utilitaires lors de
l’assemblage. Si l’assemblage venait à échouer,
cela serait sûrement dû à une mauvaise confi-
guration du PATH de ces deux utilitaires.
Pour compiler Eclipse, vous aurez évidemment
besoin des sources de celui-ci. Elles sont
accessibles depuis la page de téléchargement
de la version 3.1.2 sous le libellé ‘Source Build
(Source in .zip)’ ayant le fichier associé ‘eclip-
se-sourceBuild-srcIncluded-3.1.2.zip’ d’une
taille d’environ 63Mo. L’archive contient les
sources Java et les ressources, comme les
images, ainsi que les scripts de compilation
pour les différentes plates-formes. (Fig 1)
La figure 2 représente une arborescence pos-
sédant Ant, Info-Zip et les sources du SDK
d’Eclipse à la racine du disque c:\ : (Fig 2)
Attention : n’utilisez pas de chemin possédant un
caractère espace dans le nom, sinon l’exécution
du script de compilation se soldera par un échec.
Modifier l’image de démarrage
L’un des intérêts de la compilation d’Eclipse
est de pouvoir modifier les ressources avant la
construction de l’archive zip du runtime. Ainsi,
tous les utilisateurs possèderont vos modifica-
tions sans jamais avoir à réaliser l’opération
de nouveau après la compilation. Dans notre
D
ossier
31
Programmez n°87 juin 2006
PRATIQUE
Compiler son propre
SDK Eclipse
(Fig 1)
28/41 18/05/06 19:34 Page 31
cas, nous allons simplement changer l’image
de la fenêtre de lancement d’Eclipse. L’image
que vous devez modifier se trouve dans le
répertoire plugins/org.eclipse. platform de la
racine du répertoire des sources du SDK
d’Eclipse, et se nomme splash.bmp. (Fig 3)
Lorsque votre image est modifiée et enregis-
trée comme à la figure 3, il ne vous reste plus
qu’à passer à la compilation.
La compilation, enfin !
Une fois votre environnement correctement
configuré, vos ressources modifiées ou ajou-
tées, il ne vous reste plus qu’à exécuter le
script de compilation nommé build.bat fourni à
la racine du fichier zip des sources d’Eclipse.
Ce script configurera l’environnement du
Classpath avant de lancer les scripts Ant
appropriés à la version d’Eclipse que vous
souhaitez construire.
Pour lancer ce script correctement, vous allez
devoir lui donner plusieurs informations qui
sont fonction du système d’exploitation, du
système de fenêtrage et du type de processeur
cible qui exécutera au final votre version
d’Eclipse. Dans notre cas, nous compilons
pour un Windows XP tournant sur un proces-
seur x86.
La commande à exécuter pour lancer la com-
pilation est par conséquent la suivante :
build.bat –os win32 –ws win32 –arch x86 (Fig 4)
L’argument os représente le type du système
d’exploitation, ws le système de fenêtrage et
arch le type de processeur cible. Pour plus
d’informations sur les options et les combinai-
sons possibles, vous pouvez vous reporter à la
documentation située dans l’archive des
sources du SDK d’Eclipse.
Si tout a été configuré correctement, et à
condition d’attendre quelques longues
minutes, voire quelques heures selon la puis-
sance de votre machine, votre attente devrait
aboutir sur un écran similaire à la figure 5 vous
indiquant que la compilation et l’assemblage
se sont déroulés avec succès. (Fig 5)
Ne vous souciez pas des warnings incessants
qui s’affichent dans la console de sortie lors de
la construction, ceux-ci n’influenceront pas le
résultat de votre compilation.
Le premier lancement
Le résultat de ce travail se trouve dans le
répertoire result à la racine du répertoire des
sources. Avec les arguments de la ligne de
commande que nous avons spécifiés, le fichier
s’appelle win32-win32-x86-sdk.zip.
Pour tester votre distribution fraîchement
créée, décompressez cette archive zip comme
pour n’importe quelle version d’Eclipse que
vous avez déjà pu installer, puis lancez l’exé-
cutable eclipse.exe. Vous devriez obtenir un
résultat identique à la figure 6.
Allez plus loin dans la personnalisa-
tion de votre distribution
Le processus de création d’une distribution
Eclipse personnalisée représente aujourd’hui
un réel besoin pour les entreprises qui sou-
haitent uniformiser leur pratique des règles et
méthodes communes de développement ; cela
dans le but de garder un processus de déve-
loppement fiable et maîtrisé en fournissant un
outil unique à ses développeurs. Dans cet
article, nous n’avons fait qu’effleurer le sujet
de la personnalisation du SDK d’Eclipse au tra-
vers de sa compilation. L’ajout de plug-ins sup-
plémentaires avant la compilation du SDK
n’est pas réellement complexe si vous maîtri-
sez un tant soit peu les scripts Ant. Pour ce
faire, quelques modifications au niveau du
fichier assemble.org.eclipse.sdk. <os>.<ws>.
<arch>.xml auront vite raison de vos désirs.
s Julien Chable - Développeur ProxiAD
Liens :
• http://www.eclipse.org/legal/cpl-v10.html
Eclipse Public Licence V1.0
• http://www.eclipse.org/legal la partie légale
du site Eclipse.org
• http://download.eclipse.org/eclipse/down-
loads/index.php page de téléchargement des
sources toutes versions confondues.
• http://ant.apache.org/ Apache Ant
• http://www.info-zip.org/ Site officiel d’Info Zip
• http://download.eclipse.org/eclipse/down-
loads/drops/R-3.1.2-200601181600/index.php
Page de téléchargement de Eclipse 3.1.2 et
de ses sources
• http://download.eclipse.org/eclipse/down-
loads/drops/R-3.1.2-200601181600/srcIn
cludedBuildInstructions.html Les instructions
de compilation d’Eclipse
• http://sourceforge.net/projects/ceb/ Site offi-
ciel de Custom Eclipse Builder
D
ossier
32
Programmez n°87 juin 2006
(Fig 3)
(Fig 5)
(Fig 6)
(Fig 4)
28/41 18/05/06 19:34 Page 32
Exemple d’une configuration Eclipse de production
Utiliser Eclipse pour le développement de ses applications J2EE est une solution adaptée
à condition de savoir quelle configuration adopter ! Voici un exemple concret d’une configu-
ration utilisée en production.
E
clipse excelle pour le développement
d’applications JSE, grâce au plu-gin JDT
directement disponible dans Eclipse. En
revanche, les choses ne sont pas aussi simples
pour les développements J2EE. Par consé-
quent, l’utilisation de plug-ins est indispen-
sable pour espérer créer, compiler et déployer
une application J2EE dans un serveur d’appli-
cation, sans pour autant perdre un temps pré-
cieux à chaque tentative de modification de
l’application.
Exemple de configuration
Dans les parties suivantes, nous allons voir un
exemple de configuration qui a déjà fait ses
preuves dans des projets réels. Attention, cette
configuration est étroitement liée aux outils
utilisés en amont, notamment pendant la
phase de conception, qui permettent par
exemple de générer les modèles complets de
classes.
Le serveur d’application
Prenons l’exemple où le serveur d’application
J2EE utilisé pour votre projet est la dernière
version de JBoss (www.jboss.org/). Il est très
important pour les développeurs de pouvoir
lancer, arrêter, déboguer et déployer leurs
applications depuis l’IDE. L’utilisation du plug-
in officiel associé à ce serveur, nommé JBoss
IDE (http://www.jboss.com/products/jbosside/
downloads) permet de répondre simplement et
efficacement à ce besoin.
Les frameworks
Les frameworks font partie intégrante des
développements Java, et Hibernate figure
parmi les plus en vogue. L’utilisation d’un
plug-in pour ce framework de persistance per-
met principalement d’assister le développeur
dans la mise au point de ses fichiers de map-
ping particulièrement complexes. Le plug-in
JBoss IDE intègre déjà le plug-in Hibernate, ce
qui ne nécessite pas d’installa-
tion supplémentaire si le premier
est déjà installé.
La construction de l’application
Gérer un serveur d’application ou
créer des fichiers de mapping est
une chose, mais construire l’en-
semble d’une application avec
les bonnes dépendances, exécu-
ter des outils de génération tel
que AndroMDA, compiler puis
empaqueter le tout, cela est une
autre histoire.
L’outil Maven (http://maven.apache.org/) est
devenu une ‘best practise’ pour ce genre
d’opération. Un plug-in officiel est disponible
sur le site officiel (http://maven.apache.org/
eclipse-plugin.html), celui-ci permet de lancer
des scripts Maven directement dans l’IDE.
La qualité
Assurer la qualité de son application en favo-
risant la maintenance du code et en évitant les
bugs est devenu indispensable. Les outils de
revue de code vont justement dans ce sens. Ils
permettent aux développeurs de pratiquer un
autocontrôle et une revue de code beaucoup
plus rapidement, voire même d’une façon
quasi automatique. Pour les chefs de projet, ce
genre d’outil est utilisé pour mesurer le degré
de qualité du code généré par les dévelop-
peurs. Il existe plusieurs plug-ins Eclipse
capables de réaliser cette tâche, la solution
que nous avons retenue pour nos développe-
ments est CheckStyle qui est disponible sur
sourceforge (http://eclipse-cs.sourceforge.net/).
Quelques conseils
L’utilisation d’Eclipse n’est pas sans poser
quelques petits tracas dans les projets d’en-
vergure. Lorsque vous avez établi une configu-
ration de référence pour un projet donné (ver-
sion d’Eclipse et versions des plug-ins), gardez
cette configuration tout au long de ce projet
sans jamais en changer. Il s’avère quelquefois
qu’une version d’Eclipse ne soit pas entière-
ment compatible avec la version de certains
plug-ins. Cela peut vous valoir de longues
heures de débogages inutiles.
Quelquefois, certains plug-ins nécessitent une
consommation de mémoire importante. Si
vous ne satisfaites pas leur besoin, leur exé-
cution se soldera par un échec de type
OutOfMemoryError.
Par exemple, c’est le cas de certains goals
Maven particulièrement imposants. La parade
pour exécuter ces goals directement dans
l’IDE, consiste simplement à augmenter la
taille du tas lors du lancement d’Eclipse avec
les arguments -vmargs –Xms256M –Xmx512M
(256 Mo de mémoire au minimum et 512Mo au
maximum).
Une configuration parmi tant d’autres
La configuration présentée dans cet article
reflète un processus de développement spéci-
fique avec Maven en tant que pilier central. La
souplesse d’Eclipse permet de l’adapter à de
nombreux processus de développement,
c’était l’une des solutions possibles.
Maintenant à votre tour de trouver la configu-
ration qui fera de vos projets des succès !
s Julien CHABLE
Développeur ProxiAD
D
ossier
33
Programmez n°87 juin 2006
28/41 18/05/06 19:34 Page 33
Plug-in open source ou commercial :
comment choisir ?
Les critères de choix d’un plug-in Eclipse sont nombreux et très proches des critères de sélection d’un
logiciel open Source ou commercial. La priorité doit être la pérennité du plug-in et son évolutivité.
L
es plug-ins Eclipse sont soit
issus d’une communauté Open
Source, soit d’une société. Les
plug-ins de sociétés peuvent être gra-
tuits ou payants. Le premier point à
vérifier est donc de savoir si le plug-
in est soutenu par une société ou si
celui-ci a été développé ou légué à la
communauté Open Source.
Le prix d’un plug-in peut être gage de
qualité, mais surtout peut assurer une
certaine pérennité ou évolutivité. Si ce
plug-in est source de revenus impor-
tants, l’éditeur se doit de le faire évo-
luer et de le maintenir à niveau.
Concernant la qualité d’un plug-in, les
utilisateurs seront souvent beaucoup
plus indulgents avec une communauté
Open Source qu’avec une société.
On peut parfois trouver des plug-ins existant
en version gratuite bridée et en version com-
plète payante, comme par exemple le
Workshop Studio de BEA Systems. Ce système
est un bon compromis pour le développeur
sans budget. Bien entendu, dans ce cas, celui-
ci doit s’intéresser tout particulièrement aux
fonctionnalités bridées du plug-in gratuit.
L’existence d’une version trial est aussi en
quelque sorte la démonstration de la confian-
ce de la société pour son plug-in.
L’autre critère de choix important est l’activité
du plug-in. Il faut s’intéresser au nombre de
release et au temps entre chaque release pour
vérifier que ce plug-in continue d’évoluer. Il est
souvent très instructif de vérifier le nombre de
bugs remontés et corrigés par release. On peut
aussi vérifier que le nombre de bugs remontés
est en constante diminution de release en
release. Qu’en est-il de la documentation du
plug-in. Celle-ci est-t-elle bien détaillée ? Y a-t-
il un Getting Started ? Des vidéos de démons-
tration ? Des captures d’écran ? Bref, tout ce
qui pourra assurer que ce plug-in répond cor-
rectement aux besoins, avec la bonne granula-
rité. Autre démonstration plus subtile de l’en-
gagement de l’éditeur ou de la communauté,
le mode d’installation du plug-in. Celui-ci se
présente-t-il sous la forme d’un zip ? Existe-t-il
un site d’update ? Est-il packagé dans un ins-
talleur ? On doit aussi s’assurer que l’on ne
restera pas bloqué en cas de soucis. Le sup-
port est-il présent ? Sous quelle forme ? Existe-
t-il une FAQ ? Une liste des questions fré-
quentes ? Il ne faut surtout pas négliger la
compatibilité du plug-in, tant sur la version
d’Eclipse supportée, que sur la Plate-forme.
Open Source Vs Commercial
La multitude de plug-ins open source ne facili-
te pas le choix. Même si, comme on l’a souli-
gné précédemment, en s’imposant des critères
de choix, il est probablement plus facile de
retenir le plug-in qui répondra à ses attentes.
Pourquoi encore acheter un plug-in commer-
cial ? Intéressons nous par exemple aux appli-
cations Web. Si l’on souhaite doter son Eclipse
des plug-ins indispensables, ce n’est pas loin
d’une dizaine de plug-ins open source qu’il
faudra trouver : éditeur de JSP, Struts ou JSF,
Hibernate ou JDO, Javascripts, debugger de JSP,
EJB, pour ne citer que les principaux. Trouver
et choisir ces plug-ins va prendre du temps.
Leur installation et leur maintenance
au fil du temps est également un élé-
ment à prendre en compte. Comment
va-t-on garantir que l’équipe de déve-
loppement utilisera les mêmes ver-
sions des plug-ins ? Où encore, a-t-on
le temps pour conduire toutes ces
évaluations et tests de compatibilité ?
Autant de questions qui trouveront
une réponse simplifiée avec un plug-
in commercial. Pour rester dans notre
hypothèse du développement Web,
un produit comme Workshop Studio
de BEA regroupe un ensemble de
fonctionnalités équivalent à plusieurs
plug-ins (éditeurs multiples pour JSP,
JSF, Struts,…), des debuggeurs.
L’ensemble dispose d’une ergonomie
cohérente et homogène. L’installeur fourni per-
met une installation harmonieuse dans Eclipse.
Le support d’un grand Editeur international
pérennise le choix et les évolutions. L’approche
" blended " visant à mélanger composants
open source et produits commerciaux cherche
à rapprocher le meilleur des deux mondes.
Enfin, la dimension économique est à prendre
en compte. Combien est-on prêt à payer pour
tous ces bénéfices, pour gagner du temps ? Un
produit comme Workshop Studio est commer-
cialisé entre 500 et 1000 euros par dévelop-
peur. Cette somme peut être comparée avec le
coût d’un développeur par jour, entre 400 et
700 euros par jour. En prenant une approche
"retour sur investissement", on pourra se
rendre compte que le plug-in commercial n’est
pas toujours, comme on l’imagine, la solution
la plus onéreuse !
En conclusion, on ne peut que se réjouir du
choix qui nous est offert aujourd’hui. L’open
source est une solution tout à fait opération-
nelle avec ses bénéfices et ses inconvénients.
Des contraintes temporelles ou budgétaires
guideront probablement votre choix.
s Sébastien Revel - Ideo Technologies
D
ossier
34
Programmez n°87 juin 2006
L’éditeur XML : Oxygen
28/41 18/05/06 19:34 Page 34
Catégorie : base de données (modélisation de schémas)
La spécificité d'Eclipse repose sur son architecture complètement basée
autour de plug-ins. Ce mécanisme d'extension a été rendu possible
grâce à son framework élaboré et son outil de développement de plug-
ins baptisé Plug-in Development Environment (PDE). Autrement dit, si
vous voulez ajouter une fonctionnalité à cette plate forme de dévelop-
pement hors du commun il suffit d'y ajouter un plug-in. Eclipse étant
très populaire la liste des plug-ins s'est très vite allongée, au point
qu'aujourd'hui on en répertorie plus de 1000 ! (et donc, les tableaux
présentés ci-dessous sont très loin d'être exhaustifs). Toutes ces exten-
sions ne sont pas libres, bon nombre sont commerciales ou à licence
mixte (d'ailleurs, rappelons au passage que Websphere Studio
Application Developer d'IBM repose sur Eclipse).
Une sélection de plug-ins Eclipse
Un numéro entier de Programmez ne suffirait pas s'il fallait vous décrire l'ensemble des plug-ins
d'Eclipse. Nous en avons sélectionné quelques-uns, pour l'essentiel, commerciaux, mais aussi libres.
Catégorie : IBM WebSphere Studio
WebSphere est une "plate-forme applicative générique" (comprenant serveurs et outils) sur laquelle reposent des logiciels d'entreprises (conçu par
IBM) comme Tivoli.
D
ossier
35
Programmez n°87 juin 2006
Nom du plug-in Description Licence
IBM Tivoli Monitoring Tivoli est un logiciel d'administration distribué qui se base sur des agents (clients) pilotés par Commerciale
http://www.tivoli.com/products/index/monitor/ un serveur. Le domaine d'administration concerné touche la supervision, la gestion des comptes,
la diffusion de logiciels, l'administration de serveurs applicatifs.TBM Tivoli Monitoring permet
d'auditer les performances dans ces domaines en vue de repérer les goulets d'étranglements.
IBM WebSphere Voice Toolkit Il s'agit en fait d'une trousse à outils VoiceXML comprenant des assistants de génération d'applications, Commerciale
http://www-306.ibm.com/software/ un éditeur VoiceXML, des outils de développement et d'essais de grammaire, des outils de débogage,
pervasive/voice_toolkit/ des outils de développement de contenu statique VoiceXML et d'applications dynamiques J2EE
(Java) ainsi qu'un large éventail de composants de dialogue réutilisables.
Lotus Domino pour WebSphere Studio Ce plug-in fournit des outils pour créer plus simplement des applications Java appelant Commerciale
http://www-128.ibm.com/developerworks/ l'existant Domino (c'est à dire formulaires, vues et agents).
websphere/library/techarticles/0304_schumacher/
schumacher.html
Catégorie : base de données (persistance)
Nom du plug-in Description Licence
Cocobase Il s'agit d'une solution de mapping et de persistance des données (Container Managed Persistence Commerciale
http://www.cocobase.com/ (CMP) & Bean Managed, Persistence (BMP) Entity Beans, Session Beans, JSPs, Servlets, Dynamic
Transparent Persistence et stand-alone Java persistence).
Cocobase se fonde sur EJB 2.0, JDBC 2.0, JMS 1.0, UML XMI, J2EE, J2SE et le JDK 1.4.
Hiberclipse Il s'agit d'un plug-in pour Hibernate, un framework open source gérant la persistance des objets CPL 1.0
http://hiberclipse.sourceforge.net/ en base de données relationnelle. Hibernate ne respecte pas le standard JDO (Java Data Object)
mais est quand même très populaire auprès des développeurs.
EclipseJDO Ce plug-in permet d'utiliser la norme Java Data Objet (JDO). Il est fourni avec des assistants Open Source mais support
http://www.versant.com/ permettant de faciliter la gestion de la persistance objet. commercial possible
http://sourceforge.net/projects/eclipsejdo/
Nom du plug-in Description Licence
Avaki Studio Sybase a racheté Avaki, spécialiste du "Data Grid" Commerciale
http://www.avaki.com/products/studio.html ("Grille de données" en Java). Le plug-in est ici un
modeleur de niveau professionnel.
Clay Database Modeling Clay est le nom d’un plug-in de modélisation de Mixte (libre et
http://www.azzurri.jp/en/software/clay/index.jsp schéma de base de données. commerciales)
Celui-ci vous permettra de réaliser à la fois de
la modélisation mais aussi du reverse engineering.
28/41 18/05/06 19:34 Page 35
D
ossier
36
Programmez n°87 juin 2006
Catégorie : C#
Nom du plug-in Description Licence
BlackSun Permet l'édition du code source avec coloration syntaxique. Compatible C# 2.0 Eclipse Public License - v 1.0
http://black-sun.sourceforge.net/license.html
Emonic Emonic signifie "Eclipse-Mono-Integration". Il s'agit donc d'un plug-in Eclipse destiné aux Common Public
http://sourceforge.net/project/showfiles. programmeurs C# utilisant Mono (mais vous pouvez également utiliser le framework .net de License (CPL)
php?group_id=158390 Microsoft) ! Il vous permettra de réaliser de la complétion de code, mettre en évidence les mots
clés par coloration syntaxique. En outre, Emonic s'intégrera parfaitement avec Ant ou Nant.
Enfin il a été testé sous Linux et Windows.
Improve C# Les erreurs de compilation sont affichées dans la liste des tâches. Un des premiers plug-in C# open-source (CPL)
http://www.improve-technologies.com/alpha/esharp/ du genre. Propose la coloration syntaxique, l'auto-complétion du code, et la compilation.
Catégorie : Flash
Nom du plug-in Description Licence
FDT FDT signifie Flash Development Tools. Il s'agit d'un plug-in pour Eclipse, qui fournit tout un Commerciale
http://www.powerflasher.com/fdt/flashsite/flash.htm environnement de travail dédié à Flash.Vous pourrez ainsi jouer avec de nombreux raccourcis clavier,
des templates, avec une gestion des classes poussée, l'autocomplétion, une gestion semi-automatique
des imports, un test en temps réel de la validité du code, la proposition de correction du code,
une vision rapide de l'arborescence d'une classe (outline).
ASDT
http://sourceforge.net/projects/aseclipseplugin/ ASDT - ActionScript Development Tool. Equivalence de FDT en open-source. Open Source
Catégorie : Autres langages
Rappelons qu'Eclipse permet de créer des environnements de travail spécifiques à un langage. Autrement dit, vous n'obtiendrez pas (si vous le
voulez) les même options et menus en travaillant par exemple en COBOL ou en EPIC. En outre, l'emploi d'Eclipse implique l'utilisation du debug-
ger, le refactoring, les tasks, le CVS intégré, etc.
Nom du plug-in Description Licence
Cobol Fonctionne sous Linux, Solaris ou Windows.Version 3, semble peu active depuis 1 an. Cobol est LGPL
http://www.eclipse.org/cobol/ toujours très actif dans les institutions financières (en 2005, 75% des données du monde des affaires
ont été traitées par des programmes en COBOL).
EPIC EPIC signifie "Eclipse Perl Integration". Contient un éditeur de code source, un débogueur ainsi open-source (CPL)
http://e-p-i-c.sourceforge.net/ qu'un éditeur d'expressions régulières.
Erlide Destiné au langage Erlang : le langage objet développé par Ericsson (www.erlang.org). Il tient son nom Eclipse Public License
http://sourceforge.net/projects/erlide/ d'un mathématicien Danois. Il s'agit d'un langage fonctionnel "concurrent temps réel et distribué".
Haskell development support Destiné au langage haskell (http://haskell.org). Haskell est un langage de programmation fonctionnel. Eclipse Public License
http://eclipsefp.sourceforge.net/haskell/index.html Encore en développement (la version actuelle (0.91) n'est pas considérée comme stable).
Photran Plug-in pour le langage Fortran. Supporte CVS et le débogueur GNU. Fortran est un langage de
http://www.eclipse.org/photran/ programmation utilisé principalement en mathématiques et dans les applications scientifiques. Eclipse Public License
PHPeclipse Nous en sommes à la version 1.1.8. phpEclipse permet l'intégration d'un navigateur pour tester libre
http://www.phpeclipse.de/tiki-view_articles.php le résultat dans la même fenêtre. D'un seul clic vous obtiendrez la documentation de la fonction.
Pydev Pydev signifie "Python Development Toolkit". Il affiche les erreurs de syntaxe, fait le "code completion", open-source (CPL)
http://sourceforge.net/projects/pydev/ PyLint est intégré.
Et bien sûr, énorme avantage: on profite d'Eclipse lui-même: debugger, refactoring, tasks, CVS intégré etc...
Le plug-in Emonic
28/41 18/05/06 19:34 Page 36
D
ossier
37
Programmez n°87 juin 2006
Catégorie : UML
Nom du plug-in Description Licence
Together Community Edition Gestion de cycle de vie de Borland. Gratuit si usage non
http://www.borland.com/us/products/ commercial, sinon licence
together/index.html commerciale
Omondo La version commerciale permet d'importer/exporter la Version gratuite
http://www.omondo.com/ modélisation, supporte des profils, s'interface avec une base et commerciale
de données, est compatible J2EE, peut s'intégrer avec CVS et enfin,
est ouvert à la programmation externe via une jeu d'API.
SDE SDE signifie Smart Development Environment. Ce plug-in Commerciale
http://www.visual-paradigm.com/ est à utiliser en combinaison avec WebSphere. Il existe
product/sde/ec/index.jsp de nombreuses éditions, une d'Enterprise, une Professional,
une Standard, une personnelle et enfin une Community
Edition qui s'avère gratuite pour un usage non commercial
Catégorie : tests et non-régression
Les tests serviront notamment à déterminer si le logiciel répond aux spécifications fonctionnelles.
Nom du plug-in Description Licence
Hpjmeter Hpjmeter est un outil de visualisation des profils produits par Java (ce n'est pas un plug-in à proprement parler). Usage gratuit,
http://www.hp.com/products1/unix/java/ Pour y parvenir, vous devrez compiler un programme Java sous Eclipse avec les infos de debugging, puis en second lieu, licence HP
hpjmeter/index.html exécuter le programme avec une option de profilage. Enfin, vous pourrez lancer HPJmeter.jar pour ouvrir le fichier de
profil qui a été généré. De cette manière vous pourrez extraire quelques "métriques" intéressantes.
JUnitRunner JUnit est un environnement de test pour Java. La classe de tests doit être une sous-classe de junit. framework. Open Source
http://sourceforge.net/projects/junitrunner/ TestCase et les attributs définissent les attributs sur lesquels porteront les tests. Un scénario de tests fait des appels
aux objets testés, et vérifie des propriétés avec junit.framework.TestCase.assertTrue(...)
Coverlipse Coverlipse est une extension de JUnit qui offre un support de couverture de code. Common
http://coverlipse.sourceforge.net/index.php Public License
findbugs, jlint_plugin, eclipsemetrics Plug-ins d'analyse statique des bogues (analyse de codes sources). Open Source
http://findbugs.sourceforge.net/
http://www.willowriver.net/products/jlint.php
http://eclipse-metrics.sourceforge.net
Catégorie : développement d'interfaces graphiques
Nom du plug-in Description Licence
SWT Vector Library Graphics SVL signifie "Simple Vector Library". Il s'agit d'une bibliothèque d'objets servant à manipuler GPL
http://sourceforge.net/projects/svl/ des graphiques en vectoriel.
Gface Boîte à outils de widgets pour SWT (Standard Widget Toolkit, une bibliothèque graphique libre pour Java) Eclipse
http://sourceforge.net/projects/gface/ Public License
SWTPlus http://www.swtplus.com Une autre boîte à outils de widgets pour SWT Open Source
Catégorie : développement XML
Nom du plug-in Description Licence
Vex http://vex.sourceforge.net/ éditeur XML Open Source. Largement extensible, avec support WebDAV et FTP . ainsi que les DTD et CSS LGPL
oxygenxml éditeur de source, débogueur XSLT, visualisation/édition d'arbre, édition et validation DTD, XML Version d'essai
http://www.oxygenxml.com/ Schema, différence/fusion XML, support XQuery, XSLT, Xpath, Xalan, Saxon, MSXML et XSLTProc ! téléchargeable
XMLBeans Ce plug-in permet aux développeurs Java d'utiliser des données et documents XML dans un environnement orienté objet. Apache License V2.0
http://sourceforge.net/projects/xmlbeansplug/ L'accès aux données s'effectue par un jeu d'interface de type XQuery. Le compilateur XMLBeans convertira un Schema pour créer un fichier JAR
Catégorie : travail d'équipe
Nom du plug-in Description Licence
ganttproject Gestionnaire de projets compatible Microsoft Project. Il utilise la méthode du diagramme de Gantt, ce qui
http://sourceforge.net/projects/ganttproject lui permet de découper un projet en tâches, puis de visualiser les dépendances dans le but d'en gérer les ressources. Open Source
AT-project Sera utilisé dans le cadre d'un travail en équipe car il permet de tracer les projets
http://www.atreides-technologies.com/ (partage d'informations, planification, suivi des erreurs...) gratuit
Catégorie : serveurs d'applications
Nom du plug-in Description Licence
Tomcat For Eclipse Intègre Tomcat (conteneur de servlet J2EE) à Eclipse (Tomcat est un serveur web qui supporte servlet et JSP). Open Source
http://openknows.free.fr/
Lomboz Lomboz est un plug-in J2EE pour Eclipse qui a été repris par le consortium ObjectWeb, et qui est devenu Open Source. LGPL
http://lomboz.objectweb.org/overview.html Ce plug-in utilise plusieurs outils open source pour mener à bien son travail tels qu'Ant, Xdoclet et Axis. Il couvre ainsi
le cyle de développement des applications J2EE de la rédaction à la génération du code, en passant par le déploiement et le débogage.
JOnAS Eclipse PlugIn JonAS est un serveur d’application Open Source respectant la norme J2EE (Java 2 Platform Enterprise Edition). Common Public
http://sourceforge.net/projects/jonaseclipse/ Il vous permettra d'utiliser des EJB, des Web Services, des transactions distribuées, etc. License
s Xavier Leclerq - Xavier.Leclercq@programmez.com
28/41 18/05/06 19:34 Page 37
Développer une application
web avec MyEclipse
MyEclipse (http://www.myeclipseide.com) est un ensemble de plug-ins qui étend les fonctionnalités d’Eclipse
simplifiant le développement. Parmi les fonctionnalités, on peut citer le support d’UML, d’Hibernate
(http://www.hibernate.org), de Spring (http://www.springframework.org), Tapestry (http://jakarta.apache
.org/tapestry), Struts (http://struts.apache.org/),JSF (http://java.sun.com/javaee/javaserverfaces/) et l’inté-
gration de n’importe quelle base de données JDBC.
Nous nous focaliserons sur les outils princi-
paux (base de données, UML), l’intégration
des serveurs d’application et d’Hibernate.
Support UML
Les principaux diagrammes sont supportés :
use case, classes, séquence, état, activité,
déploiement et collaboration. (Figure 1)
Le support UML est intéressant par son inté-
gration à la plate-forme Eclipse ainsi que ses
capacités de round-trip engineering. Le round-
trip permet de générer le code Java à partir des
classes modélisées ainsi que de générer le dia-
gramme de classes depuis le code existant.
Support Base de Données
MyEclipse s’intègre à n’importe quelle base de
données disposant d’un driver JDBC.
Connector/J étant le driver JDBC du MySQL,
nous utilisons celui-ci pour accéder à une peti-
te base gérant des fichiers musicaux. (Figure 2)
Une fois connectés à la base, nous pouvons en
voir la structure (liste des tables, colonnes
dans chaque table etc.…) ainsi que l’interroger
ou la modifier.
Le diagramme entité relations nous permet de
visualiser le schéma de la base dans l’environ-
nement de développement : (Figure 3)
Nous bénéficions alors de la vue ER Diagram
(Figure 4)
Notez comment les relations entre classes (ici
une relation un a plusieurs) sont représentées.
Support applicatif web
MyEclipse facilite le développement et le
déploiement d’applications web sur les princi-
paux serveurs d’application. Prenons Tomcat
en exemple.
Une fois configuré, lancer le serveur d’applica-
tion est un jeu d’enfant : (Figure 5)
D
ossier
38
Programmez n°87 juin 2006
La console d’Eclipse montre alors le statut du
serveur d’application :
...
INFO: Initialization processed in 2143 ms
INFO: Starting service Catalina
INFO: Starting Servlet Engine: Apache
Tomcat/ 5.5.17
INFO: XML validation disabled
INFO: Starting Coyote HTTP/1.1 on http-8080
...
INFO: Server startup in 6630 ms
Création et débogage d’une page JSP:
MyEclipse simplifie le développement de
pages JSP, HTML, JSF et autres. Montrons com-
ment développer une nouvelle page JSP:
(Figure 6)
Notez la structure de la page présentée dans
la vue outline ainsi que les capacités de com-
plétion. Une fonctionnalité impressionnante
est le débuggeur (Figure 7).
Voyez comment le point d’arrêt a stoppé la
page et que les variables ainsi que leurs
valeurs sont présentées dans la vue Variables.
Nous avons une intégration et consistance
entre le développement d’application Java et le
développement d’application J2EE.
Design HTML
Le plug-in HTML MyEclipse associe en perma-
nence le code HTML avec son rendu a l’écran.
(Figure 8)
On peut soit modifier la vue Design, soit modi-
(Figure 4)
28/41 18/05/06 19:34 Page 38
D
ossier
39
Programmez n°87 juin 2006
fier le code directement, les deux étant syn-
chronisés automatiquement par le plug-in.
Support XML
La création de document XML est simplifiée à
partir d’un DTD (qui permet une validation de
la structure du document) ou d’un schéma
(permettant une validation de structure et
de contenu). Les deux modes de validation
permettent à Eclipse des facilités de complé-
tion du document XML lors de sa rédaction
(Figure 9).
(Figure 6)
(Figure 7)
(Figure 8)
Support Hibernate
Eclipse permet de générer à la fois le fichier de
configuration d’Hibernate ainsi que les fichiers
de mapping entre tables physiques et model
objet de l’application en développement.
(Figure 10)
Pour générer les fichiers de mapping, il suffit
de cliquer droit sur une table - Notez le menu
contextuel figure 2 – pour générer le fichier
correspondant à la table.
Conclusion
MyEclipse s’intègre à la plate-forme standard
Eclipse pour y offrir des gains de productivité non
négligeables. Son prix modique n’est pas un frein
à son adoption croissante et les gains de temps
qu’il permet d’économiser en font un ensemble
de plug-ins aujourd’hui incontournables.
s Sébastien Marc
(Figure 9)
(Figure 10)
Economisez 30%
Abonnez-vous !
www.programmez.com
28/41 18/05/06 19:34 Page 39
Twinsoft
apprécie
SWT
" Eclipse bénéficie
d’une communauté
très active. Cela pro-
fite à nos outils. Il
existe aujourd’hui deux grands marchés : .Net
et Java. Eclipse ne fait pas que du Java " confie
Olivier Picciotto. L’un des avantages mis en
avant par l’éditeur est SWT, une interface rela-
tivement simple à développer avec un meilleur
rendu, précise-t-il. " Il n’y a pas d’éditeur gra-
phique mais tout dépend de ce que l’on fait.
Le plug-in VE n’est pas au niveau d’un Visual
Studio. Mais il s’agit d’une plate-forme évolu-
tive et de nombreux outils s’appuient dessus,
même s’il manque de bons éditeurs HTML
pour éditer des sites Web. Sur la qualité des
plug-ins, il n’y a pas d’homogénéité. Ce qui
fait la différence entre les composants est le
niveau business, la plus-value, qu’ils génèrent.
Compuware
mise aussi sur
Eclipse
" De facto, Eclipse est devenu un standard. On
constate une demande du modèle MDA sur
Eclipse. Mais NetBeans n’est pas pour autant
oublié, avec une audience moindre cependant.
Sur Eclipse, on bénéficie d’une communauté
active et de nombreux plug-ins " commente
Guy Cartigny (responsable technique). Pour le
moment, l’éditeur confirme son soutien à
Eclipse et NetBeans. " Il existe des fonctions
dans Eclipse que l’on ne trouve pas dans
NetBeans et vice versa. Selon mon expérience,
il est parfois difficile pour un développeur de
passer à Eclipse, car l’environnement est un
peu brouillon, pas toujours intuitif, surtout
quand on a connu autre chose ". Compuware
travaille sur un double développement autour
d’Eclipse. Le premier est de rendre disponible
toute l’approche MDA et le second concerne le
projet Corona. Ce projet est très important car
il doit apporter à la plate-forme de véritables
fonctions collaboratives, de gestion de tâches
projet, des repository partagés et une interface
web service pour faciliter le fonctionnement, "
un peu comme
Visual Studio Team
System " avoue Guy
Cartigny. La diversi-
té des plug-ins
pose-t-elle problè-
me ? " C’est un
point faible, mais
cela en fait aussi sa
richesse. Cela exige
une certaine qualité.
Il faut faire atten-
tion à la compatibilité entre les plug-ins, même
si honnêtement j’ai rencontré ce genre de pro-
blème, une seule fois " conclut Guy Cartigny.
D
ossier
40
Programmez n°87 juin 2006
Guy Cartigny
TEMOIGNAGES
Comment définir
Eclipse ? Beaucoup
diront que c’est un
IDE pour dévelop-
peurs Java.
Certes, la princi-
pale vocation
d’Eclipse est
effectivement le développement Java. Mais
Eclipse est aussi une réelle plate-forme qui
peut être utilisée pour développer dans
d’autres langages, faire de la modélisation
mais également comme support pour
d’autres logiciels. D’autres IDE paraissent
plus complets qu’Eclipse (WebSphere
Application Developper, JBuilder, NetBeans,
…) parce qu’ils intègrent en natif beaucoup
plus de fonctionnalités. Eclipse est cepen-
dant de plus en plus apprécié, grâce à la
possibilité de développer ses propres plug-
ins, ou bien de participer aux tests et aux
développements de plug-ins de plus grande
envergure. En somme, Eclipse est beaucoup
plus qu’un simple IDE Java c’est toute une
plate-forme et une communauté de dévelop-
peurs qui participe à son évolution.
Parmi les nombreux projets qui peuvent être
intégrés à Eclipse, nous retrouvons : WTP
(Web Tools Platform) : outils de développe-
ment Web et J2EE, BIRT (Business
Intelligence and Reporting Tools) : outils de
génération de rapports, Subclipse : outil de
synchronisation de votre code source à un
serveur subversion (contrôle de sources),
Visual Editor : outil de conception d’interfa-
ce graphique (AWT, Swing, SWT, RCP, …) par
l’intermédiaire d’un designer WYSIWYG,
EclipseUML : outil de modélisation UML avec
des fonctions de génération des classes
associées, de rétro-conception… , Azzurri :
outil de modélisation de diagrammes de
bases de données avec des fonctions de
génération de script SQL permettant la créa-
tion de la base de données selon le SGBD et
rétro-conception, et bien d’autres…
Aujourd’hui, nous utilisons Eclipse comme
plate-forme de développement à SUPINFO
quotidiennement lors des cours Java. C’est
une plate-forme stable, multi-plate-forme
que les étudiants peuvent, s’ils le souhai-
tent, paramétrer et personnaliser comme ils
le souhaitent. Nous leurs fournissons cepen-
dant une version pré-configurée avec les
plug-ins suivants : WTP, Visual Editor,
Subclipse, EclipseUML, Azzurri. Plus les déve-
loppeurs utilisent Eclipse et plus ils se fami-
liarisent avec les nombreux raccourcis et les
fonctionnalités de l’IDE, ce qui augmente
leur productivité.
Eclipse a pris une telle ampleur et un tel suc-
cès auprès de la communauté des dévelop-
peurs que certaines entreprises se sont spé-
cialisées dans le développement de plug-ins
payant pour Eclipse. Il existe même des dis-
tributions payantes d’Eclipse, comme
MyEclipse, avec un ensemble de plug-ins
gratuits et payants.
s Maxime Vialette - Supinfo
Eclipse : l’environnement personnalisable
Il faut aussi avouer que le développement de
plug-ins demeure compliqué et que tout n’est
pas entièrement documenté " commente
Olivier Picciotto. Aujourd’hui, chez Twinsoft, 4
développeurs utilisent à plein temps Eclipse…
28/41 18/05/06 19:34 Page 40
28/41 18/05/06 19:35 Page 41
42
Programmez n°87 juin 2006
cas. Et chaque éditeur apportera sa réponse, sa vision, sa
conception du SOA. D’autre part, le risque, bien réel, à choi-
sir telle ou telle solution, est de " s’enfermer " dans un choix
technique. Car si le standard demeure le maître mot, l’inter-
opérabilité n’est pas totale.
Dans ce dossier, nous verrons comment définir SOA, com-
ment implémenter une telle architecture ainsi qu’un pano-
rama des solutions du marché.
s François Tonic
Depuis environ 2-3 ans, le terme SOA s’est imposé. Bien
souvent, les éditeurs présentent SOA comme une nouveau-
té, une révolution, une rupture avec le passé. Cependant, à
y regarder de plus près, SOA est une évolution des concepts
architecturaux.
SOA signifie architecture
orientée services, basée sur
des services et non plus des
applications. Et on retrouve
ainsi les notions actuelles :
flexibilité, couple lâche, pro-
cessus métiers... SOA doit
pouvoir s’accommoder d’un
environnement aussi bien
homogène qu’hétérogène.
SOA est un concept architectural et non une solution, un
progiciel, un outil. Bref, dire que l’on vend des outils SOA
relève plus du marketing que de la réalité. Pour être exact,
il faudrait dire : environnement orienté SOA. Car, comment
définir SOA ? Existe-t-il une approche unique ? S’oppose-t-
elle aux outils d’intégration ou vient-elle en complément ?
La définition est un premier problème que nous devons
résoudre avant d’aborder les outils orientés SOA. Car,
comme vous le verrez dans les pages suivantes, il existe
autant de concepts architecturaux SOA qu’il y a de sys-
tèmes d’information. Il existe, heureusement, des bases
communes, mais pour le reste, c’est quasiment du cas par
SOA : votre nouvel architecte
F
ocus SOA
p42-54 focus soa 18/05/06 18:27 Page 42
F
ocus SOA
43
Programmez n°87 juin 2006
L
'architecture orientée service, ou SOA,
n'est pas un outil, une solution, mais un
concept, une architecture. On utilise
donc des bonnes pratiques, des technologies,
des concepts architecturaux liés à SOA pour sa
mise en oeuvre, son utilisation. Les outils ser-
vent à créer une architecture SOA et à mettre
en œuvre ses différents aspects.
Un problème sur le système
d'information ?
Pour saisir l'un des intérêts de SOA, il faut
remonter dans le temps et comprendre le
poids de ce que l'on appelle legacy. Le legacy
regroupe les applications, les données, le code
source, voire les outils, existants. Bref, tout
l'héritage plus ou moins ancien fonctionnant
dans un système d'information. Le mainframe,
des applications VB6 ou Java 1.4 sont du legacy.
Bref, le legacy est hétérogène ou homogène. Si
au départ, on disposait d'un environnement
plutôt homogène, l'apparition des nouvelles
technologies, les rachats – fusions, etc. ont
contribué à complexifier et à rendre hétérogè-
ne le système d'information. Première difficul-
té. On se demandera parfois : pourquoi ne pas
tout refaire ? En informatique, et notamment
pour des données et applications critiques ou
" historiques ", tant que ça marche, pourquoi
changer ? Cet adage bien connu demeure vrai.
Si une application, un batch vieux de 10 ou 15
ans fonctionne, inutile de le casser pour le
remplacer. On risque d'introduire des erreurs,
une instabilité.
Aujourd'hui, il n'est pas rare qu'un système
d'information possède du legacy hétérogène,
des applications web (site, intranet, extranet),
des SGBD, différents progiciels, des processus
" métiers " spécifiques à chaque département,
etc. Bien souvent, chaque dépar-
tement, chaque filiale, possède
sa propre architecture, ses
propres données et applications.
On parle alors de cloisonnement ou encore de
silot. Ce sont dans la plupart des cas des silots
verticaux, liés à un métier, à un département.
Ce cloisonnement pose un réel souci de com-
munication transversale.
Car, comment avoir une vision globale de son
système d'information ? Il est quasi impossible
de posséder une granularité de son environ-
nement d'information, car le silot empêche
une telle vision globale. L'urbanisation de son
système d'information doit fournir une telle
vision avec une granularité poussée.
Le silot empêche aussi de pouvoir communi-
quer facilement entre différents services, diffi-
cile d'échanger des données, car le risque est
d'avoir un format différent et surtout des struc-
tures et une finalité différente. Le cloisonne-
ment oblige le développement de surcouches
spécifiques pour pouvoir communiquer, échan-
ger. Et surtout, plus il y a d'applications et de
silots, plus le coût d'évolution, de maintenan-
ce devient élevé avec une baisse du retour sur
investissement. L'urbanisation doit permettre
d'éviter une telle situation, à condition d'ap-
pliquer une architecture souple et flexible et
que tous les acteurs de l'entreprise aient
conscience de la situation et de la nécessité de
changer. Pour pouvoir briser cette situation, il
faut donc mettre en place une couche de com-
munication indépendante des silots, applica-
tions, technologies.
Une architecture de services
La notion d'architecture de services n'est pas
nouvelle. Le web to host ouvrait un legacy sur
le monde du web ou encore CORBA, pour per-
mettre de faire communiquer des silots et d'of-
frir des services. Mais ces solutions étaient
peu maniables et souvent lourdes. Ensuite, on
a parlé d'outils d'intégration et notamment les
solutions d'EAI. Cette couche applicative
devait faire communiquer les applications et
les données avec de nouvelles applications.
Sans apporter une réelle flexibilité, l'EAI pêche
par sa lourdeur : utilisation de connecteurs,
absence de spécifications communes, coût,
absence de processus métiers globaux. L'EAI a
aussi le défaut d'avoir un couplage fort, limi-
tant ainsi sa flexibilité. Chaque modification,
ajout, nécessite un nouveau cycle de dévelop-
pement, de qualification.
Aujourd'hui, un système d'information doit
pouvoir s'adapter aux contraintes nouvelles
(demande utilisateur, multilingue, diversité des
terminaux et des clients), montée en charge,
flexibilité pour adapter rapidement son systè-
me, en ajoutant, modifiant, supprimant des
applications, données, services. Le tout en
proposant une unification des données, du
patrimoine.
Vers le SOA
Il est difficile de donner une définition du SOA,
car, sa nature est vaste et variée selon les
contextes. Basiquement, SOA favorise la mise
en place de vrais processus métiers permet-
tant l'adaptabilité rapide aux demandes busi-
ness internes ou externes, favorisant la réutili-
sation, offrant un découplage entre les nou-
velles applications et le patrimoine et permet-
Architecture et organisation
Le système d'information d'une entreprise repose sur
une ou plusieurs architectures et il est toujours utile
de spécifier une architecture par type d'applicatif et
pour le matériel. Avec la multiplication
des applications, des données, il devient difficile de
manipuler et de fluidifier l'ensemble.
L'architecture SOA est-elle une réponse adaptée ?
p42-54 focus soa 18/05/06 18:27 Page 43
F
ocus SOA
44
Programmez n°87 juin 2006
tant, une intégration du legacy. Au risque de
simplifier le concept, il y a trois couches. La
plus basse comprend les applications, les don-
nées, le legacy, etc. La couche du milieu est
l'architecture SOA proprement dite avec les
services, les processus métiers, éventuelle-
ment un ESB et enfin, la couche de présenta-
tion qui expose les services via une interface
utilisateur. Chaque couche se veut indépen-
dante. Ainsi, pour exposer un service, on peut
utiliser un client lourd, riche ou léger sur du
desktop, un PDA, Internet, un mobile, etc.
On peut aussi avoir du SOA, soit avec comme
finalité des services que l'on expose, soit des
applications composites. Là, il faut choisir ce
que l'on veut. De plus, un service doit possé-
der un contrat de services décrivant son conte-
nu, son rôle, son fonctionnement. Et n'ou-
blions pas que SOA ne signifie pas obligatoi-
rement services web. Le service web est une
des manières de faire du SOA.
SOA et le contexte métier
SOA aura dans la majorité des cas, une
approche métier. Il faudra donc que les ser-
vices soient orientés métier. De plus, ce n'est
pas parce que l'on a une architecture SOA que
les services communiquent, travaillent
ensemble. Il faut introduire des processus. Les
processus métiers permettent de donner un
workflow de fonctionnement entre plusieurs
services. Le processus métier est donc en
quelque sorte une définition du comportement
en entrée, en traitement, en sortie. Ainsi dans
une fonction de réservation d'une voiture, il
faudra définir le diagramme de cheminement :
le départ, l'arrivée, les différentes étapes, pré-
voir les contrôles et la gestion des erreurs, etc.
Pour ce faire, on utilisera des processus BPM
(Business Process Manager).
De plus, s'il est facile de travailler avec
quelques services, il devient vite difficile de
manipuler des dizaines de services, internes
ou externes. C'est là que l'on aura besoin de
l'orchestration, d'un annuaire de services. Le
processus métier (et l'orchestration) est la
valeur ajoutée, la justification d'une architec-
ture SOA.
Cela permet d'utiliser plusieurs services selon
un contexte définition adaptable rapidement
en fonction des demandes. Car, cela ne sert à
rien de mettre en place une architecture de
services, s'il n'y a pas une finalité réelle. De
plus, un service peut être utilisé par plusieurs
processus. La notion de réutilisation est très
importante en SOA. Comme nous le verrons
plus loin, l'interopérabilité ne doit pas être
oubliée. Si SOA permet dans un processus
métier d'utiliser des services externes ou d'ex-
poser ses propres services à des clients et
fournisseurs, il faut s'assurer de la bonne inté-
ropérabilité des services. Si dans le cadre
XML, web services, il existe des spécifications,
tout n'est pas rose. La phase de tests sera
vitale. Il faut donc définir une charte de
conception et de fonctionnement que chaque
entité devra respecter, surtout si les environ-
nements SOA diffèrent.
De plus, on ne met pas tout et n’importe quoi
en service. Il faut déterminer ce que l’on sou-
haite exposer, consommer. Ainsi, dans un pro-
cessus de réservation d’une voiture, inutile de
prévoir un service de commande de fournitures
de bureau. Les gens du métier, du business
doivent dire ce qu’ils attendent. Le technique
(les développeurs) ne développe pas en
aveugle. Il faut comprendre que SOA n’est
viable que s’il y a un objectif métier / business.
SOA fragilise-t-il son système d'information ? Il
existe aujourd'hui de réelles interrogations sur
les capacités de montée en charge, de reprises
de charge des services, des processus. Des
questions peuvent aussi se poser sur le load
balancing ou encore la réplication.
Enfin, n’envisagez pas d’implémenter SOA
immédiatement sur l’ensemble de votre entre-
prise. Cela n’a guère de sens. Faites tout
d’abord un projet type, puis étendez au fur et
à mesure des besoins et demandes.
s François Tonic
Le contraste entre avant et après SOA (Sun)
Architecture de type ESB (BEA)
p42-54 focus soa 18/05/06 18:27 Page 44
p42-54 focus soa 18/05/06 18:28 Page 45
F
ocus SOA
46
Programmez n°87 juin 2006
Lorsque les architectes logiciels et les développeurs se penchent sur les concepts associés aux
architectures SOA, ces derniers leur semblent souvent familiers car ils font, dans une certai-
ne mesure, écho aux démarches objets ou aux approches Corba.
Mettre en place une architecture SOA
D
e plus, beaucoup de choses écrites sur
les démarches SOA expliquent l’impor-
tance d’une démarche " Top Down ",
mais ciblent très souvent le " top " et peu le
" down ". Pourtant, le risque est justement
pour les architectes comme pour les dévelop-
peurs de considérer cette proximité comme
étant un facteur justifiant de " continuer
comme avant ". Certains des réflexes passés
doivent être combattus, sous peine de repro-
duire les erreurs commises sur l’approche com-
posant dans les années 90.
Contrairement à l’approche composant, dont la
vocation était de faciliter et flexibiliser les
architectures applicatives, en fournissant des
briques logicielles assemblables, l’approche
SOA vise une démarche pour laquelle les
découplages métiers et fonctionnels doivent
être appréhendés en priorité. Ceci conduit à
définir des services dont le niveau de granula-
rité est supérieur à celui qui avait été envisa-
gé ou mis en pratique dans les architectures
de composant. On parle alors de " Coarse
grained " services. C’est la raison pour laquel-
le la réussite de la mise en œuvre d’une archi-
tecture orientée service passe par une forte
implication des analystes métiers et la bonne
synergie avec les équipes techniques.
Les grandes étapes d’implémentation
d’une architecture SOA :
Définir une cible et un périmètre
Une SOA ne doit pas être motivée par le seul
effet de mode ou la pression du marché, il faut
d’abord définir la proposition de valeur en
identifiant quels enjeux métiers ou quels
besoins clients seront adressés par l’approche
SOA. Définir la proposition de valeur peut pas-
ser par une phase de cartographie des appli-
cations, fonctions et organisations ou par la
rédaction de business cases devant impérati-
vement être portées par des analystes métiers.
Les démarches d’urbanisation, BPM, les pro-
jets B2B, les architectures massivement distri-
buées sont des terrains particulièrement favo-
rables à la mise en œuvre d’une architecture
de services. Cette étape permet de définir le
périmètre sur lequel s’appliquera l’architecture
et de qualifier la granularité des services
nécessaire en en mesurant le ROI.
Une mise en place de l’architecture effectuée
par itérations successives
Bien qu’il soit possible d’avoir un retour sur
investissement à court ou moyen terme, la
mise en place d’une architecture orientée ser-
vice se fait sur le long terme. Afin de maîtriser
les risques de transition, d’obtenir un appren-
tissage progressif et de se définir des objectifs
plus faciles à atteindre, il faut procéder par ité-
rations successives en gardant le cap sur la
cible architecturale. Les promesses des SOA
(flexibilité, découplage, réactivité, réutilisation)
ne peuvent apparaître que si l’effort de SOA-
isation est suivi dans le temps et que la vision
est largement partagée par les acteurs du SI.
Définition de la sémantique d’entreprise
Un facteur de réussite d’une architecture orien-
tée service est la définition à l’échelle de l’en-
treprise d’une sémantique commune. Elle faci-
lite la communication entre les différentes par-
ties, et favorise la réutilisation des services.
Une pratique gagnante est de formaliser cette
sémantique sous forme de schémas (XSD) par
l’intermédiaire d’un modèle UML. Les modèles
doivent être partagés, avoir leur propre ges-
tion de version et placés dans un référentiel
d’entreprise accessible à tous les projets.
Dans certains secteurs, il existe déjà des stan-
dards verticaux et il est souvent pertinent de
s’appuyer sur ceux-ci comme point de départ.
FPML (Financial Products Markup Language,
http://www.fpml.org/) pour la définition des
produits financiers, ou RosettaNet pour la défi-
nition de conversations dans le monde de la
high tech en sont deux exemples.
L’importance d’une organisation adaptée
Pour permettre la prise en compte des évolu-
tions des métiers et son adoption partagée, la
sémantique d’entreprise doit être placée sous
une gouvernance transverse. La standardisa-
tion de la codification des données qu’elle
porte est un des grands facteurs clé de la
réutilisation des services.
Les architectures orientées service font en effet
apparaître de nouveaux besoins en terme de
gouvernance : les responsabilités ne sont plus
seulement associées aux projets, il apparaît de
nouvelles responsabilités transverses, de nou-
veaux processus de gouvernance, pour :
• définir et valider les services,
• la sémantique d’entreprise,
• gérer les coûts,
• imposer la vision SOA et promouvoir la réuti-
lisation des services.
Identification des services
L’erreur la plus souvent commise pour tenter
d’exposer des services est de partir des com-
posants développés dans des applications et
p42-54 focus soa 18/05/06 18:28 Page 46
F
ocus SOA
47
Programmez n°87 juin 2006
d’exposer des mécanismes d’invocation de ces
composants par des façades techniques sup-
portant des protocoles standard (JMS, SOAP,
WSDL…). De plus, il peut parfois être tentant
d’assimiler à des services toute interaction
inter applicative déjà existante. Cette approche
peut conduire à des erreurs de conception et
peut être évitée en repositionnant le débat
dans le contexte des processus logiques fonc-
tionnels conduisant à ces interactions.
En effet, comme nous l’avons évoqué plus
haut, le niveau de granularité qui porte la plus
grande proposition de valeur est le niveau de
granularité le plus proche des interactions
métiers. Pour atteindre cet objectif, plutôt que
d’analyser des applications existantes, il est
souvent nécessaire de reprendre une
démarche d’architecture fonctionnelle en repar-
tant du besoin, par l’analyse des processus
pour définir les conversations entre entités
fonctionnelles qui devront se traduire sous
forme d’échange dans le monde du SI.
La contractualisation des services
Le découplage fonctionnel autant que technique
sont des objectifs majeurs des architectures
orientées service. L’outil méthodologique pour
permettre le découplage est la démarche de
contractualisation. Elle permet à chacun des
acteurs d’une intégration de se focaliser et de
formaliser les exigences réciproques entre le(s)
consommateur(s) et le(s) fournisseur(s) sous la
forme d’un contrat. Ceci contribue à isoler les
mécanismes internes des mécanismes d’invoca-
tion pour favoriser l’autonomie des organisations
et applications. La programmation par contrat est
un élément qui permet notamment de maîtriser
les cycles de test en permettant à chaque déve-
loppeur des services d’être autonome et de pou-
voir tester ses services, conformément aux exi-
gences et aux cas de test qui ont été définis. Les
informations communément admises à intégrer
dans un contrat de service sont :
• Structure et format des messages échangés ;
• Protocoles d’invocations
• Durée de vie du service ou de la version;
• Performance et capacité de traitement
(nombre d’appels, fréquence, volumes, temps
d’exécution, priorité, …);
• Disponibilité ;
• Robustesse ;
• Mécanismes de gestion des erreurs ;
• Sécurité ;
• Qualité ;
• Localisation et adressages ;
• Point de contacts fonctionnels et techniques.
Implémentation des services
Une fois les services définis au bon niveau de
granularité, et le contrat établi, les services
peuvent être implémentés. Pour permettre son
découplage et sa réutilisation, un service doit
toujours être sans état et autonome dans son
exécution, c'est-à-dire ne pas dépendre d’un
contexte ou de l’exécution d’un autre service.
Lors de la contractualisation, le choix de l’uti-
lisation de standards va favoriser la réutilisa-
tion des services. En ce sens, les technologies
associées aux web services forment une implé-
mentation technique possible des concepts de
SOA, mais ne sont pas les seules. Néanmoins,
bien qu’il soit possible de mettre en œuvre
une architecture orientée service sans utiliser
Caractéristiques
des services
- Couplage lâche. Le consommateur du servi-
ce ne doit pas avoir connaissance des
détails d’implémentation technique (langa-
ge d’implémentation, machine de déploie-
ment, etc..) du fournisseur du service. On
utilise donc des échanges de messages au
format XML plutôt que des objets, comme
c’est le cas avec DCOM ou Corba.
- Interfaces bien définies. L’interface d’un ser-
vice peut être décrite par un WSDL (Web
service Description Language).
- Stateless. Un service doit être autonome
dans son exécution, c'est-à-dire ne pas
dépendre d’un contexte ou de l’exécution
d’un autre service.
p42-54 focus soa 18/05/06 18:28 Page 47
F
ocus SOA
48
Programmez n°87 juin 2006
les web services, l’architecte doit prendre en
compte la direction que prend le marché et
l’orientation vers des technologies autour des
web services qui seront d’année en année de
plus en plus matures. Le support des techno-
logies web services est donc un minimum pour
garantir la pérennité des solutions choisies.
Il faut souligner ici que le risque d’association
d’un web services aux services est de repro-
duire par erreur une démarche " bottom up "
plutôt que " top down ". Un web service n’est
pas forcément éligible au titre de " service "
dans le cadre d’une architecture orientée ser-
vice. Remplacer les APIs par des web services
ne garantit en rien que le service soit bien
formé et conçu au bon niveau puisque les ser-
vices dont il est question dans le cadre d’une
SOA sont des services à valeur métier.
Une approche par le haut (top-down) permet
d’éviter de confondre les APIs avec les services,
car ils sont une abstraction plus élevée que de
simples API. Les services devront bien souvent
orchestrer l’appel de quelques API pour être en
capacité de produire un mécanisme d’intégra-
tion qui soit défini avec le bon niveau de gra-
nularité. C’est la raison pour laquelle l’identifi-
cation des services fait généralement appa-
raître des projets façades, porteurs de valeur
autant fonctionnelle que technique (c’est sou-
vent le cas avec l’intégration de systèmes exis-
tants), dont certains pourront être mis en
œuvre au travers de technologies EAI.
Il y a donc des solutions adaptées et spéciali-
sées pour porter ces façades, solutions qui
sauront fabriquer une couche de services et
construire les services comme autant d’abs-
traction de fonctions exposées par une ou plu-
sieurs applications. Cette couche réconcilie en
quelque sorte les visions applicatives et
métiers. Compte tenu de l’état de l’art actuel,
les quelques points clefs que doivent intégrer
une solution SOA sont :
• Support des standards du marché d’inter-
• Des fournisseurs de briques unitaires spécia-
lisées pour traiter certains aspects des archi-
tectures SOA : CapeClear, Amberpoint,
Systinet, iWay…
Ces solutions permettent, entre autres, de ser-
vir d’intermédiaire afin d’apporter le couplage
lâche (protocole technique, localisation, trans-
formations…). Ils proposent des patterns d’im-
plémentations ou des frameworks orientés
SOA tels que SCA ou Indigo.
Des enjeux forts pour les architectes
La trop grande simplicité de la mise en œuvre
des web Services semble impliquer pour les
néophytes, une apparente simplicité de la mise
en œuvre d’architectures SOA. Dans une
démarche stratégique pour les architectes et
pour les développeurs, se rapprocher des fonc-
tionnels est donc un facteur clé de succès, les
démarches de normalisation fonctionnelle et la
culture plus forte autour des processus qu’ils
acquièrent d’année en année pourront aider les
architectes à " faire parler " les fonctionnels et
les aider à formaliser des services au bon niveau
de granularité. Le challenge pour l’architecte est
de devenir un animal communicant, pédagogue
auprès de tous ces acteurs (management, chef
de projet, fonctionnel, développeurs). Il doit être
capable de promouvoir une stratégie pour le
système d’information tout en gardant sa com-
pétence, sa vision technologique et son leader-
ship auprès des développeurs.
s Marc Boullier
Directeur Technique chez VISTALI
s Benoit Paroissin
Responsable de l’offre SOA chez VISTALI
opérabilité – au minimum XML, SOAP,
WSDL… et les standards WS-* validés
• Routage intelligent, utilisant des règles se
basant sur le contenu des messages
• Transformations utilisant le standard du mar-
ché qu’est XSLT
• Moteur d’orchestration, là encore avec un
support de BPEL
• MOM, ou interfaçage avec des MOMs en uti-
lisant des standards tels que JMS
• Le support Architectures distribuées
• Services partagés
• Réutilisation au travers de l’utilisation de stan-
dards technologiques (web services, JMS, etc…)
Il existe 3 grandes catégories de solutions per-
mettant de mettre en œuvre des architectures
orientées services :
• Les plates-formes applicatives des trois
acteurs majeurs du marché (BEA, IBM,
Microsoft) qui intègrent désormais des pro-
duits spécialisés pour supporter la mise en
œuvre d’architecture SOA,
• Les suites d’intégration dont les leaders
sont Tibco et webMethods
Granularité des services
Il existe différentes granularités des services :
• Coarse grained – il s’agit de services purement fonctionnels, émergeant lors d’une démarche de
modélisation des processus métiers. Il s’agit de la granularité la plus porteuse de valeur, mais
nécessitant plus d’efforts (définition d’une sémantique d’entreprise, gouvernance …)
• Medium grained et Fine grained – il s’agit de services apparaissant au niveau des composants
et objets. Les services de taille moyenne peuvent être utilisés dans le cadre d’une architecture
applicative et combinés pour être exposés au travers d’un service de grosse granularité tandis
que les services de granularité la plus fine ne sont utilisés qu’en interne à une application.
Une granularité fine peut sembler efficace car elle permet d’apporter une réponse directe au besoin
d’un consommateur, mais cette efficacité tient au fait qu’elle s’affranchit d’une réflexion sur les
interactions consommateurs – fournisseurs. Elle n’est ni stable fonctionnellement, ni réutilisable.
p42-54 focus soa 18/05/06 18:28 Page 48
F
ocus SOA
49
Programmez n°87 juin 2006
Sofware AG mise
aussi sur le support
" Ce que je vois,
c’est le rôle du BPM
dans les architec-
tures SOA. De plus
en plus, les gens
mettent BPM
comme partie inté-
grante à SOA. On
assimilait il y a peu
ESB et SOA, mainte-
nant, on est monté d’un cran, pour parler de
gouvernance : comment gérer l’architecture.
Mais tout dépend de la manière dont on abor-
de SOA. Le premier projet SOA paie un peu
pour les autres et il faut trouver un "sponsor"
métier qui utilisera l’architecture d’un point de
vue métier – business. SOA est une démarche
d’urbanisation de son système d’information.
Je mets une couche au-dessus. Il faut impéra-
tivement une réflexion en amont " souligne
Frédéric Bonnard (Directeur business unit
crossvision). Mais au-delà de la réflexion pure-
ment architecture, il faut aussi savoir ce que
l’on souhaite faire : quelles applications vont
profiter immédiatement de cette nouvelle
configuration ? Rien ne se fait sans prouver
que la démarche convient au métier, au busi-
ness. " Il faut aller voir les gens du métier
pour vendre SOA pour qu’ils consomment l’ar-
chitecture. " prévient Frédéric Bonnard. Cette
démarche est capitale dans la réussite ou
l’échec d’un projet SOA. " Et il faut aussi des
personnes pour créer ces nouveaux services.
La valeur ajoutée est là " poursuit Frédéric
Bonnard. Car, si le SOA n’apporte rien de
concret, aucune valeur ajoutée, l’intérêt intrin-
sèque de SOA sera nulle. " Dans une architec-
ture simple avec quelques services, c’est
simple à gérer, à maintenir. Par contre, plus
l’architecture devient complexe, avec de nom-
breux services, plus c’est difficile à gérer, à
maintenir, même en couplage lâche " prévient
Frédéric Bonnard. L’aide et la formation
deviennent des éléments importants pour le
client. " Nous possédons des centres de com-
pétences SOA dans plusieurs pays, mais pas
encore France, pour une question de taille de
marché " précise Frédéric Bonnard.
Xcalia : ne pas
tout confondre
Le SOA constitue un
axe stratégique
pour l’éditeur fran-
çais Xcalia. " C’est
encore un marché
en démarrage, les
entreprises débu-
tent des projets,
mais cela n’est pas
quelque chose de
courant, beaucoup font des études " précise
d’emblée Éric Samson. Cette relative prudence
n’est pas due au hasard. Les expériences pas-
sées ont sans doute raisonné les stratégies.
"Échaudé c’est possible. Les directions veulent
plus de réflexion, des études approfondies. On
a dit et écrit beaucoup de choses sur SOA,
pour un certain nombre, SOA = composant. On
a besoin d’un véritable glossaire, d’un diction-
naire. Cependant, SOA commence à se clarifier
comme sur le référentiel de services ou enco-
re sur l’orchestration.
La vision, le discours de chaque éditeur n’aide
pas les utilisateurs. Avant toute chose, il faut
rappeler que SOA est un type d’architecture
avec une nouvelle couche orientée métier. Il y
a deux axes à retenir. Le premier concerne les
services, leur exposition et le second est lié à
l’intégration. SOA permet d’accéder aux
anciennes applications à partir de nouvelles,
et cela ne se réalise pas forcément en Web
Services. De nombreux projets croisent SOA et
intégration, quitte, plus tard, à aller vers du
SOA " pur " " analyse Éric Samson. Alors SOA
l’avenir de l’intégration ? " Oui, SOA est l’ave-
nir de l’EAI ! Mais SOA est plus que cela " pré-
cise Éric Samson.
Microsoft mise sur
la démocratisation
" Sur le SOA, tout le
monde a la même
vision marketing.
Ce n’est ni une
révolution, ni un
outil. Le " buzz "
autour n’est pas for-
cément une bonne
chose " précise
Marc Gardette (res-
ponsable architectes au sein de la division
développeurs et plate-forme d'entreprise de
Microsoft France). " Une application reposant
sur des services avec l’échange de messages,
Corba savait déjà le faire, l’idée n’est (donc)
pas nouvelle. Les principes des services sont
autonomie, partage des schémas et sont gérés
par des politiques. On définit ainsi le SO
(orienté service). Le A signifie : quels sont les
services, comment les orchestrer, que fait-on
des services, etc. Il y a deux visions : la vision
métier et la vision technique. Et il ne faut pas
oublier qu’il existe aussi différents types de
services : technique, business, infrastructure.
Et au-dessus de tout cela, on bâtit son appli-
cation. On peut avoir des applications compo-
sites ou des processus " commente Marc
Gardette. Bref, le SOA est en quelque sorte le
lien entre les applications et l’interface. " J’ai
des services. Encore faut-il savoir comment les
utiliser ensemble. Il faut les agréger, définir les
enchaînements. Pour cela, on dispose de work-
flow, de processus, d’orchestration. Je dois
définir mes besoins. Chez Microsoft, nous dis-
poserons d’une couche pour démocratiser
SOA : WCF (Windows Communication
Foundation). Orienté service, il unifie les archi-
tectures distribuées et la manière de commu-
niquer. Il s’agit d’un modèle de haut niveau,
assurant l’interopérabilité avec l’implémenta-
tion des WS-*. Surtout, il est extensible via des
API. Et WCF travaille avec notre framework de
workflow" conclut Marc Gardette.
TEMOIGNAGES
Numéro 88 - Juillet / Août 2006 - SPÉCIAL LANGAGES de ASP à XUL
p42-54 focus soa 18/05/06 18:28 Page 49
F
ocus SOA
50
Programmez n°87 juin 2006
Les architectures orientées services émergent
comme modèle de choix pour l’intégration dans une
entreprise. BPEL (Business Process Execution
Language) joue ici un rôle important en fournissant
des moyens efficaces pour articuler et exécuter une
logique applicative à un niveau d’abstraction prévu
pour apporter les services nécessaires à des fins d’in-
tégration. Cet article présente une perspective des
bénéfices qu’apporte le BPEL aux services Web : la
concrétisation des principes d’une SOA.
BPEL & SOA,
par l’exemple
A
fin d’illustrer les préoccupations aux-
quelles le BPEL apporte une réponse,
nous prendrons pour exemple un voya-
giste qui propose des services en ligne. Les
prestations comprennent :
• getAvailableHotels : traiter une saisie de
code aéroport et renvoyer une liste d’hôtels
à proximité de cet aéroport
• getDescription : traiter une saisie d’identi-
fiant d’hôtel et renvoyer une description de
cet hôtel
• getRate : traiter une saisie d’identifiant
d’hôtel, un nombre de chambres et une
date. Renvoyer un devis
• makeReservations : utiliser les identifiant
hôtels et dates pour effectuer la réservation
• cancelReservation : utiliser un numéro de
confirmation pour annuler la réservation
Un service de voyage en ligne
Lors d’un processus de réservation, toutes ces
opérations peuvent être appelées. Les mes-
sages utilisés par ces services peuvent être
basés sur des définitions du secteur -ici du
voyage, par exemple celles fournies par
l’OpenTravel Alliance (OTA)*. La société concer-
née pourrait ainsi rédiger ses propres contrats
WSDL en s’appuyant sur les schémas de l’OTA.
Pour des raisons pratiques, nous admettons
que chaque opération est modélisée comme
service unique.
Maintenant, observons ce qui se passe lorsque
nous voulons créer un service réutilisable avec
un scénario type tel que la recherche d’un
hôtel. Nous appellerons plusieurs services
dont certains doivent être invoqués à la chaî-
ne. Par exemple, nous avons besoin d’une liste
d’hôtels situés près d’un aéroport donné avant
de demander des descriptions détaillées et les
prix de ces hôtels. D’autres services par contre
peuvent être invoqués en parallèle. C’est le
cas, par exemple, lorsque nous demandons les
descriptions et prix de tous les hôtels (en
même temps) pour la liste que nous avons
obtenue. Ce scénario peut nécessiter une
interaction de l’utilisateur qui doit par exemple
visionner la liste d’options et décider quel
hôtel réserver. Nous pouvons imaginer ce pro-
cessus comme un graphique présentant des
activités de base et des activités structurelles.
Parmi les activités de base, il y a la réception
de messages, les invocations de services
externes et l’attribution de valeurs d’un mes-
sage à l’autre. Les activités structurelles peu-
vent inclure une séquence qui exécute des
activités les unes après les autres et un flux
qui exécute les activités en parallèle. Or, il
s’avère que c’est une notion des activités que
le BPEL supporte.
Dans le langage BPEL, les activités mention-
nées ici sont recevoir, invoquer, attribuer,
mettre en séquence et en flux. En effet, il y
définit 15 activités de ce type, ainsi que des
<sequence>
<receive operation="shop" partnerLink="shopper"/>
<invoke operation="getAvailableHotels" partnerLink="registry"/>
<flow>
<invoke operation="getRate" partnerLink="rateProvider"/>
<invoke operation="getRate" partnerLink="rateProvider"/>
<invoke operation="getRate" partnerLink="rateProvider"/>
<invoke operation="getRate" partnerLink="rateProvider"/>
</flow>
<reply operation="shop" partnerLink="shopper"/>
<pick>
<onMessage operation="makeReservation" partnerLink="shopper">
<invoke operation="makeReservation" partnerLink="hotel"/>
<reply operation="makeReservation" partnerLink="shopper"/>
</onMessage>
<onMessage operation="cancel" partnerLink="shopper">
<empty/>
</onMessage>
</pick>
</sequence>
* OpenTravel Alliance (OTA) :
http://www.opentravel.org
p42-54 focus soa 18/05/06 18:29 Page 50
F
ocus SOA
51
Programmez n°87 juin 2006
éléments de “non-activité” comme les proces-
sus, les liens partenaires, les variables et les
corrélations.
Ce morceau de code illustre comment et
quelles activités peuvent être utilisées dans
notre contexte (certains détails comme la
manipulation de données ont été omis pour
des raisons de clarté). Ce qu’il faut retenir ici,
c’est que les activités sont représentées
comme éléments et les sous-activités, comme
éléments fils. On observe donc que la structu-
re du XML reflète la structure du processus de
façon évidente.
Des suites d’activités comme celles-ci peuvent
être utilisées pour définir les processus BPEL qui
seront publiés sous forme de services Web.
Certes, il est possible d’arriver à ce résultat par
le biais d’un langage de programmation tradi-
tionnel…Mais l’avantage que nous voyons dans
le BPEL est que la notion d’interaction avec des
services Web est intégrée dans le langage.
Autrement dit, si nous souhaitons nous concen-
trer essentiellement sur l’orchestration de ser-
vices Web, l’utilisation du BPEL semble plus
naturelle. Il est vrai qu’il existe de nombreuses
librairies pour simplifier la tâche d’envoi et
réception de messages avec des protocoles
comme SOAP. C’est pourquoi je vais exposer
d’autres raisons d’utiliser BPEL dans ce scénario.
WSDL au cœur du service Web
La caractéristique technique déterminante d’un
service du point de vue du BPEL est qu’il est
décrit dans un fichier WSDL. Le BPEL n’admet
pas par défaut que l’on accède aux services via
SOAP avec HTTP, ce qui permet l’utilisation de
bindings plus efficaces lorsqu’on le juge néces-
saire. Le framework d’Apache WSIF (Web
Service Invocation Framework) définit ainsi les
extensions WSDL pour des bindings d’appels
locaux de Java, EJB, JMS, et de connecteurs
JCA. Les données du binding ne sont pas
accessibles directement via le BPEL mais on
les contrôle par le biais des configurations de
déploiement. Ce qui signifie que notre proces-
sus peut être écrit en restant neutre sur la
question des liaisons, séparant ainsi claire-
ment la logique métier des préoccupations de
couche basse.
Les schémas d’échange
et les services stateful
Notre scénario de recherche d’hôtel nécessite
deux interventions de l’utilisateur: la première
fois pour initier une requête avec des critères
qui définissent la ville ou l’aéroport, et les
dates, la deuxième pour visionner la liste, et
sélectionner un hôtel, ou annuler la requête.
Comme il y a deux interactions, le service glo-
bal ne peut pas être modélisé sous forme
d’une paire requête/réponse. Pour le modéli-
ser, nous avons plusieurs options:
1/ Le processus nécessite trois opérations de
type requête/réponse: getDescriptionsAnd
Rates(), makeReservation(), et cancel().
2/ Le processus expose une opération à sens
unique qui initialise la recherche d’hôtel. Le
client lance une requête, fournit une réponse
pour la sélection de l’hôtel dans la liste pro-
posée ou pour annuler.
3/ Chaque message est modélisé comme une
opération à sens unique.
Vous remarquerez que pour la première et la
troisième option, le processus reçoit de mul-
tiples messages, ce qui implique un service
stateful, qui mémorise les points charnière
depuis le début de la conversation, au lieu de
redémarrer de zéro à chaque message. Si nous
admettons que nous supporterons ici des
requêtes multiples et concurrentes, nous
auront donc également besoin d’un moyen de
corrélation définissant quel message est dirigé
vers quelle conversation.
Identifier les conversations
et corrélations
Une manière de faire la corrélation est d’insé-
rer des identificateurs dans chaque message
pour identifier la conversation à laquelle il par-
ticipe. Parfois, cela marche très bien et il exis-
te une pléthore d’identificateurs de message et
de conversation dans les standards JMS et WS-
Addressing. Mais il arrive aussi que cette stra-
tégie soit inutilement restrictive. Ainsi, quel-
qu’un qui envoie un message ne sait pas for-
cément quel identificateur utiliser ou même si
une conversation existe déjà, ou si une nou-
velle conversation doit être créée. Le BPEL
règle tous ces cas en introduisant le concept
de corrélation et en permettant la définition
des corrélations en fonction du contenu des
messages. Pour notre scénario, nous pouvons
très bien avoir un identificateur explicite qui
circule ou nous pouvons cibler un set de pro-
priétés applicatives spécifiques comme un
tuple qui consisterait en un nom de client,
date, et ville. L’orchestration de services en uti-
lisant à la fois des identificateurs explicites et
implicites apporte une flexibilité qui constitue
un outil puissant lors le la modélisation de
conversations étendues.
Les processus persistants
Retournons aux différentes options d’échange
de messages pour modéliser notre scénario. Le
temps nécessaire à chaque étape du processus
est l’un des facteurs clé lors des prises de
décision concernant la modélisation. Si l’utili-
sateur est devant le navigateur et attend une
réponse à sa requête, les modèles de messa-
gerie synchrone conviennent bien. En effet, il
parait raisonnable de maintenir les connec-
tions HTTP pour cette courte durée.
Cependant, un scénario d’utilisation différent
peut amener l’utilisateur à répondre par e-mail
p42-54 focus soa 18/05/06 18:29 Page 51
F
ocus SOA
52
Programmez n°87 juin 2006
– allongeant le temps à des jours, au lieu de
secondes. Dans ce cas, le modèle qui traite
chaque message comme un service à sens
unique paraît plus approprié. Dans le monde
des services Web, l’option qui prévaut pour
gérer des processus longs via des services
asynchrones est la queue traditionnelle de
messages, à laquelle on accède souvent au
moyen d’une API non propriétaire telle que le
JMS (Java Messaging Service) et SOAP par
HTTP, avec des rappels spécifiés par des méca-
nismes d’adressage comme WS-Adressing. JMS
a l’avantage de fournir des queues de mes-
sages adaptées à une utilisation en entreprise
avec une messagerie persistante et fiable.
Le prochain obstacle derrière la notion de pro-
cessus longs est la persistance de ceux-ci.
Plus le processus est long, plus il est critique
qu’il puisse durer avec les cycles. Si une tran-
saction de 500 millisecondes qui échoue peut
simplement être relancée, la persistance est
essentielle pour des processus qui vont s’éta-
ler sur des semaines, voire des mois. Le béné-
fice majeur qu’apporte un processus long
implémenté avec BPEL est la persistance que
fournit le moteur BPEL, simplifiant ainsi énor-
mément la logique métier.
Gérer les endpoints
Dans notre scénario d’offre de voyages en
ligne, l’un des éléments les plus sujets au
changement est l’endpoint des différents ser-
vices. Une des fonctionnalités souhaitables
d’une SOA est la possibilité de gérer ces end-
points de façon dynamique à distance, et un
certain nombre de technologies répondent à
ce besoin. WSDL apporte des endpoints sta-
tiques à l’utilité limitée. Une pratique couran-
te consiste à séparer l’interface WSDL en
excluant l’endpoint de l’implémentation WSDL
qui elle, l’inclut. Cela permet une résolution
plus dynamique de l’endpoint comme ceux qui
sont établis via le champ ReplyTo dans WS-
Addressing ou JMS.
D’autre part, si de multiples services Java tour-
nent sur la même machine virtuelle, il est plus
efficace pour eux de s’invoquer l’un l’autre
directement en mémoire plutôt que par le biais
de messages ou connections socket. Avec le
niveau d’abstraction qu’offre le BPEL, on a
également la notion de lien partenaire.
Les liens partenaires peuvent être spécifiés au
moment du déploiement ou de l’exécution.
Puisque les liens partenaires sont un concept
intégré de BPEL et peuvent être manipulés
directement dans les processus, nous avons là
une solution complète de gestion des end-
points, depuis le déploiement statique simple
jusqu’à la résolution dynamique dépendant de
multiples facteurs, y compris des considéra-
tions techniques et la logique métier.
Transactions atomiques, transactions longues
L’une des opérations de notre service peut
paraître inoffensive, mais elle cache en fait une
question délicate : l’opération d’annulation.
Elle implique que parfois des activités peuvent
être dé-faites. Nous allons ici faire la distinc-
tion entre deux types de transactions liées à
BPEL et à l’architecture orientée services.
La première est la transaction atomique. Les
lecteurs familiarisés avec les BD relationnelles
reconnaîtront ce type de transaction associée
à la sémantique ACID (Atomicity, Consistency,
Isolation, Durability). Les systèmes distribués
qui ont besoin d’une transaction ACID pren-
nent normalement ces propriétés avec un pro-
tocole de commit à deux phases. Le standard
WS-AtomicTransaction définit une manière de
réaliser ce type de transaction avec des tech-
nologies de service Web.
Les transactions atomiques préservent ainsi
l’intégrité des données, mais le prix à payer
est le verrouillage des ressources pour toute la
durée de la transaction, ce qui est raisonnable
dans le cas d’une transaction courte, mais pas
pour une transaction longue. C’est pourquoi il
y a une seconde catégorie de transactions
longues qui peuvent aussi être appelées
Business Activity. Ici, l’approche consiste à
définir des activités de “compensation” qui
défont les actions précédentes. Ce faisant, les
ressources ne sont pas verrouillées et l’infor-
mation sur l’état peut être partagée, même
lorsque le processus n’est pas terminé.
Les standards WS-AtomicTransaction et WS-
BusinessActivity utiles ici, chapeautent le stan-
dard WS-Transaction pré-cité. Ils ne sont pas
encore très largement acceptés et BPEL n’est
pas dépendant d’eux directement à l’heure
actuelle, mais la distinction entre les deux
types de transactions est importante et le
BPEL la supporte.
Nous avons vu ici un certain nombre de pro-
priétés communes à nombre d’applications à
processus métiers. Bien qu’elles puissent être
intégrées en écrivant du code dans un langa-
ge de programmation traditionnel, elles font
également partie des atouts du BPEL qui
apporte un niveau d’abstraction et une infra-
structure particulièrement adaptés à ce type
d’applications.
s Jim Clune
Responsable de développement chez Parasoft
Le Runtime contient de multiple process. Ils participent au dialogue avec les partenaires via des
Web Services et assure la persistance dans le SGDB.
p42-54 focus soa 18/05/06 18:29 Page 52
F
ocus SOA
53
Programmez n°87 juin 2006
L’architecture orientée service est devenue le maître mot des éditeurs commerciaux et open
source. L’offre autour du SOA s’étoffe rapidement dans l’ensemble des domaines. Il est diffici-
le de dresser un panorama un tant soit peu complet. Nous vous proposons un aperçu et les
grandes tendances actuelles.
Panorama des outils orientés SOA
C
omme nous l’avons répété dans l’ensemble des pages précé-
dentes, il est parfois difficile de cerner la notion de SOA et enco-
re plus quand on aborde les outils, les approches étant diffé-
rentes selon l’éditeur. Vous trouverez aussi bien des solutions " clé en
main " purement SOA ou SOA – EAI chez les spécialistes de l’intégra-
tion. La différence peut se faire sur les fonctions proposées, les stan-
dards et protocoles implémentés.
Cependant, même avec des environnements complets, l’ajout d’un outil
tierce n’est pas à écarter, notamment dans l’orchestration, les proces-
seurs métiers. Dans les outils open source, l’offre est variable selon les
domaines. Pour les ESB, il n’y aura guère de problème, par contre, sur
les solutions globales, l’offre se réduit à peu de chose. Théoriquement,
l’interopérabilité / compatibilité existe entre les outils et avec les appli-
cations internes et externes. Mais, dans la pratique, à vous, de vérifier
que vous pourrez utiliser tel outil avec des services / applications exis-
tant. SOA évoluant constamment, surveillez les spécifications et l’évo-
lution des outils.
Les solutions de bout en bout ou presque (applications
de services et composites)
Aujourd’hui, plusieurs grands éditeurs se positionnent sur les solutions
globales. Les offres se différencient sur les fonctions et aussi sur le type
d’applications SOA : composites ou de services. Les spécialistes d’ou-
tils d’intégrations (de type EAI ou non) se tournent franchement vers le
SOA, le nouveau marché de l’intégration. Certaines solutions obligent à
mettre en œuvre une nouvelle infrastructure.
Editeur Outil licence Description
SoftwareAG CrossVision Commercial Suite d’outils couvrant l’ensemble des besoins, inclut des modules de gouvernance, de composition d’applications composites,
de BPM, fonctions d’intégration de l’infrastructure applicative existante, outils de modélisation et d’orchestration.
Présence d’un référentiel unique.
IBM IBM SOA Commercial SOA Foundation regroupe l’ensemble des outils IBM liés aux architectures SOA : modélisation, processus métiers, serveur,
Foundation monitoring, ESB… SCA est déjà pris en compte dans certains outils de la gamme.
Oracle Fusion Architecture Commercial Solution SOA et d’intégration. repose sur trois grands principes : le grid, SOA et la gestion des informations.
Son modèle de conception d’application / architecture est piloté par modèle et propose une architecture interne
ouverte pour intégrer les applications hétérogènes.
BEA AquaLogic Commercial Gamme d’outils orientés SOA. Elle comprend un ESB, un " annuaire " pour les services web, un intégrateur de données,
ainsi qu’un outil de gestion d’accès et de sécurité applicative.
On dispose aussi d’un outil pour orchestrer les architectures complexes.
IWay SOA Middleware Commercial Suite d’intégration orientée SOA. L’outil mise sur son interopérabilité et ne nécessite pas d’infrastructure nouvelle.
Inclut un ESB, un monitoring, une gestion d’accès et des polices de sécurité, un module BPM et une fonction de recherche.
Telelogic System Architect Commercial Environnement de modélisation orientée architecture. Permet de convertir des processus BPMN en processus BPM.
Inclut des mécanismes de déploiement SOA. Inclut aussi BPEL. Pas de fonctions d’orchestration.
webMethod Fabric Commercial Serveur d’intégration s’appuyant maintenant sur un framework SOA. Utilise massivement les Web Services.
Le développement se veut le plus visuel possible. Moteur de BPM présent.
De Gamma De gamma suite Commercial Plate-forme composée de différents outils et moteurs pour réaliser des environnements SOA
(BPM, référentiel central, portail, etc.). Développé avec .net.
Microsoft Biztalk Commercial Serveur d’intégration Windows de type EAI. Inclut de nombreux correcteurs.
Repose sur .Net, XML et les Web Services, inclut un Bam et supporte BPEL.
IWay webMethod Biztalk
p42-54 focus soa 18/05/06 18:29 Page 53
F
ocus SOA
54
Programmez n°87 juin 2006
s François Tonic
Divers
Parasoft SOAtest Commercial Outil de tests et d’analyses de web services. Permet de valider les services selon les spécifications du marché.
Inclut de bonnes pratiques. Propose l’automatisation des tests des implémentations BPEL.
Mia Software Mia for .Net Commercial outil de génération de code .Net basé sur UML 2 et s’intégrant dans Visual Studio 2005.
La conception des applications se réalise selon une approche SOA, basé sur .Net et les Web Services.
L’approche de l’éditeur du SOA se fait par le développement orienté modèle.
AmberPoint SOA Validation Commercial Outil de validation SOA. L’outil vérifie le bon fonctionnement de l’architecture et des services.
System Evalue l’impact de tout changement dans les services, les applications.
AmberPoint SOA Management Commercial Cet environnement vise à administrer au mieux son SOA de la conception, à la production et durant la maintenance.
System Assure une gouvernance centralisée. Utilisation des politiques de gouvernance.
Ilog Jrules Commercial L’éditeur français est le leader des processus métiers. Facilite le développement et l’adaptation des processus et règles
à l’environnement en prenant en compte en temps réel les modifications.
Compuware OptimalJ Commercial Orienté développement et MDA, l’outil peut servir dans des architectures SOA complexes afin de
générer le code des services.
Xcalia Intermediation Commercial Outil pour passer en SOA sans imposer des choix techniques, non intrusif. Propose une orchestration dynamique.
Platform
Sonic Software Sonic ESB commercial L’ ESB du marché. Mise sur le messaging avec le support de JMS.
Supporte WS-Adressing,WS-Reliable Messaging, etc.
IBM WebSphere ESB Commercial S’appuie sur le standard JMS. S’intègre à la plate-forme WebSphere d’IBM et intègre un modeleur
de processus métier et un assembleur de composants.
Il utilise les protocoles et standards Web Service et BPEL.
iWay IWay ESB commercial ESB multiprotocole, supporte les messages non XML (via une transformation).
Fonctions de rapports décisionnels.
Fiorano Fiorano ESB Commercial Se base sur le protocole de message JMS. Il implémente aussi les standards BPM, BPEL4WS.
Supporte Java, .Net.
ServiceMix ServiceMix Open source Basé sur JBI (Java Business Integration). Il utilise le framework Spring.
Il s’intègre au serveur J2EE Geronimo. Pour le messaging, cet ESB s’appuie sur ActiveMQ,
un outil de message utilisant JMS.
ObjectWeb Celtix Open source Issu du projet Artix de Iona. La persistance des données pour les messages se base sur Derby.
Supporte Maven 2, JMS, l’ensemble des standards et protocoles Java des web services et SOA.
Tibco BusinessWorks Commercial S’appuie comme la concurrence sur JMS. Possède une console d’administration web.
Utilise les principaux standards du marché.
Cape Clear Cape Clear ESB Commercial Gestion de bout en bout des messages, supporte les standards et protocoles du marché.
Possède aussi une console d’administration et une gestion de sécurité des services.
Iona Artix Commercial Permet de créer des architectures SOA adaptatives. Inclut un module d’orchestration JMS et WS-RM,
supporte z/OS avec un outil Eclipse.
Les ESB
Si SOA ne signifie pas forcément utilisation d’un ESB, le bus devient un élément central des architectures SOA complexes. Depuis 3 ans, l’offre n’a
cessé de se multiplier et aujourd’hui, l’offre open source rivalise souvent avec les outils commerciaux.
Début mai, 16 éditeurs oeuvrant dans les
outils SOA ont rallié SOA Link. L’initiative a
pour but de fournir des recommandations
pour assurer une bonne intéropérabilité
entre les outils des éditeurs adhérant au SOA
Link. Cependant, pour le moment, SOA Link
pâtit de l’absence des poids lourds :
Microsoft, IBM, BEA, Oracle. SOA Link vise le
cycle de vie SOA et la gouvernance.
En décembre dernier, plusieurs éditeurs,
dont IBM, BEA et Oracle, présentaient SCA
(Service Component Architecture). Cela signi-
fie que l’on découple totalement la construc-
tion de l’architecture du développement.
Bref, on développe indépendamment d’un
choix technique de déploiement comme c’est
le cas aujourd’hui. SCA sert dans les archi-
tectures SOA. On fournit ainsi une plus gran-
de liberté de choix aux responsables et
développeurs. Basiquement, SCA s’organise
en module qui contient des composants. Un
composant correspond à des fonctions que
l’on regroupe dans des services que l’on
décrit par une interface et possède des
contrats. Les promoteurs de SCA prévoient
de l’implémenter dans leurs outils.
Cependant, ce n’est pas une spécification, ni
un standard.
Il est à noter que chaque plate-forme définit
sa propre " organisation SOA ", ses propres
concepts. Côté Microsoft, on disposera du
Windows Communication Foundation et sur
Eclipse de SOA Tools Platform. Ce projet doit
apporter, à terme, un ensemble d’outils pour
créer des services, les gérer, les monitorer,
construire des architectures complexes.
La course à la spécification ?
p42-54 focus soa 18/05/06 18:29 Page 54
F
ocus P2P
55
Programmez n°87 juin 2006
Dans la première partie de notre dossier P2P , nous
n’avons qu’effleuré le marché réel de cette techno-
logie. L’explosion du contenu à la demande sur
Internet, le mobile, contribuent au développement
des solutions P2P. Les grandes entreprises s’inté-
ressent aussi à cette technologie permettant des
économies de déploiement gigantesques !
S
’il existe encore peu de sociétés spé-
cialisées dans le P2P, en France, on
possède plusieurs éditeurs proposant
des solutions et des services sur et autour du
P2P. Une des plus connues est Aelitis, fondée
par des développeurs du projet open source
Azerus, client P2P Java bien connu. La secon-
de, et très prometteuse, est Allpeers, dévelop-
pant un module Firefox pour utiliser le P2P
directement dans le navigateur et en propo-
sant un fonctionnement à la Skype, pour
mettre en relation des utilisateurs d’un même
réseau de contact… Aux Etats-Unis, une petite
dizaine de sociétés se développent sur le P2P.
Le marché sur le point d’exploser !
Même si les utilisateurs finaux ne s’en aperçoi-
vent pas toujours, le marché du P2P explose
de partout. En entreprise, il s’agit, par exemple,
de déployer ou de mettre les informations
internes sur plusieurs milliers de postes. Au
lieu d’utiliser des CD / DVD ou même un intra-
net, le P2P permet, sans augmenter la puis-
sance CPU de distribuer une grande masse de
données, à moindre coût. Avec la croissance du
contenu à la demande (vidéo, son, etc.) le P2P
constitue une technologie fiable et puissante
pour faire du streaming video à la demande, ou
charger un film, etc. sans pour autant surchar-
ger la bande passante et surtout, à un coût de
distribution très bas. Comme le précise, Olivier
Chalouhi (Aelitis), impossible de payer un film
à la demande 400 ou 500 fois le prix d’une
chanson… Dans les services de stockage en
ligne, par exemple, le P2P intervient aussi
pour accéder à son compte
et récupérer / transférer des
données. Dans les applica-
tions distribuées, le P2P a
aussi sa place. Surtout, de
plus en plus d’applications
vont embarquer des méca-
nismes de type P2P pour
faciliter les échanges de données (ex. : dans
un cadre collaboratif ).
Des éditeurs en pleine croissance
Le Français Aelitis propose deux types de ser-
vices : revente de la technologie à d’autres
sociétés (B2B), mise en place d’une solution
adaptée à la demande du client (B2C). " La
technologie est prête et les entreprises savent
ce qu’est le P2P, même si elles n’ont pas de
vision dessus. En entreprise, le P2P est adapté
aux volumes de données importants à distri-
buer. Le marché B2C est en pleine croissance. Il
n’y a pas de frein sur la technologie, mais sur le
manque de contenu " précise Olivier Chalouhi.
L’éditeur semble assez optimiste sur les années
à venir et sur la croissance du marché.
Allpeers, autre Français prometteur du marché,
propose une approche originale et plus que
prometteuse. Il s’agit, à partir d’un navigateur
Firefox, de détecter les membres d’un réseau
virtuel (= ses amis, connaissances, collabora-
teurs…), comme Skype le propose. Le module
s’appuie sur Bitorrent et aura une interface très
simple, avec un affichage du navigateur res-
semblant à Messenger. Le module, gratuit, sera
disponible sous Windows, MacOS X et Linux.
Le modèle économique ne devrait pas être la
publicité mais les services annexes. Cette
extension est en tout cas très attendue. La ver-
sion finale devrait sortir courant juin. Idéal
pour échanger de trop gros fichiers tout en évi-
tant de passer par du ftp. D’ailleurs Microsoft
propose un mécanisme identique avec l’outil
FolderShare (service de Windows Live), rache-
té il y a quelques mois. Cela peut ressembler
à ce que propose déjà Apple avec .Mac, des
services en ligne.
La notion de services à valeur ajoutée sera
sans aucun doute le point clé pour l’équilibre
financier.
Un avenir pour les développeurs ?
Si aux Etats-Unis quelques postes de dévelop-
peurs P2P existent, Olivier Chalouhi avoue
qu’il est encore trop tôt en France pour voir
apparaître ce genre d’offres d’emplois.
Cependant, à l’avenir, il sera possible de voir
quelques offres mentionnant des connais-
sances en technologies P2P.
Sites : Allpeers : www.allpeers.com
Aelitis : http://www.aelitis.com/
Foldershare : www.foldershare.com
s François Tonic
Le P2P chez les pros !
Microsoft débarque en force
2
e
partie
p55 p2p 18/05/06 18:33 Page 55
F
ocus P2P
56
Programmez n°87 juin 2006
Groove est une solution P2P hybride de travail
en équipe. Ce produit se base sur le concept des
bureaux virtuels.L’agencement et l’usage d’un bureau
virtuel sont fonction de sa finalité pour l’équipe qui l’utilise.
Groove Virtual Office :
Pour quels usages ?
N
ombreuses sont les solutions de tra-
vail collaboratif qui s’appuient sur des
outils de communication synchrones,
des espaces de stockage de documents ou des
applications partagées. Rares sont cependant
celles qui mutualisent l’ensemble de ces fonc-
tionnalités en une même et seule application.
Or, il s’agit là d’un minimum requis pour
qu’une équipe distribuée géographiquement
puisse virtuellement travailler. Au sein des
bureaux virtuels Groove, les collaborateurs
peuvent communiquer, partager des res-
sources et des outils. Ils disposent d’un envi-
ronnement modulable en fonction de leurs
prérogatives de groupe et des objectifs qu’ils
souhaitent concrétiser ensemble. On distingue-
ra trois catégories de fonctionnalités.
Collaborer efficacement en équipe
La première est indiscutablement nécessaire :
ce sont les outils de communication. Il s’agit
en premier lieu de la messagerie instantanée
interne à la solution, qui remplace l’e-mail, ne
souffre d’aucun SPAM et peut véhiculer tous
types d’informations (vocales, textuelles, docu-
mentaires, etc.). En second lieu, il s’agit de
moyens de communication tels que le Chat,
également multifonction (manuscrit, textuel,
audio, etc.), ou encore les forums. L’ensemble
de ces fonctions permet aux membres d’un
bureau virtuel d’échanger des données struc-
turées ou non, en direct, de personne à per-
sonne ou à l’échelle du groupe.
La seconde catégorie de fonctionnalités com-
prend une vingtaine d’outils, qui peuvent être
déployés, à la demande, dans un bureau vir-
tuel. Ils constituent l’une des premières
réponses qu’offre Groove à ceux qui souhaitent
travailler ensemble sur un sujet précis : gestion
de projet, CRM, séance de réflexion, etc. Ces
outils sont tous partagés à l’échelle d’un
bureau virtuel donné. Cette gamme compte des
outils tels qu’un agenda partagé, un gestion-
naire de tâches, un gestionnaire de contacts ou
un tableau blanc et peut être étendue si les uti-
lisateurs font l’acquisition d’outils additifs.
Enfin, la troisième catégorie est composée de
fonctionnalités spécifiques orientées utilisa-
teur, en adéquation avec le modèle P2P utilisé
par Groove. Les collaborateurs disposent des
mêmes ressources et, plus généralement, du
même niveau d’information, du fait de la syn-
chronisation automatique des données entre
leurs machines. Ils disposent également de la
possibilité de travailler en étant connecté ou
non, en temps réel ou asynchrone. La gestion
de la présence et les notifications de lecture
sont deux des caractéristiques de la solution
qui découlent directement du modèle P2P
hybride. Certaines fonctionnalités s’appuient
plus particulièrement sur la notion de dupli-
cation à l’identique de données : les liens
hypertextes internes à Groove, par exemple,
permettent de copier comme lien, toute infor-
mation de la plate-forme et faire pointer un
membre sur cette information.
Les cas d’usages sont aussi nombreux qu’il
existe de possibilités d’agencer un bureau vir-
tuel, mais ces trois catégories de fonctionnali-
tés contribuent à un travail collaboratif réel.
Elles incarnent les trois piliers fondamentaux
d’une collaboration réussie : le partage, la
communication et la prise en compte du fac-
teur humain.
Gérer des projets
Groove Virtual Office offre un panel large d’op-
portunités de travailler en équipe. Le mode
projet est naturellement privilégié par les utili-
sateurs de cette application, en ce sens qu’un
bureau virtuel est un environnement Ad Hoc
immédiatement disponible. Sa durée de vie
peut être variable suivant qu’il répond à
un besoin de longue ou courte durée. Du
mode projet à la gestion de projets, il n’y a
donc qu’un pas que franchit une grande majo-
rité des utilisateurs de Groove.
En effet, la plate-forme se prête aisément à cet
exercice, d’une part parce qu’elle fournit un
environnement propice au travail de personnes
complémentaires et, d’autre part, parce qu’elle
met à la disposition des utilisateurs les outils
fondamentaux dont ils ont besoin pour mener
leurs projets vers le succès. Citons en ce sens
l’outil Meetings et l’outil Tasks Manager.
Meetings offre la possibilité de planifier, mener
et acter des réunions consensuelles. Tasks
Manager, quant à lui, permet de répartir les
tâches d’un projet entre les membres d’un
bureau virtuel et d’autres intervenants exté-
rieurs, si nécessaire.
L’ordonnancement et le suivi en temps réel de
tâches sont deux des caractéristiques com-
munes aux outils Tasks Manager et
TeamDirection Project. Ce dernier n’est pas dis-
ponible en standard dans Groove; il peut être
acquis séparément ou dans le cadre de la ver-
sion project du produit. Cette solution présen-
te toutes les qualités d’un gestionnaire de pro-
jets classique : gestion de tâches, attributions
de ressources humaines, diagramme de Gantt,
etc. Elle est naturellement collaborative. En
s’interfaçant avec MS Project, elle ouvre de
multiples perspectives. La première est de sim-
plifier les processus de gestion par une
approche centrée sur les hommes et certaines
fonctionnalités clés, la seconde réside dans
l’opportunité donnée de gérer des projets de
manière macro ou microscopique. Enfin, et
cela peut être fort utile dans le cadre de tâches
personnelles, TeamDirection Project se syn-
chronise avec MS Outlook, en sus d’interagir
avec l’ensemble des autres outils de Groove.
p54/55 groove 18/05/06 18:36 Page 56
F
ocus P2P
57
Programmez n°87 juin 2006
Travailler en mobilité et/ou en déconnexion
Le protocole P2P hybride de Groove induit une
duplication des informations entre les diffé-
rents membres d’un bureau virtuel. La synchro-
nisation des données entre les postes clients
est automatique. Groove s’adapte, lorsqu’il en
détecte, aux bandes passantes disponibles
chez chacun des utilisateurs d’un même grou-
pe. Bénéfique à plus d’un titre aux utilisateurs
sédentaires mais géographiquement dispersés,
Groove ne l’est pas moins pour tous ceux qui
sont mobiles ou travaillent en déconnexion.
La redondance, la résilience et la persistance
des données sur postes garantissent aux per-
sonnes l’accès à leurs informations utiles, sans
avoir à se connecter à un réseau (Internet, LAN,
etc.). Elles peuvent aisément envoyer des mes-
sages, modifier et déposer des ressources docu-
mentaires ou contribuer à un forum. L’avantage
de cette solution apparaît évident : aucune
manipulation préalable d’import/export ou pro-
cessus de connexion spécifique ne sont néces-
saires pour collaborer en mode asynchrone.
L’adaptabilité de la plate-forme aux bandes
passantes disponibles, grâce au serveur relais
(le P2P de Groove peut être tour à tour pur ou
hybride), ainsi que la possibilité offerte aux
collaborateurs de déterminer le niveau et les
priorités de synchronisation de leurs machines
entre elles permettent aux personnels
nomades ou mobiles de continuer à travailler
en toute transparence. Ainsi, à titre d’exemple,
un ordinateur portable et une carte GPRS/EDGE
ou Wi-Fi suffisent à ce que les itinérants res-
tent productifs et informés lors de leurs dépla-
cements. Les commerciaux, les télétravailleurs
et les cadres dirigeants apprécient tout parti-
culièrement ces qualités de Groove.
Collaborer entre organisations distinctes
C’est un lieu commun : une organisation a
besoin, au quotidien, de travailler avec
d’autres structures, ses clients, ses fournis-
seurs, ses partenaires, etc. En conséquence,
des passerelles informatiques sont nécessaires
pour faciliter la communication et l’ouvrage
mutuel. Par défaut, les organisations utilisent
l’email et les systèmes hébergés (Extranet, FTP,
portails, etc.) pour travailler ensemble.
En implémentant Groove au sein de leur propre
structure mais également chez leurs collabora-
teurs extérieurs, les entreprises partagent un
environnement de travail collaboratif complet.
Les canaux d’Information sont connus, simples
et optimisés. Les fonctionnalités sont celles
dont ils ont un besoin opérationnel. Leurs res-
sources documentaires sont en lieu sûr et sont
toujours à jour. La mise en œuvre est rapide.
Plus important encore : la confiance numérique
s’applique. Cross-Firewall et hautement sécuri-
sé, Groove est le lien idéal entre les organisa-
tions qui souhaitent développer et capitaliser
sur leurs relations tout en protégeant leurs pro-
priétés intellectuelles.
Etendre la coopération vers la collaboration
Groove s’adresse à des populations de
moindre taille que celles qu’adressent les ser-
vices de portails, à vocation plus communau-
taire et coopérative. Si un bureau virtuel peut
rassembler un nombre quasi-illimité de colla-
borateurs, sa raison d’être réside dans sa
capacité à donner à une équipe de contribu-
teurs les moyens de leur action, ensemble, et
sur une thématique propre au groupe. Nous
l’observons : la majorité des équipes actives
dans un espace partagé n’excède que rarement
les 20 personnes. Groove Virtual Office répond
à ces attentes, mais n’exclut pas pour autant
une approche apparemment ambivalente où
coexisteraient la coopération et la collabora-
tion. Ouverte aux autres technologies, notam-
ment par l’intermédiaire des Web Services, la
solution a pour ambition d’apporter une réelle
valeur ajoutée aux systèmes d’information
existants dans les organisations.
Pour conclure…
L’architecture originale de Groove Virtual Office,
basée sur le P2P professionnel hybride, ouvre
de multiples perspectives, tant en terme d’usa-
ge utilisateurs qu’en terme d’architecture pure-
ment technique. C’est pourquoi de nom-
breuses équipes de collaborateurs de par le
monde exploitent ses qualités opérationnelles
pour travailler avec efficience et confiance,
ensemble. C’est également la raison qui justi-
fie l’intérêt porté par les DSI à ces technolo-
gies qui sont à la fois administrables, haute-
ment complémentaires et intégrables à des
systèmes plus classiques. Groove répond indé-
niablement aujourd’hui à de multiples attentes
des organisations.
s Fabrice BARBIN
fabrice.barbin@hommesetprocess.com
Responsable Technologies
http://www.hommesetprocess.com
s Cédric BOULLIER
cedric.boullier@hommesetprocess.com
Responsable Marketing & Communication
http://www.hommesetprocess.com
Unique distributeur officiel des technolo-
gies Groove (Groove Networks Inc /
Microsoft Corp) sur le territoire français,
Hommes & Process fournit des solutions
innovantes et des services d’optimisation
du travail en équipe. Retrouvez l’actualité
d’Hommes & Process sur http://blog.hom-
mesetprocess.com
Team Direction Project : un outil intégré à Groove Virtual Office dédié à la gestion de projets en équipe.
p54/55 groove 18/05/06 18:36 Page 57
F
ocus P2P
58
Programmez n°87 juin 2006
Des chercheurs
du laboratoire de Microsoft
travaillent actuellement
sur un projet P2P
révolutionnaire, Avalanche.
Avalanche : le projet P2P
en gestation chez Microsoft
I
l s'agit d'un projet industriel de grande
envergure : permettre de distribuer effica-
cement à l'échelle mondiale des correctifs,
sans pour autant qu'une demande trop forte
ne sature les serveurs (en cas de rustine cri-
tique à appliquer par exemple à tous les
Windows VISTA installés). Ce modèle serait
parfaitement adapté à la diffusion de patches
de taille importante, mais permettrait égale-
ment d'identifier clairement et individuelle-
ment chaque fichier circulant sur le réseau. Ce
dernier point est primordial : chaque acteur est
connu, et le contenu reçu par un client est
garanti comme étant strictement identique à
celui diffusé (Microsoft n'autorisera que la cir-
culation de fichiers estampillés DRM (Digital
Rights Management)).
A la manière de Bittorrent, Avalanche réalisera
l'échange de parties de fichiers, pesant au plus
un centième de l'ensemble, mais dont chacune
des constituantes enferme les informations
nécessaires pour récupérer "le reste". Le but
du jeu est de réduire la bande passante utilisée
en n'échangeant pas plusieurs fois le même
tronçon de données ; et le défi à relever est de
maintenir la disponibilité du service, même si
un des morceaux, qui ne serait partagé que par
quelques clients, n'était plus disponible (car les
clients sont arrivés au bout de leur télécharge-
ment et se sont déconnectés). Pour pallier ce
dernier inconvénient, les chercheurs de
Cambridge ont décidé d'encoder chaque tron-
çon de manière à ce que ceux-ci détiennent le
même poids, la même importance en terme de
reconstitution du fichier d'origine.
Une meilleure performance
Au départ, le problème posé est le suivant :
comment diffuser un patch à des millions de
clients sans que cette opération soit lente,
onéreuse et non adaptative à la charge ? Si
vous avez des ressources limitées (vous pos-
sédez un nombre fini de fermes de serveurs),
et que votre demande croit subitement de
manière non prévisible, la création d'un réseau
P2P permet de suivre cette demande de
manière linéaire. Plus vous avez de "clients"
et plus votre diffusion résistera linéairement à
la demande : avec ce modèle, vous ne craignez
plus l'effondrement du service, bien au
contraire, la charge engendre un effet positif.
Bref, chaque PC aide l'autre, chaque "client"
devenant un nouveau serveur, la capacité du
service augmente au fur et à mesure de la
charge et ce, à moindre coût.
Les bénéfices : augmentation drastique de la
vitesse, adaptation illimitée à la charge, coût
très faible, et mise à disposition d'un nombre
restreint de serveurs noeuds. Les inconvé-
nients : difficulté d'assurer à 100% un télé-
chargement sans interruption de service
(risque réel qu'au bout de x tronçons téléchar-
gés, le suivant soit momentanément indispo-
nible), difficulté de gestion du réseau en l'ab-
sence de véritable serveur central d'adminis-
tration, bande passante (de diffusion) variable
en fonction du nombre de clients (un pair "va
et vient" sans avertissement), besoin de
recourir à des algorithmes plus sophistiqués.
Le concept trouvé est un P2P swarming gran-
dement amélioré. Ouvrons une petite paren-
thèse pour expliquer ce terme. Le swarming est
la possibilité d'atteindre un but sans pour
autant qu'une entité supervise ou coordonne
l'ensemble des opérations. Il n'y a pas de "lea-
der" qui ordonne les actions de chacun. Au
contraire, le Swarming utilise des éléments
dynamiques discrets, aux ressources limitées,
dans le cadre d'un système distribué et décen-
tralisé. Le problème du comportement des
"pairs" d'un réseau P2P est trop complexe à
modéliser de manière classique, d'où le recours
au swarming. Le cahier des charges n'est plus
d'assurer 100% de connectivité, mais de tendre
vers les 100% (on part du principe qu'un petit
pourcentage d'échec est acceptable). Chaque
client Avalanche réclamera ses morceaux de
Un fichier DRMa pour but
de restreindre la diffusion par copie d'un
contenu numérique en vue de s'assurer
que les droits d'auteur ne sont pas
bafoués. Dans ce cadre, un fichier DRM
cadenasse par protection le contenu de
manière à, par exemple, limiter le nombre
de copies possibles sur différents sup-
ports, le nombre de lectures autorisées, la
durée d'écoute, etc.
Avec Avalanche chaque utilisateur reçoit des combinaisons et en génère de nouvelles à partir des don-
nées qu'il a déjà en sa possession.
P
h
o
t
o

:

©

L
a
r
r
y

W
i
l
l
i
a
m
s
/
z
e
f
a
/
C
o
r
b
i
s
p58-59 avalanche 18/05/06 18:34 Page 58
F
ocus P2P
manière linéaire (dans un ordre prédéterminé,
mais dynamique), et chacun de ceux-ci contien-
dra une sorte de combinaison "ADN" de l'en-
semble. Autrement dit, chaque tronçon télé-
chargé pourra se substituer à un autre, et pour
y parvenir, cet encodage ADN sera dynamique
et réactualisé en permanence. Pour reconstituer
le fichier d'origine, le client demandeur n'a
plus besoin de télécharger l'ensemble des par-
ties. Le temps de réencodage et de décodage
des parties a été calculé pour n'occuper que
4% du temps total de téléchargement. Plus
précisément, un Pentium III, cadencé à
650MHz, et équipé de 512 Mo de RAM, mettra
5 secondes pour réencoder 100 parties d'un
ensemble de 10 Mo. Et la même machine pren-
dra 3 minutes 38 secondes pour réencoder 100
blocs d'un ensemble de 200 Mo.
Avec cette technique, il se peut qu'au bout de
90% de données téléchargées, le peer soit
"bloqué" en attente d'un bloc, mais ce phé-
nomène sera moindre que dans le cas d'un
téléchargement P2P classique, car il n'aura
plus de bloc considéré comme "très rare".
D'après ses concepteurs, la vitesse obtenue au
final sera de 20 à 30% supérieure à un réseau
P2P classique comme celui de Bittorrent.
Si le serveur principal (celui qui détient à l'ori-
gine le fichier dans son ensemble) devient
inaccessible soudainement, mais qu'il a pu
déjà desservir chaque partie à seulement 10%
des clients, tous les utilisateurs pourront
reconstituer le fichier d'origine. Entre autres
améliorations, Avalanche utilise aussi un
concept de plus en plus répandu dans le P2P
qui est le téléchargement en parallèle.
Une nouvelle génération de P2P
En résumé, nous ne sommes peut-être pas loin
d'une révolution en matière de P2P. Grâce à ce
réencodage dynamique en ligne, cette tech-
nique améliorée de P2P swarming et de télé-
chargement en parallèle, il deviendra possible
de diffuser des parties d'un fichier de façon
organisée (suivant des combinaisons
linéaires). Ces constituantes s'accompagneront
d'un libellé décrivant les paramètres ("ADN")
nécessaires à la recomposition de l'ensemble.
Chaque utilisateur recevra des combinaisons et
en générera de nouvelles à partir des données
qu'il a déjà à sa disposition. Au final, un utili-
sateur n'aura pas besoin de la totalité des
fragments, mais de la totalité des combinai-
sons générées (chaque combinaison étant
indépendante d'une autre). Avalanche recons-
truira le fichier original à partir de ces combi-
naisons. C'est génial sur papier, mais pour
l'instant purement théorique (Bram Cohen,
créateur de BitTorrent, a qualifié Avalanche de
"vaporware" "dont la prétendue supériorité ne
serait basée que sur des simulations"). Les
sous-entendus techniques sont nombreux : par
exemple, peu importe si un des pairs qui
contenait au départ une partie se déconnecte,
cela n'entamera en rien les performances et la
diffusion des prochains blocs. En outre, la
bande passante est optimisée, vu que les frag-
ments ne sont plus distribués seuls, mais sui-
vant des combinaisons, aucun n'étant jugé pri-
mordial pour la reconstitution de l'ensemble.
Le risque de voir un téléchargement ne pas
aboutir existe encore mais est considérable-
ment réduit. C'est un peu trop beau pour être
vrai, mais à notre avis cela finira par aboutir,
tellement les avantages en milieu industriel
sont nombreux. Et les applications ne s'arrête-
ront pas à la distribution de patches : certains
imaginent déjà une possible utilisation dans le
cadre d'une location de film à la demande via
Internet. Et nous ne sommes sans doute plus
très loin du temps ou des API seront dispo-
nibles pour les développeurs. Les enjeux sont
trop énormes pour que Microsoft ne soutienne
pas cette voie.
s Xavier Leclercq - Xavier.Leclercq@programmez.com
Avalanche est plus robuste qu'un système P2P
classique.
TOUT NOUVEAU
TOUT BEAU
L’actu,
Les services,
L’interactivité,
Les Blogs,
Les archives du Magazine
www.programmez.com
P
h
o
t
o

:

©

L
a
r
r
y

W
i
l
l
i
a
m
s
/
z
e
f
a
/
C
o
r
b
i
s
p58-59 avalanche 18/05/06 18:34 Page 59
La technologie NX ou Execute Disable Bit est
censée empêcher que du code malveillant ne s’exécute
en profitant d’un " buffer overflow ".
Elle s’appuie à la fois sur le système d’exploitation et
sur une nouvelle fonction matérielle incluse
dans les processeurs.
Les nouvelles armes anti-virus NX et DEP.
P
our combler cette faille de sécurité (le
buffer overflow), une nouvelle techno-
logie nommée DEP (Data Execution
Prevention) a été mise au point il y a environ
deux ans. Cette technologie s’appuie sur deux
parties, l’une software, implantée directement
dans le système d’exploitation comme cela a
été le cas avec le Service Pack 2 de Windows
XP et l’autre matérielle, c'est-à-dire dans le
cœur même du processeur. Cette partie maté-
rielle se nomme NX pour No execute chez AMD
et Transmeta et Execute Disable Bit chez Intel.
Son but est simplement d’empêcher l’exécu-
tion de code lorsque celui-ci semble mal-
veillant.
Une granulation fine
au niveau de la page mémoire
Pour cela, on définit d’abord pour chaque pro-
cessus, des zones mémoires dans lesquelles le
code peut s’exécuter et des zones normale-
ment utilisées pour des données dans les-
quelles il ne le peut pas. Cela se fait en pla-
çant des marques sur les pages de mémoire
virtuelle en modifiant un bit de la PTE (Page
Table Entry). Ensuite, si une application tente
d’exécuter du code dans la page ainsi taguée,
le processeur stoppe aussitôt son exécution et
génère une exception. Celle-ci est alors récu-
pérée par le système d’exploitation qui peut la
traiter de plusieurs manières différentes. Il
peut soit simplement l’inscrire dans un fichier
de log, soit envoyer un message de violation
d’accès à l’intention de l’utilisateur, soit dans
les cas les plus graves rebooter directement
l’ordinateur. Cette méthode peut paraître vio-
lente, mais elle est préférable à une infection
virale puisqu’elle causera probablement moins
de dégâts. Pour que cette fonction soit utili-
sable, il faut que le processeur tourne en
mode PAE (Physical Adress Extension). Pour
l’heure, tous les processeurs ne disposent pas
encore de cette fonction, il faut vérifier auprès
des fondeurs.
Les quatre
commutateurs du DEP
Côté système d’exploitation maintenant, et
sous Windows XP SP2, la configuration du DEP
s’effectue à partir de quatre commutateurs pla-
cés dans le fichier boot.ini. C’est la valeur
OptIn qui est sélectionnée par défaut. Il est
possible pour des raisons de compatibilité, de
créer une liste d’applications qui ne seront pas
soumises au DEP en basculant sur le mode
OptOut. Cela se fait par le Panneau de confi-
guration/Performance et maintenance/Ajuster
les effets visuels (ça ne se devine pas !).
Sous l’onglet Prévention de l’exécution des
données, des boutons radios permettent de
sélectionner les modes OptIn ou OptOut et
d’établir la liste des applications qui ne seront
pas soumises au DEP. Cette fenêtre permet
également de vérifier si la fonction NX est pré-
sente, ou pas dans le processeur.
Problèmes avec
les compilateurs JIT et certains
pilotes de périphériques
Les applications qui ne supportent pas le DEP
sont en effet peu nombreuses. Il s’agit essen-
tiellement de celles qui génèrent du code de
manière dynamique, ce qui évidemment per-
turbe le système de protection. Parmi celles-ci,
il y a les compilateurs juste à temps et certains
pilotes de périphériques. Pour corriger ce pro-
blème, il suffira de donner une permission
explicite d’exécution au code qui a été généré.
Le développeur qui désire implémenter cette
fonction pourra déterminer si le processeur en
est capable en lisant simplement son CPUID.
En mode utilisateur, l’exception générée par le
DEP provoque une violation d’accès STA-
TUS_ACCESS_VIOLATION (0xc0000005). Le
premier paramètre ExceptionInformation de la
structure EXCEPTION_RECORD contient le type
de la violation d’accès qui a eu lieu et dans le
cas d’une violation d’exécution il prend la
valeur 8. Dans la majorité des processus, l’ex-
ception sera " unhandheld " et le résultat sera
simplement un arrêt du processus. En mode
Kernel, les différentes parties de la mémoire ne
peuvent pas être sélectivement activées ou
désactivées.
Sur la version 32 bits de Windows, le DEP s’ap-
plique seulement à la pile par défaut. Les
pilotes de périphériques n’ont plus le droit de
lancer l’exécution de code à partir de la pile
lorsque le DEP est activé et si cela se produit,
une violation d’accès déclenchera un reboot
(bugcheck) 0xFC: ATTEMPTED_EXECUTE_OF_
NOEXECUTE_MEMORY.
Ce nouveau couple NX/DEP ne représente pas
l’arme absolue, mais il devrait tout de même
empêcher un grand nombre d’infections virales
de se produire.
s Alain KERHUEL
T
echnologie
60
Programmez n°87 juin 2006
Par le Panneau de configuration, l’utilisateur peut
basculer du mode OptIn au Mode OptOut avec les
bouton radio et dans ce dernier mode, lister les
applications qui échapperont au DEP.
p60 work 18/05/06 18:36 Page 60

Offre limitée,
valable jusqu’au
30 juin 2006
Le renvoi du présent bul l eti n
i mpl i que pour l e souscri pteur
l'acceptation pleine et entière de
toutes les conditions de vente de
cette offre.
Conformément à la loi Informatique
et Li bertés du 05/01/78, vous
disposez d'un droit d'accès et de
rectification aux données vous
concernant.
Par notre i ntermédi ai re, vous
pouvez être amené à recevoir des
propositions d'autres sociétés ou
associations.
Si vous ne le souhaitez pas, il vous
suff i t de nous écri re en nous
précisant toutes vos coordonnées.
P
R
O
G

8
7
s M. s Mme s Mlle Entreprise : ........................................................................................ Fonction : ...................................................
Nom : ........................................................................................ Prénom :....................................................................................................................................
Adresse : .........................................................................................................................................................................................................................................
Code postal : ............................................... Ville : ...................................................................................................................................................................
Tél : ........................................................................................ E-mail : ....................................................................................................................................
s Je joins mon règlement par chèque à l’ordre de Programmez !
s Je souhaite régler à réception de facture
A remplir et retourner sous enveloppe affranchie à :
Programmez ! - Service Abonnements - 22 rue René Boulanger - 75010 Paris.
abonnements.programmez@groupe-gli.com
LE MAGAZI NE DU DÉVELOPPEMENT
Le magazine qui parle votre langage
-
3
1
%
OFFRES
45

seulement !
(Prix pour la France Métropolitaine)
39€
(Prix pour la France Métropolitaine)
Au lieu de 65 €, prix de vente au numéro.
s ABONNEMENT 1 an (11 numéros) au prix de 45 € TTC. Tarif France métropolitaine.
Tarifs hors France métropolitaine : CEE et Suisse : 51,83 € - Algérie, Maroc, Tunisie : 55,95 € - Canada : 64,33 € - Tom : 79,61 € - Dom: 62,84 € - Autres : nous consulter
s OFFRE ÉTUDIANT 1 an (11 numéros) au prix de 39 € TTC. Offre limitée à la France métropolitaine.
Photocopie de la carte d’étudiant obligatoire

Un an de veille technologique et d’information
permanente, en bénéficiant de
Ne manquez
plus aucun
numéro,
abonnez-vous
aujourd’hui !
20,45 €
d’ ÉCONOMIE
OUI, je m’abonne ! ou abonnement en ligne : www.programmez.com
SPÉCIALES :
• ÉTUDIANTS :
joignez à votre abonnement la photocopie de votre carte d’étudiant
(abonnement par voie postale)
• ÉQUIPES :
à partir de 3 abonnements dans la même société : abonnement en ligne obligatoire
En ligne
www.programmez.com
3
Numéros GRATUITS
p60 work 18/05/06 18:37 Page 61
T
echnologie
62
Programmez n°87 juin 2006
W
indows Workflow Foundation (WF) fait partie intégrante de
WinFX, au même titre que Windows Presentation Foundation
(WPF), Windows Communication Foundation (WCF) et WinFS
(le futur système de stockage qui tarde à apparaître, ndlr). WinFX est, à
l’heure actuelle, en version Bêta, mais sera disponible lors de la sortie
d’Office 2007 prévue pour la fin de cette année (disponibilité non enco-
re confirmée, ndlr). Cependant, une licence Go-live permet l’utilisation
immédiate de WF et de WCF en environnement de production, et garan-
tit que Microsoft n’apportera plus de gros changements dans les mois
qui viennent.
Contrairement à un produit comme Biztalk Server, Workflow Foundation
se présente comme une brique applicative venant se greffer directement
au cœur de vos applications.
A la différence des solutions déjà existantes sur le marché, le workflow
ne dépend pas d’un produit ou d’un serveur pour fonctionner, il sera
partie intégrante de votre application. Un workflow WF s’exécute donc
dans votre application, que ce soit une application console, un service
Windows, ou une application web. Microsoft fournit juste le " bas
niveau " et non un environnement complet. Pour rappel, un workflow
est un ensemble d’actions ou étapes s’exécutant dans un ordre prédé-
fini. Ces actions peuvent s’enchaîner en fonction de conditions, d’inter-
actions avec des processus informatiques ou en fonction d’interactions
humaines.
Dans Workflow Foundation, ces étapes sont représentées par des com-
posants appelés " activités ". Microsoft en fournit par défaut plus d’une
trentaine : exécution de code, boucles et condition, appel de services
Web, de workflow ou de méthodes externes, timer, gestion de transac-
tions et d’erreurs… Vous pouvez très facilement compléter cette liste
avec vos propres activités, le développement de celles-ci étant globale-
ment similaire au développement de composants .NET : héritage d’une
classe de base, et surcharge de méthodes.
Plusieurs modèles de workflow
Workflow Foundation propose deux types de workflows : procédural ou
événementiel. Les premiers sont dits séquentiels ou de flux, dans les-
quels vous allez décrire votre processus par un enchaînement prédéfini
(une logique de navigation de pages Web, une suite d’exécution d’appli-
cations externes…). Les workflows événementiels sont des automates à
états finis, plus utiles lors d’interactions humaines (comme le suivi d’une
commande).
Dans un automate à états finis, l’enchaînement des opérations n’est pas
déterministe, le workflow est composé de l’ensemble des états possibles
ainsi que des règles de transition d’un état à l’autre.
Services additionnels au moteur de Workflow
WF s’exécutant dans vos applications, vous allez devoir guider le moteur
de workflow pour qu’il s’adapte à votre mode de fonctionnement. Pour
ce faire, vous pouvez remplacer ou ajouter des services techniques dans
le moteur de workflow.
De manière similaire aux providers d’ASP.NET 2.0, ces services suivent
un modèle de développement extensible.
Par exemple, pour assurer un suivi complet du cheminement d’exécution
de vos workflows, une API est présente dans le SDK. Pour fonctionner,
celle-ci a besoin d’un service dit de " tracking ", que vous allez devoir
activer. Cette activation peut se faire, soit de manière impérative dans le
code de votre workflow, soit de manière déclarative dans un fichier de
configuration.
De base, un service de gestion de tracking en base SQL est fourni, mais
ce modèle étant complètement extensible, vous allez pouvoir écrire, uti-
liser et faire évoluer dans le temps vos propres services sans impact
direct sur le fonctionnement de votre workflow. Parmi les services les
plus utiles, en plus de la gestion de suivi, on retrouve un service de per-
sistance qui permet d’assurer la reprise des workflows en cas d’incident
directement à un état préalablement enregistré, et un service de com-
munication utilisé pour permettre à l’application hôte de pouvoir échan-
ger des informations avec vos workflows.
Définition de workflow
Pour pouvoir modéliser un workflow avec Visual Studio 2005, deux pré
requis sont nécessaires :
- Avoir WinFX installé sur le poste de développement,
- Installer les extensions de Visual Studio 2005 pour Windows Workflow
Foundation.
Un exemple de création de workflow
Pour illustrer notre propos, imaginons un workflow de validation de
création de compte utilisateur dans lequel un site web comporte une
inscription en ligne.
Lors de l’enregistrement d’une personne, celle-ci reçoit un Email de vali-
dation contenant un lien, et lorsqu’elle clique sur celui-ci, son compte
est validé. Si au bout de 5 jours, elle n’a pas cliqué sur le lien, un e-mail
de notification est ré-envoyé et le compte est supprimé. La nécessité de
modéliser un workflow est tout à fait adaptée à ce genre de cas.
Visual Studio 2005 propose plusieurs templates de base :
- Sequential Workflow Library, une DLL qui contiendra des workflows
qui pourront être exécutés/hébergés par une application tierce (appli-
cation Windows, service, application Web...).
Windows Workflow Foundation :
une machine à flux
D’ici la fin de l’année, Microsoft mettra à la disposition des développeurs Windows
Workflow Foundation, une solution gratuite pour faciliter l’intégration de workflows dans
leurs applications .NET.
p60 work 18/05/06 18:37 Page 62
T
echnologie
63
Programmez n°87 juin 2006
- State Machine Workflow Library, identique à la version séquentielle,
mais pour des automates à états.
- Sequential Workflow Console Application, qui permet de créer une
application console qui vous permettra de créer vos workflows et de
les héberger.
- State Machine Console Application, pour modéliser des workflows en
tant qu’ automates à états hébergés dans une application console.
- Workflow Activity Library, pour définir vos propres composants.
- Empty Workflow Project, un projet vierge permettant de réaliser vos
projets selon vos besoins.
Dans notre cas, l’automate à états semble le plus adapté, les différents
états étant : " demande de création de compte " >> " compte créé " >>
" fin ", sachant que pour passer de l’étape " compte créé " à l’étape
" fin ", le compte utilisateur doit être validé dans un certain intervalle
de temps, sous peine d’être supprimé.
Une fois le modèle d’automate à états sélectionné, Visual Studio ouvre
un designer permettant de déposer les différentes activités dans le but
de définir le cycle d’exécution de notre workflow.
Il est à noter qu’un workflow peut être décrit de plusieurs façons : soit
de manière uniquement déclarative dans un fichier XOML, soit de maniè-
re mixte déclarative (XOML) / impérative (C#/VB), soit uniquement de
façon impérative. Dans notre cas, le workflow est défini uniquement par
code et représenté par une classe éclatée dans deux fichiers, un pour
le designer et un pour le code utilisateur (comme pour une application
winforms).
La première étape est donc, en mode design, de glisser/déposer les dif-
férentes activités représentant notre workflow, de la boîte à outils vers
le designer. Chaque étape étant constituée d’un enchaînement d’activi-
tés, il est nécessaire de détailler les actions à entreprendre avant, pen-
dant et après leur exécution.
Notre première activité va permettre de démarrer une instance de work-
flow, c'est-à-dire d’initialiser un cycle d’exécution. Si dix utilisateurs
demandent chacun l’exécution de cette activité, nous aurons dix ins-
tances de workflow en parallèle en mémoire, ces workflows pouvant
être persistés dans une base de données et déchargés de la mémoire,
via le service de persistance que nous avons abordé précédemment,
s’ils sont inactifs durant un temps trop important (ceci, dans le but de
préserver les ressources mémoire de votre serveur).
Il est donc nécessaire, dès le début, de définir la méthode de commu-
nication entre le workflow et l’application utilisatrice en définissant un
contrat. Deux méthodes sont courantes :
- soit en définissant un service d’échange de données représenté par
une classe de données et des gestionnaires d’évènements, également
appelés " handlers "
- soit en utilisant des services Web (et dans ce cas en utilisant IIS pour
héberger le workflow).
- Soit à terme, en utilisant Windows Communication Foundation
Dans notre cas, nous allons utiliser les services Web qui permettent une
interaction facile et une communication simplifiée avec tout type d’ap-
plication.
Il nous faut, au préalable, définir les méthodes utilisées par notre workflow :
namespace WorkflowLibrary1
{
public interface ICommunication
{
Guid DemandeCreation(string nom, string email);
bool DemandeValidation(string instance);
}
}
Notre contrat de communication étant défini, il ne reste plus qu’à l’in-
tégrer dans notre automate à états, pour permettre le passage d’une
étape à une autre.
Dans chaque étape, nous allons donc rajouter des activités de type
"EventDriven" afin de créer / réveiller nos instances de workflow en
fonction d’un évènement précis, dans notre cas, le fait que le service
Web soit appelé par une application.
Chaque activité EventDriven est un mini workflow séquentiel, commen-
çant par une activité d’écoute et se terminant par une activité de chan-
gement d’état.
Par exemple, dans notre EventDriven de demande de création de comp-
te, nous allons obtenir la séquence suivante :
• Une activité représentant le service web qui écoute (la signature de
celui-ci étant définie dans l’interface précédent, par la méthode
"DemandeCréation"), va récupérer le nom et l’Email du demandeur
puis les stocker dans des variables de l’instance.
• Une activité de code qui va donc exécuter une méthode .NET qui crée-
ra le compte, par exemple.
p60 work 18/05/06 18:37 Page 63
T
echnologie
64
Programmez n°87 juin 2006
• Une activité représentant la réponse du service web, toujours en fonc-
tion de sa signature (ici on retourne l’identifiant unique " guid "
représentant l’instance en cours).
• Et une activité de changement d’état, afin de passer à l’étape suivante.
Toutes les étapes d’un automate à états vont
ainsi pouvoir être détaillées avec des traite-
ments plus ou moins complexes, afin d’obtenir
le schéma d’exécution global du workflow.
Une fois la modélisation de l’automate à états
terminée, et la DLL de cette dernière compilée,
il nous reste à publier et héberger celle-ci.
Etant donné que nous utilisons des services
web pour communiquer, il devient évident d’uti-
liser une application web pour héberger notre
workflow. Visual Studio 2005 est d’ailleurs
capable de créer automatiquement cette appli-
cation web, en faisant un clic droit sur la DLL
contenant le workflow, et en sélectionnant l’op-
tion " Publish as Web Service ". Celle-ci va créer
automatiquement l’application web, la préconfi-
gurer (web.config) et créer les différents services
web utilisés par notre workflow.
Notre workflow peut ainsi être testé directe-
ment depuis un navigateur web en appelant
les services web : un premier appel pour créer
une instance de workflow en spécifiant un nom
et un prénom, et un deuxième appel pour vali-
der la création.
Attention toutefois, une application web ayant
une durée de vie limitée, elle peut s’arrêter en
cas de non utilisation suivant le paramétrage
qui aura été effectué sur le serveur Web. Nos
instances de workflow étant chargées en
mémoire de la dite application, il est nécessai-
re de prévoir un système de persistance afin
de gérer le chargement / déchargement de nos
instances dans une base de données ou un
fichier. Par défaut, un service de persistance pour SQL Server est four-
ni, il ne reste donc plus qu’à l’activer.
Cette activation se déroule en deux étapes :
- Préparer une base de données, SQLExpress ou SQLServer 2000/2005
en exécutant les scripts de création de schéma fournis et présents dans
le répertoire " C:\Windows\WinFX\3.0\Windows Workflow
Foundation\SQL\EN ".
- Paramétrer l’application web pour activer la persistance, au niveau du
fichier de configuration " Web.config ".
Par exemple, pour une base SQLExpress, le paramétrage sera le suivant :
<configuration>
<configSections>
[….]
</configSections>
<WorkflowRuntime Name="WorkflowServiceContainer">
<Services>
<add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistence
Service, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" connectionString="Data Source
=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Inte
grated Security=True;User Instance=True"
UnloadOnIdle="True" LoadIntervalSeconds="1"/>
</Services>
</WorkflowRuntime>
[….]
</configuration>
Nous nous contenterons ici d’activer un service, de type
"SqlWorkflowPersistenceService" utilisant une base SQLExpress locale,
persistant à chaque fois que le workflow devient inactif (UnloadOnIdle)
et se mettant à jour toutes les secondes. Si vous ne possédez pas
SQLExpress ou SQL Server, il est possible de créer votre propre service
de persistance qui irait écrire l’état des workflows dans une base de
données Oracle ou MySql, ou bien sur le système de fichiers du serveur.
A ce niveau, notre workflow est défini, hébergé et fourni des services
web consommables par tout type d’application. Il ne resterait plus main-
tenant qu’à écrire l’application qui appellerait notre service Web, pour
activer notre workflow depuis n’importe où dans le monde.
Conclusion
Windows Workflow Foundation offre donc un modèle de développement
de workflows applicatifs, rapide à mettre en œuvre et surtout totale-
ment extensible par le développement de vos propres activités ou de
vos propres services. Microsoft l’utilisera d’ailleurs dans Office System
2007 et notamment, Windows SharePoint Services v3 et Office
SharePoint Server 2007, ainsi que dans les prochaines versions de
Biztalk Server.
Ressources
Site officiel, en anglais: www.windowsworkflow.net
Site communautaire, en Français: http://www.workflow-foundation.com
Florent SANTIN et Stéphane CORDONNIER
p60 work 18/05/06 18:37 Page 64
G
lassFish est avant tout un serveur d’application open source pre-
nant en charge toutes les spécifications Java EE 5. Il permet déjà
de tester toutes les nouveautés de Java EE 5 en avant-première.
Bien sûr, celles-ci ne sont pas encore entièrement finalisées et il y a des
risques que les applications créées actuellement pour Java EE 5 ne fonc-
tionnent plus si les spécifications viennent à être modifiées. Ce n’est pas
le seul serveur d’application open source, mais c’est un des seuls à
avoir très vite permis de tester les nouveautés de Java EE 5. Toutes les
entreprises qui souhaitent migrer vers cette nouvelle spécification ont
ainsi l’occasion de pouvoir commencer toute une série de tests afin de
faciliter la future évolution de leurs applications.
Support pour Java EE 5
Java EE 5 est une étape majeure pour l’édition entreprise de Java. On
notera plus particulièrement l’arrivée très attendue d’EJB 3 qui va per-
mettre de simplifier l’utilisation d’EJB, jusque-là très complexe. La pos-
sibilité d’avoir une implémentation de Java EE 5 est le meilleur moyen
d’avoir un retour des utilisateurs. Cela permet de tester, d’améliorer les
spécifications de Java EE 5 avant leur finalisation. A l’heure actuelle,
GlassFish supporte déjà les spécifications : JSF 1.2, JSP 2.1 et les Servlet
2.5. GlassFish est disponible pour les plates-formes Windows, Linux,
Mac OS X et SunOS, ce qui permet d’élargir au maximum le champ de
testeurs.
Toute une série de tests sera disponible prochainement : la Java EE 5
Compatibility Test Suite (CTS). La version actuelle destinée à J2EE 1.4
contient plus de 5 000 tests et il est prévu d’en avoir plus encore pour
Java EE 5. Cette suite de tests est très importante, c’est elle qui va per-
mettre de vérifier que le code du serveur est conforme aux spécifica-
tions et qu’il n’y a aucun bug.
Une " javadoc " pour le projet est disponible à l’adresse :
https://glassfish.dev.java.net/nonav/javaee5/api/s1as-javadocs/index.html
Ouverture du code
Sun poursuit sa politique d’ouverture du code en permettant à la com-
munauté de reprendre le code source de son serveur d’application : Sun
Java System Application Server Platform Edition 9. GlassFish figure parmi
les nombreux projets open source hébergés sur java.net. Oracle contri-
bue également à l’effort en fournissant le code de TopLink, une archi-
tecture permettant de prendre en charge la persistance des données en
objet-relationnel. Ceci permet à la fois de construire une application sur
une base solide mais aussi de pouvoir faire évoluer ce code, " fermé "
jusqu’alors. Ainsi, tout le monde peut apporter sa contribution en pré-
venant dès la découverte d’un bug ou, encore mieux, en soumettant
directement un patch.
Cette ouverture de code se faisant sous licence CDDL
(http://www.sun.com/cddl/CDDL_why_details.html), elle permet de voir,
d’utiliser et de modifier le code de GlassFish, puis de le distribuer ou
de l’utiliser en production. Par contre, dans le cas où il y a redistribu-
tion du code après modification, il faut s’assurer que le serveur passe
encore tous les tests de compatibilité.
GlassFish en pratique
Installation et lancement
Attention : il est nécessaire de disposer de J2SE 5 pour pouvoir instal-
ler et exécuter GlassFish. Cette version de Java se télécharge à l’adres-
se suivante : http://java.sun.com/j2se/1.5.0/download.jsp
Le téléchargement de GlassFish se fait, quant à lui, à partir de l’adres-
se suivante :
https://glassfish.dev.java.net/public/downloadsindex.html
Pour avoir une version stable, choisissez une " Milestone builds ". Il
s’agit d’une étape majeure dans le développement de GlassFish : c’est
une version qui a été testée, à l’inverse d’une " nightly build " qui vient
d’être compilée et dont la stabilité n’a pas été vérifiée.
La suite de cet article est basée sur la version " GlassFish Project -
Milestone 5 - b32g " qui peut être téléchargé à l’adresse suivante :
https://glassfish.dev.java.net/downloads/12Feb06.html
Une fois le fichier jar téléchargé, exécutez la commande :
java -Xmx256m -jar filename.jar
Cela va créer un nouveau répertoire nommé " glassfish ". Ce répertoire
contient le code source de GlassFish ainsi qu’Ant (http://ant.apache.org/),
un programme qui permet de compiler le projet.
cd glassfish
ant -f setup.xml
A la fin de l’exécution d’Ant il doit y avoir un message : " BUILD SUC-
CESSFUL ".
Le serveur est maintenant prêt à être lancé. Pour cela, rendez-vous dans
le répertoire " bin " et exécutez la commande :
asadmin start-domain domain1
A la fin de la commande, le message " Domain domain1 is ready to
receive client requests. Additional services are being started in the back-
ground. " doit apparaître.
Pour vérifier que le serveur fonctionne bien, rendez-vous à l’adresse :
http://localhost:8080/
GlassFish
Serveur d’applications Java EE 5
Le projet GlassFish a été lancé en juin 2005 par Sun dans le but de créer un serveur d’appli-
cation Open Source qui soit développé par la communauté. Ce projet s’inscrit dans la politique
de Sun : être proche du client, à son écoute, prêt à réagir pour tenir compte de ses remarques
et être toujours en accord avec ses besoins.
P
ratique
Niveau
j2ee
facile avancé expert
65
Programmez n°87 juin 2006
p65/67 GlassFish 18/05/06 18:39 Page 65
Vous devriez voir apparaître la fenêtre :
Configuration et déploiement
La configuration du serveur se fait via une interface Web accessible à
l’adresse http://localhost:4848
Par défaut, le compte admin du domaine est :
Login : admin
Pass : adminadmin
Cette application d’administration rappelle celle de Sun Application
Server. La page principale permet d’accéder aux tâches les plus cou-
rantes, telles que :
• Voir les logs,
• Déployer un ear/war,
• Créer un connecteur JDBC,
Si vous souhaitez changer le mot de passe administrateur ou créer
d’autres comptes, rendez-vous dans la partie " Application Server " et
cliquez sur " Password ".
À partir de cette page, il est possible de modifier le mot de passe du
compte actuel, ou de créer de nouveaux utilisateurs.
Tout ce qui est configuration du serveur se passe exactement comme
pour le serveur " Sun Java System Application Server Platform Edition 9".
La documentation de Glassfish renvoie d’ailleurs vers celle de Sun.
Pour déployer une application, il suffit de se rendre dans la partie
"Application Server" (sur la gauche) puis de cliquer sur " Enterprise
Application ".
A partir de là, il est possible de préciser quel fichier ear vous souhaitez
déployer.
NetBeans
Netbeans 5.5 permet d’utiliser un serveur d’application Java EE 5 et plus
précisément GlassFish. Cette version de Netbeans n’est pas encore fina-
lisée, mais elle peut être installée.
Configuration
Nous allons voir comment configurer Netbeans pour utiliser GlassFish et
comment créer une application J2EE 5 sous NetBeans.
Dans NetBeans, sélectionnez le menu " Tools > Server Manager ".
Dans la fenêtre qui apparaît, ajoutez un nouveau
serveur en cliquant sur " Add Server ".
Pour le champ " Server ", choisissez " Sun Java System Application
Server ". Puis, il suffit de renseigner le répertoire dans lequel est ins-
tallé GlassFish. Enfin, la dernière fenêtre vous demande le login et le
pass admin de l’administrateur du domaine.
Projet – HelloWorld
Maintenant que GlassFish est configuré, nous allons créer un nouveau
projet. Pour cela, sélectionnez le menu " File > New Project " et choi-
sissez " Enterprise > Enterprise Application ".
Puis dans le champ " Server ", sélectionnez le serveur GlassFish que
nous avons configuré précédemment. Pour la version de J2EE il faut
choisir " Java EE 5 ".
EJB Session
Nous allons créer un EJB Session. Pour cela, faites un clic droit sur le
module EJB puis " New > Session Bean… ". Le bean se nommera
"HelloBean", il sera de type " Remote " uniquement et doit se trouver
dans le package " com.labosun ".
Voici le code des 2 fichiers Java :
HelloWorldRemote.java
package com.labosun;
public interface HelloWorldRemote {
public String sayHello();
}
HelloWorldBean.java
package com.labosun;
P
ratique
Niveau
j2ee
facile avancé expert
66
Programmez n°87 juin 2006
p65/67 GlassFish 18/05/06 18:39 Page 66
import javax.ejb.*;
@Stateless()
public class HelloWorldBean implements com.labosun.HelloWorldRemote {
public String sayHello() {
return "Hello World";
}
}
Remarquez l’utilisation de l’annotation " @Stateless() " qui permet de
préciser le type du bean (ici, un Session Bean Stateless).
Web Module
Pour que la partie Web utilise notre module EJB, il est nécessaire d’ajou-
ter le module EJB en tant que librairie du module Web. Dans le modu-
le Web, faites clic-droit sur le répertoire "Libraries", puis "Add Library".
Il faut ensuite sélectionner le module EJB du projet.
Nous allons utiliser JSF (Java Server Faces) pour
créer une page Web capable d’utiliser notre
Session Bean. Il faut configurer le projet pour qu’il
utilise JSF. Pour cela, faites un clic-droit sur le
module Web puis " Properties ". Cliquez sur
"Frameworks" puis " Add ", choisissez " Java
Server Faces ". Cela va automatiquement créer le
fichier " faces-config.xml " qui sert à configurer
JSF et une page JSF nommée " WelcomeJSF.jsp ".
Nous allons maintenant créer un JavaBean pour interagir avec le Session
Bean. Pour cela, faites clic-droit sur le module Web puis " New >
File/Folder ", choisissez ensuite " Web > JSF Managed Bean ". Nous
allons nommer notre bean " HelloBean ", que nous placerons dans le
package " com.labosun.beans ".
Pour que ce JavaBean utilise
notre Session Bean, nous allons
ajouter un champ de type
"HelloWorldRemote" qui va
automatiquement être instancié
en tant que Session Bean grâce
à l’annotation " @EJB() " (prin-
cipe d’injection).
HelloBean.java
package com.labosun.beans;
import com.labosun.HelloWorldRemote;
import javax.ejb.EJB;
public class HelloBean {
@EJB() HelloWorldRemote hello;
public HelloBean() {
}
public String getHello() {
return hello.sayHello();
}
}
Une fois que le bean est créé, il ne nous reste plus qu’à modifier la page
" welcomeJSF " pour utiliser ce bean.
Pour cela, ajoutez-y la ligne :
<h :outputText value="#{HelloBean.hello}" />
Cette ligne insert un composant graphique (type Label) dans la page JSF.
La valeur affectée à ce composant est le résultat de l’appel à la métho-
de hello() de l’EJB précédemment injecté dans le Managed Bean.
Voici la page JSF (welcomeJSF.jsp), telle que vous devriez l’avoir :
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<f:view>
<h1><h:outputText value="Java Server Faces" /></h1>
<h:outputText value="#{HelloBean.hello}"/>
</f:view>
</body>
</html>
Lancement de l’application
Le projet est maintenant prêt à être lancé. Allez dans le menu " Run >
Run Main Project " pour exécuter le projet. Cela va automatiquement
ouvrir votre navigateur par défaut sur la page " index.jsf ". À partir de
celle-ci, il vous suffit de cliquer sur le lien " Java Server Faces Welcome
Page " qui va vous amener sur le page " welcomeJSF ".
Conclusion
Nous avons mis en place un environnement de développement vous
permettant de vous initier à Java EE 5. Cette nouvelle spécification, tout
juste officiellement disponible, se veut prometteuse et proche de la
communauté. L’engouement pour Java EE 5 est une réalité. D’autres
compagnies Open-Source et propriétaires travaillent déjà sur Java EE 5 :
JBoss AS (www.jboss.com), Oracle AS (www.oracle.com), Weblogic
(www.bea.com) …
Site officiel du projet : https://glassfish.dev.java.net
s Olivier SMEDILE et Cyril JOUI du Laboratoire SUPINFO des technolo-
gies SUN (www.labo-sun.com)
P
ratique
Niveau
j2ee
facile avancé expert
67
Programmez n°87 juin 2006
p65/67 GlassFish 18/05/06 18:39 Page 67
S
i vous êtes à la fois partisans de Java et de l'Open Source, vous
vous devez d'aller visiter le site Java.Net (http://www.java.net).
Vous y trouverez une quantité innombrable de projets très inté-
ressants. Nous nous intéressons aujourd'hui à Swingx qui est un projet
de développement de composants évolués basés sur les composants
Swing. Il a été un temps question que ces nouveaux composants soient
intégrés à Java Mustang. Finalement ? il semble que ce ne sera pas le
cas, même si la nouvelle JTable se voit enrichie de fonctionnalités de tri
inspirées de la JXTable de Swingx. Quoi qu'il en soit, c'est un jeu d'en-
fant d'utiliser ces composants de la même manière que les composants
Swing. Nous allons montrer comment procéder sous Netbeans 4.1. Au
moment où vous lirez ces lignes, Netbeans 5 sera disponible. Ce que
nous disons dans cet article restera valable, hormis peut être quelques
points de détails. Enfin, si vous utilisez un outil totalement différent
comme JBuilder, il ne devrait pas vous être difficile d'adapter les indi-
cations fournies, car un composant Swingx est avant tout un JavaBean,
comme le sont aussi les composants Swing. Or les outils de conception
visuels manipulent des JavaBeans sans se soucier de leur origine.
Télécharger et compiler
le projet Swingx
Le projet est accessible en CVS. Vous devez commencer par créer un
login (opération gratuite qui n'engage à rien) sur le site Java.Net.
Ensuite, vous devez configurer votre utilitaire CVS, ce qui sous Netbeans
se fait ainsi: Allez dans le menu Versioning|CVS, puis choisissez 'Check
Out'. Passez éventuellement une petite boîte de dialogue d'information
pour arriver à la boîte de dialogue de configuration CVS proprement
dite. Renseignez les champs ainsi :
Nom du champ Information
Working Directory un-repertoire-de-votre-disque
CVS Server Type pserver
CVS Server Name cvs.dev.java.net
Port 2401
User Name Votre nom de login Java.Net
Repository Path /cvs
Use Built-In CVS Client Coché
Password Votre mot de passe de login Java.Net
Cliquer ensuite sur le bouton 'Login'
Module(s) Coché
Donner swingx dans le champ de saisie en face.
Cliquez enfin sur le bouton Ok et patientez pendant que tout le projet
est transféré sur votre disque dur. Après cela, ouvrez le projet (Open
Project) swingx que vous trouverez sous le répertoire précédemment
donné à 'Working Directory'. Compilez le projet. Vous obtenez alors une
archive Jar contenant tous les composants Swingx. Vous trouverez cette
1
archive sous le répertoire dist du projet, comme il est d'usage sous
Netbeans. Cette opération de compilation est naturelle car le projet
Swingx est lui même écrit sous Netbeans. Si vous n'utilisez pas
Netbeans, cela reste facile car les projets sont basés sur ANT. Installez
ANT sur votre machine (http://ant.apache.org/) et compilez la cible pro-
jet du fichier build-impl.xml.
Créer un projet utilisant Swingx
Une seule condition est requise pour utiliser les composants
Swingx : les classes doivent être pointées par le CLASSPATH. Créez
d'abord un projet de type Application Java qui vous servira à faire vos
essais. Ensuite, allez dans les propriétés du projet, puis sélectionnez
'Libraries'. A ce stade, cliquez sur le bouton 'Add JAR/Folder', puis allez
pointer l'archive Jar de Swingx, localisée sous le projet Swingx comme
nous l'avons dit. Tout être prêt. Nous pourrions commencer à écrire du
code, mais nous allons d'abord faire mieux.
Intégrer les composants Swingx
à la palette
Tout comme les composants Swing, les composants Swingx sont des
JavaBeans avant toute chose, c'est-à-dire des classes écrites en respec-
tant des règles déterminées. Les outils qui manipulent les beans s'ap-
puient sur ces règles et sur la réflexion de Java pour analyser les com-
posants (propriétés contraintes, indexées, etc.) Un bean peut encore
implémenter l'interface java.beans.BeanInfo, afin de renseigner explicite-
ment sur ses caractéristiques. Dernière possibilité, la classe du bean,
supposons-la nommée LeBean, peut être accompagnée par une classe
dérivant de SimpleBeanInfo et proposant une implémentation par défaut
de l'interface BeanInfo. Une telle classe obéit à une convention de nom-
mage et pour notre exemple, elle devrait être baptisée LeBeanBeanInfo.
Cette dernière possibilité est utilisée par tous les outils comportant un
concepteur visuel tels Netbeans ou JBuilder. La réflexion seule, mention-
née plus haut, ne suffit pas, ou du moins pas complètement, car c'est à
partir de l'interface/classe BeanInfo qu'est obtenue l'icône qui servira de
symbole au composant dans la palette de composants. Nous devons
donc traiter ce point pour bien intégrer les composants dans la palette.
La première chose à faire est de fournir des icônes couleur en format
16x16 et 32x32. Des images Gif ou Png feront l'affaire. Déposez ces
icônes dans un répertoire baptisé par exemple 'ressources' et créé à la
racine des sources de Swingx. Soit, par exemple,
etc-etc/swingx/src/java/ressources
Rouvrons maintenant le projet Swingx et examinons ses classes.
Certaines sont déjà accompagnées d'une classe de type BeanInfo, par
exemple, JXCollapsiblePane qui est un panneau escamotable. Certaines
3
2
Enrichissez vos interfaces Java avec
Swingx sous Netbeans
Swingx est un projet Open Source de composants de haut niveau basés sur Swing. Apprenons
à faire de la conception visuelle sous Netbeans avec ces composants.
P
ratique
Niveau
java
facile avancé expert
68
Programmez n°87 juin 2006
p68/69 swing 18/05/06 18:40 Page 68
ne sont pas accompagnées, par exemple, JXDatePicker qui est un calen-
drier visuel. Traitons d'abord ce cas. Nous allons simplement demander
à Netbeans de générer pour nous la classe de type BeanInfo. Pour cela,
dans la fenêtre du projet, ouvrez l'arborescence de JXDatePicker.java jus-
qu'à arriver à 'Bean Patterns'. Cliquez alors dessus avec le bouton droit
de la souris et sélectionnez 'BeanInfo Editor'. Netbeans analyse la struc-
ture du Bean par réflexion et vous donne le résultat dans une boîte de
dialogue. Cliquez sur la racine de l'arborescence comme illustré ci-dessous
puis, depuis le panneau de droite, faites pointer les propriétés corres-
pondantes aux icônes sur vos images. Cliquez sur OK, c'est terminé.
Vous pouvez alors voir qu'une classe DatePickerBeanInfo a été intégrée
au projet Swingx. Que faire si la classe BeanInfo existe déjà comme c'est
le cas pour JXCollapsiblePane ? Dans ce cas, vous modifierez la métho-
de getIcon que vous y trouverez ou, à défaut, vous créerez la méthode
de toute pièce. Voici une méthode minimum renvoyant une icône 16*16:
public Image getIcon(int type) {
if (type == BeanInfo.ICON_COLOR_16x16)
{
return loadImage("/ressources/monicone16.png");
}
if (type == BeanInfo.ICON_COLOR_32x32)
{
return loadImage("/ressources/monicone32.png");
}
return null; // Important!
}
Dans tous les cas, vous devez recompiler le projet Swingx entièrement et
non pas seulement les classes BeanInfo, afin que le ou les fichiers images
soient intégrés au Jar. Il ne reste plus qu'à intégrer les composants que
vous voulez à la palette. Allez dans 'Tools|Palette manager' Ensuite, créez
éventuellement une catégorie de composants Swingx, puis cliquez sur
'Add From Jar'. Allez pointer sur le Jar de Swingx. Un nouveau dialogue
énumère tous les composants possibles, même ceux sans BeanInfo qui
n'auront alors pas d'icône si vous les choisissez. Sélectionnez ceux que
vous voulez. C'est terminé, les composants sont intégrés à la palette.
Un panneau escamotable
Pour essayer, dans un JFrame, que vous pouvez transformer si
vous voulez en JXFrame depuis le code, déposez un bouton au sud d'un
BorderLayout et un JXCollapsiblePane au nord. La localisation nord est
importante. Dans le JXCollapsiblePane ajoutez les composants Swing ou
Swingx que vous voulez. Netbeans va générer un code semblable à
celui-là :
4
private void initComponents() {
jXCollapsiblePane1 =
new org.jdesktop.swingx.JXCollapsiblePane();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(
javax.swing.WindowConstants.EXIT_ON_CLOSE);
jXCollapsiblePane1.getContentPane().
setLayout(new java.awt.BorderLayout());
jLabel1.setFont(
new java.awt.Font("Times New Roman", 0, 48));
jLabel1.setForeground(
new java.awt.Color(51, 51, 255));
jLabel1.setHorizontalAlignment(
javax.swing.SwingConstants.CENTER);
jLabel1.setText("Programmez!");
jXCollapsiblePane1.getContentPane().add(
jLabel1, java.awt.BorderLayout.CENTER);
getContentPane().add(
jXCollapsiblePane1, java.awt.BorderLayout.NORTH);
jButton1.setLabel("jButton1");
getContentPane().add(
jButton1, java.awt.BorderLayout.SOUTH);
pack();
}
Dans le constructeur, sous l'appel à initComponents, ajoutez ceci :
jButton1.setAction(
jXCollapsiblePane1.getActionMap().
get(JXCollapsiblePane.TOGGLE_ACTION));
Et essayez :-) Dans des articles à venir nous étudierons le maniement
de composants Swingx plus complexes.
s Frédéric Mazué - fmazue@programmez.com
P
ratique
Niveau
java
facile avancé expert
69
Programmez n°87 juin 2006
p68/69 swing 18/05/06 18:40 Page 69
C
ensée accueillir divers langages, la plate-forme .Net, par sa natu-
re, peut aussi avoir tendance à les uniformiser. Ainsi selon nous,
Visual basic et C# sont deux jumeaux habillés différemment.
Heureusement, l'expérience commence à montrer que .Net n'implique
pas pensée unique. A ce titre, nous sommes impatients de voir la sor-
tie de IronPython 1.0 (www.ironpython.com), ou de langages fonction-
nels pour .Net. En attendant, nous nous intéressons à C++/CLI qui pré-
sente des points forts étonnants. D'abord, nous avons bien sûr un C++
qui bénéficie de la gestion de la mémoire de .Net et de l'accès à toutes
les classes du Framework, mais nous avons toujours C++. Nous gardons
la librairie STL, nous gardons l'héritage multiple, les templates et sur-
tout, nous gardons le code que nous avons déjà écrit. Microsoft nous
dit que C++/CLI, désormais complètement standardisé par l'ECMA, per-
met de reprendre l'existant sans autre effort qu'une recompilation et
que, code natif et code managé cohabitent au sein d'une même appli-
cation. Pour prendre contact avec ce langage, regardons ce qu'il en est,
et point crucial pour un développeur C++, voyons comment se passe la
gestion de la mémoire. Nous avons écrit nos exemples avec Visual
Studio 2005. A défaut, chacun peut télécharger gratuitement Visual C++
Express pour se familiariser avec C++/CLI.
Pour se faire la main
Lorsque Visual Studio génère une application console C++/CLI
nous avons ceci :
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
Console::WriteLine("{0} {1}", args[0], args[1]);
return 0;
}
L'en-tête stdafx.h est vide. La fonction main reçoit les arguments sous
la forme d'un tableau de pointeurs managés sur des chaînes .Net. Nous
avons ajouté une ligne pour montrer comment manipuler ces arguments
(cf exemples sur le Cd-Rom). Ce code a un look .Net ou C# incontes-
table. Que se passe-t-il si nous le réécrivons à l'ancienne ?
#include "stdafx.h"
//using namespace System;
int main(/*array<System::String ^> ^args*/
int argc, char* argv[])
{
cout << "Hello World Standard" << endl;
cout << argv[1] << " " << argv[2] << endl;
return 0;
}
1
Dans l'en-tête stdafx.h, nous avons ajouté
#include <iostream>
using namespace std;
Cet en-tête est le lieu approprié pour accueillir l'inclusion de tous les
en-têtes "natifs". Il est recommandé que ces inclusions précèdent les
directives using namespace. Bien que nous ayons modifié le type des
paramètres reçus, le code compile et s'exécute parfaitement. A priori il
est donc bien possible de reprendre du C++ existant sans en changer
une ligne, ce qui est surprenant. Chaque médaille à son revers. Si vous
avez la curiosité de désassembler l'exécutable avec ildasm, vous allez
voir, dans la fonction main, une savante cuisine relevée par un usage
intensif des classes .Net de l'espace de nom
System.Runtime.CompilerServices. En effet, si notre source est du C++ à
l'ancienne, l'exécutable tourne sur la plate-forme .Net et il faut bien
interfacer les deux. Nous comprenons que si nous gardons le source
C++, nous perdons en performance à l'exécution, ce qui était somme
toute prévisible. Par ailleurs, nous aurions pu choisir d'afficher notre
message dans une boîte de dialogue Windows plutôt que sur la conso-
le. Nous aurions alors écrit:
#include <windows.h>
int main(array<System::String ^> ^args)
{
::MessageBox(NULL, "Hello World!", "Programmez!", MB_OK);
return 0;
}
Nous voyons qu'il est possible d'appeler une API Win32 avec C++/CLI, exac-
tement comme nous l'aurions fait en C++, ce qui est extrêmement séduisant.
A nouveau System.Runtime.CompilerServices s'occupe de tout. Le program-
meur doit seulement veiller à assurer l'édition de lien de user32.lib, exac-
tement comme on le ferait pour une application native pure.
Destruction déterministe
En C++ on sait quand une instance de classe est détruite. Au sor-
tir de la portée courante ou consécutivement à l'appel de delete.
Comment cela se passe-t-il en C++/CLI ?
class nongeree
{
public:
nongeree(int v)
{
valeur = v;
cout << "nongeree construite" << endl;
}
~nongeree()
{
cout << "nongeree detruite" << endl;
}
private:
2
Introduction à C++ .Net
C++ .Net, alias C++/CLI, mérite d'être découvert car il se démarque de Visual Basic et de C#
par une expressivité largement supérieure et par la facilité qu'il offre pour reprendre l'exis-
tant. Première excursion dans un vaste monde.
P
ratique
Niveau
C++
facile avancé expert
70
Programmez n°87 juin 2006
Sur le
site Web
Sur le
CD ROM
p70/71 intro CppNet 18/05/06 18:40 Page 70
int valeur;
};
void RunPile()
{
cout << "Sur la pile" << endl;
nongeree ng(1);
}
void RunTas()
{
cout << "sur le tas" << endl;
nongeree* ng = new nongeree(1);
delete ng;
}
int main(array<System::String ^> ^args)
{
RunPile();
RunTas();
return 0;
}
Notre classe baptisée nongeree est une classe C++ tout à fait classique,
avec constructeur et destructeur. Nous instancions notre classe sur la
pile et sur le tas (fonction RunPile et RunTas respectivement. A l'exécu-
tion tout se passe comme si nous étions en natif pur. Bien sûr, si nous
désassemblons RunPile et RunTas nous verrons à nouveau que les
classes de System.Runtime.CompilerServices servent d'intermédiaires à
l'invocation des constructeurs et destructeurs natifs. Toutefois, tout se
passe bien comme en C++. Ainsi, si dans RunTas nous supprimons l'ap-
pel à delete, notre instance n'est jamais détruite et nous avons une
bonne vieille fuite mémoire classique ;) De ce point de vue, C++/CLI est
aussi vrai que le vrai C++ et nous voyons que la gestion automatique
de la mémoire de .Net ne viendra pas interférer avec le vieux code.
Destruction non déterministe
ref class geree
{
public:
geree(int v)
{
valeur = v;
Console::WriteLine("geree construite");
}
~geree()
{
Console::WriteLine("geree detruite");
}
!geree()
{
Console::WriteLine("geree finalisee");
}
private:
int valeur;
};
void RunPile()
{
Console::WriteLine("Sur la pile");
geree g(1);
}
void RunTas()
{
3
Console::WriteLine("Sur le tas");
geree^ g = gcnew geree(1);
delete g;
}
void RunTasGC()
{
Console::WriteLine("Sur le tas -- destruction par gc --");
geree^ g = gcnew geree(1);
}
int main(array<System::String ^> ^args)
{
RunPile();
RunTas();
RunTasGC();
Console::WriteLine("Retour de RunTasGC");
return 0;
}
Nous avons réécrit notre classe pour en faire une classe managée. On
note la présence d'un mot clé contenant un espace: ref class. Nous
remarquons que notre classe comporte maintenant deux destructeurs.
Le premier est notre destructeur classique, en apparence du moins. Le
second !geree() est l'équivalent de la méthode C# Finalize. Dans ce der-
nier exemple nous instancions notre classe de trois manières diffé-
rentes. D'abord sur la Pile (RunPile). Notre destructeur est appelé
comme il se doit et un désassemblage permet de retrouver la cuisine
dont nous avons parlé pour la construction. En revanche, la destruction
est différente car cette fois c'est une invocation à Dispose qui est géné-
rée. Autrement dit, notre classe implémente automatiquement IDispose
et devient une vraie classe .Net bien que cela soit complètement trans-
parent au programmeur qui a l'illusion d'avoir une classe sur la pile de
façon traditionnelle. Nous disons illusion, car en fait, l'instance est
alloué sur le tas managé comme en témoigne l'instruction :
newobj instance void geree::.ctor(int32)
telle qu'on peut la voir avec Ildasm. Et notre destructeur classique n'est
en fait qu'un alias de la méthode Dispose. Quant à notre classe, elle
dérive tout naturellement de Object, ce qui est là aussi transparent.
Dans RunTas, nous instancions la classe avec gcnew, un mot clé qui
remplace new pour les classes managées, de même que ^ signale un
pointeur managé et remplace *. A nouveau, nous détruisons l'instance
par delete. Ici aussi, la destruction est déterministe lors de l'appel à
delete qui aboutit à nouveau en sous main à un appel à Dispose. Enfin,
dans RunTasGC nous avons "oublié" le delete. Nous constatons que
notre classe sera détruite à partir du moment où l'on quitte la portée,
car le pointeur managé n'est plus utilisé dans le programme. Mais cette
fois, la destruction n'est pas immédiate mais se produit selon le bon
vouloir du ramasse-miettes et le destructeur appelé n'est plus ~geree
mais !geree.
En guise de conclusion
Cette première prise de contact nous montre que C++/CLI offre la
possibilité de gérer la mémoire manuellement, ou de s'en remettre au
ramasse-miettes, à volonté. Ce C++, qui assure cohabitation entre natif et
managé, qui est augmenté de fonctionnalités bienvenues (comme finally),
qui offre l'accès aux classes .Net, tout en conservant ce qui était spéci-
fique à C++, se présente comme un langage d'une puissance étonnante.
s Frédéric Mazué - fmazue@programmez.com
4
P
ratique
Niveau
C++
facile avancé expert
71
Programmez n°87 juin 2006
p70/71 intro CppNet 18/05/06 18:40 Page 71
L
'idée du stockage structuré est d'avoir une structure de données
arborescentes dans un seul fichier. Quel est l'intérêt ? Imaginons
une application du genre agenda ou assistant personnel.
L'application travaillerait avec différents types de données, comme vos
contacts, vos rendez- vous, tous rangés dans des répertoires distincts
pour chaque type de données. Si vous envisagez de développer une
telle application, vous jugerez probablement qu'elle est trop légère pour
travailler avec un SGDBR. De plus, vous pouvez souhaiter que votre
application soit indépendante de toute autre. Vous ne souhaitez pas
non plus éparpiller vos données dans un grand nombre de fichiers. Pour
votre application, le stockage structuré de Windows peut être la solu-
tion. Un autre de cas de figure où le stockage structuré s'avère intéres-
sant est celui d'une application qui doit travailler avec un fichier très
volumineux, dont le chargement total en mémoire serait pénalisant. Le
stockage structuré, qui est une sorte de fichier indexé, vous permettra
d'accéder directement à la zone de données requise à un instant et à
charger cette zone uniquement.
Notre but et les outils
Sous Windows, l'expression stockage structuré désigne un jeu
d'interfaces COM abstraites, permettant le travail avec une structure de
données arborescentes comme nous l'avons dit. Chacun peut implé-
menter ces interfaces COM selon ses besoins. Implémenter une interfa-
ce COM n'est pas nécessairement facile. Heureusement, Windows pro-
pose une implémentation par défaut, capable de couvrir les besoins les
plus courants. Nous allons travailler avec cette implémentation par
défaut que Windows appelle les fichiers composés. Nous ne manipule-
rons COM que du côté client. Nous avons écrit trois exemples que vous
trouverez sur le Cd-Rom accompagnant le magazine ou sur notre site
www.programmez.com. Le code a été écrit avec Visual studio 2005, mais
ne posera pas de problème avec n'importe quel autre compilateur C++.
Le premier exemple, DemoCreate crée un fichier composé et y place
deux répertoires, Magazine et Site
respectivement. Le premier réper-
toire contiendra deux fichiers
texte contenant chacun une phra-
se. Le second répertoire contien-
dra un fichier texte contenant lui
aussi une phrase. Cette structure
est illustrée ci-contre. L'utilitaire
qui a servi pour faire cette illus-
tration est le Doc File Viewer de
Visual Studio 6.0. Le second
1
exemple 'DemoEnum' montre comment parcourir l'arborescence com-
plète du fichier composé et identifier le type des éléments rencontrés,
répertoire ou fichiers. Enfin, le dernier exemple, DemoRead, montre
comment lire directement le fichier sous le répertoire Site.
Travailler avec COM
C'est un jeu d'interfaces COM qui permet de manipuler les
fichiers composés. Nous devons commencer par avoir une notion mini-
mum de ce qu'est une interface COM. Une interface COM ressemble à la
table des pointeurs des méthodes virtuelles d'une classe C++. Pour ce
que nous avons à faire, nous pouvons nous contenter de voir une inter-
face COM comme un pointeur sur une table de pointeurs de méthodes.
Par contre, une interface COM n'est pas construite comme un objet C++
et surtout une interface COM n'a pas de destructeur. Un mécanisme
interne de comptage de références est utilisé. Quand le compteur tombe
à zéro, l'interface est supprimée de la mémoire. Le système ou le pro-
grammeur agissent sur le compteur au moyen des méthodes AddRef et
Release de l'interface. Lorsqu'on obtient un pointeur sur une interface,
soit au moyen d'une API Windows ou d'une autre interface COM, AddRef
est automatiquement invoquée. En revanche, le programmeur doit appe-
ler Release pour libérer l'interface lorsqu'elle n'est plus utilisée ou si
une erreur est rencontrée. Ce travail est fastidieux et alourdit le code.
Nous allons donc travailler avec un pointeur intelligent écrit pour l'oc-
casion. Voici le code (fichier moncomutils.h) :
#ifndef moncomutilH
#define moncomutilH
template <class T> class TSmartComPtr
{
public:
TSmartComPtr() : p(NULL)
{}
virtual ~TSmartComPtr()
{
if(p)
p->Release();
}
T* operator*()
2
Travailler avec le stockage
structuré de Windows
Le stockage structuré permet d'avoir l'équivalent d'un système de fichiers arborescents dans
un seul fichier. Nous apprenons à manipuler avec C++ cette API Windows basée sur COM.
P
ratique
Niveau
C++
facile avancé expert
72
Programmez n°87 juin 2006
Notre fichier composé présenté par le
Doc File Viewer de Visual Studio 6.0.
Sur le
site Web
Sur le
CD ROM
p72-74 cwindows 18/05/06 18:40 Page 72
{
return p;
}
T** operator&()
{
return &p;
}
T* operator->() throw(int)
{
if(!p)
throw 1;
return p;
}
private:
// affectation interdite
TSmartComPtr& operator=(const TSmartComPtr<T>& param);
// copie interdite
TSmartComPtr(const TSmartComPtr<T>& param);
T *p;
};
#endif
Nous nous limitons à fournir des opérateurs de déréférencement et d'ac-
cès aux membres. La copie et l'affectation sont interdites. L'intérêt est,
évidemment, d'avoir Release invoquée automatiquement à la destruc-
tion de l'objet au sortir de la portée. Si le pointeur est utilisé avant
d'être initialisé, nous levons une exception. Cette exception n'est qu'un
entier pour simplifier au maximum le code. Dans une vraie application
il serait probablement pertinent de déclarer une classe d'exception.
Créer un fichier composé.
Dans la fonction main de chaque exemple, vous trouverez un
sandwich dont les tranches de pain sont CoInitialize et CoUninitialize.
Les appels à ces APIS doivent précéder et clore toute activité COM.
Examinons, maintenant, le code de la fonction Run de DemoCreate :
void Run() throw(int)
{
HRESULT result;
TSmartComPtr<IStorage> racine;
TSmartComPtr<IStorage> magrep;
TSmartComPtr<IStorage> siterep;
result = ::StgCreateDocfile(
L"MonStorage.stg",
STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
3
NULL,
&racine);
if(result != S_OK)
throw 2;
racine->CreateStorage(
L"Magazine",
STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
NULL,
NULL,
&magrep);
racine->CreateStorage(
L"Site",
STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,
NULL,
NULL,
&siterep);
InsertFile(magrep, L"fichier1.txt", "Programmez!");
InsertFile(magrep, L"fichier2.txt", "Abonnez vous :-)");
InsertFile(siterep, L"fichier1.txt", "Participez au forum");
}
Nous commençons par déclarer trois pointeurs intelligents de type
IStorage. IStorage est l'interface qui encapsule, si l'on peut dire, les
répertoires de fichiers composés. L'appel de l'API StgCreateFile crée le
fichier composé sur le disque. On remarque que le nom de fichiers est
donné en Unicode (macro L). En effet, comme toujours avec COM,
Unicode est de rigueur. Fort heureusement toutefois, le contenu des
fichiers sous les répertoires n'est vu que comme un paquet d'octets
bruts, même si le contenu est du texte. Donc pas d'Unicode dans ce cas
:). Le lecteur voudra bien se reporter à la documentation MSDN de
Microsoft (http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/stg/stg/structured_storage_start_page.asp) en ce qui concerne les dif-
férent drapeaux passés à l'API pour la création du fichier, ainsi que pour
la liste de toutes les méthodes proposées par les interfaces COM. On
remarque, en outre, que l'API initialise notre pointeur intelligent racine.
Autrement dit, nous obtenons un pointeur sur une interface IStorage, ce
qui signifie que pour le système, le fichier composé n'est vu que comme
un répertoire racine. A partir de cette interface racine et en invoquant sa
méthode CreateStorage, nous créons les deux sous- répertoires. A
chaque fois, nous obtenons un pointeur sur une nouvelle interface de
type IStorage. Chaque interface IStorage gère donc un répertoire et un
seul. Une fois les répertoires créés, nous appelons trois fois la fonction
InsertFile pour y insérer des fichiers contenant une ligne de texte. Le tra-
vail est tout à fait similaire à ce que nous venons de faire pour les réper-
toires. La méthode CreateStream de IStorage crée un fichier et donne un
pointeur sur une interface IStream qui encapsule, si l'on peut dire, le
fichier créé. A nouveau le nom du fichier est en Unicode. Enfin, on
remarque que répertoires et fichiers ne sont jamais fermés. Cette fer-
meture est automatique lorsque la méthode Release des interfaces est
appelée, ce qui dans notre cas se produit lors de la destruction de nos
pointeurs intelligents.
P
ratique
Niveau
C++
facile avancé expert
73
Programmez n°87 juin 2006
p72-74 cwindows 18/05/06 18:40 Page 73
Parcourir un fichier composé
Intéressons nous maintenant au code de DemoEnum qui montre
comment parcourir le contenu d'un fichier composé. Bien évidemment, on
commence par ouvrir le fichier avec l'API StgOpenStorage, ce qui est fait
dans la fonction Run non reproduite ici. Comme pour la création du fichier,
nous obtenons une interface de type IStorage sur la racine. Nous passons
alors cette interface à la fonction récursive EnumStorage que voici :
void EnumStorage(TSmartComPtr<IStorage>& st)
{
HRESULT result;
STATSTG statstg;
TSmartComPtr<IStorage> subst;
TSmartComPtr<IEnumSTATSTG> ienum;
result =
st->EnumElements(0, NULL, 0, &ienum);
TestResult(result);
while(ienum->Next(1, &statstg, 0) == NOERROR)
{
switch(statstg.type)
{
case STGTY_STORAGE:
wcout << L"Type: STGTY_STORAGE, ";
wcout << "Nom: " << statstg.pwcsName << endl;
result = st->OpenStorage(statstg.pwcsName,
NULL,
STGM_READ|STGM_SHARE_EXCLUSIVE,
NULL,
0,
&subst);
TestResult(result);
EnumStorage(subst);
break;
case STGTY_STREAM:
wcout << L" Type: STGTY_STREAM, ";
wcout << "Nom: " << statstg.pwcsName << endl;
break;
default:
wcout << L"Type: inconnu, ";
break;
}
::CoTaskMemFree(statstg.pwcsName);
}
}
Ce code comporte quelques subtilités. D'abord, on commence par obte-
nir une interface d'énumération COM de type IEnumSTATSTG qui servira
à parcourir le fichier. Cette interface est obtenue avec la méthode
EnumElements qui n'énumère en fait rien elle-même. Nous bouclons, tant
que l'interface d'énumération COM signale la présence d'un élément. Pour
chaque élément, une structure STATSTG est remplie A chaque fois, nous
testons le type de l'élément et si nous avons affaire à un répertoire, la
4
fonction s'appelle elle-même. Quel que soit l'élément, nous affichons son
type et son nom. Ce nom est en Unicode, bien évidemment. Mais surtout,
il importe de remarquer que la structure STATSTG détient seulement un
pointeur sur le nom de l'élément et non le nom lui même.
Ce pointeur pointe une zone de "mémoire COM" c'est-à-dire sur une zone
qui a été allouée par des APIs COM sous le manteau, lorsque la structu-
re STATSTG a été remplie. Comme toujours dans un tel cas en program-
mation COM, il est du ressort du programmeur de libérer cette mémoire
avec des APIs COM, faute de quoi on aurait une fuite de mémoire. Ici nous
employons CoTaskMemFree. L'illustration ci-dessus montre le résultat du
parcours du fichier. Il n'est jamais garanti que les éléments soient par-
courus dans l'ordre de leur création.
Lire dans un fichier composé
Si l'on a bien compris les deux exemples précédents, ce dernier
exemple, DemoRead, est sans surprise. Nous n'en reproduisons pas le
code ici. Nous partons de la racine et nous ouvrons le sous-répertoire.
Ensuite, nous ouvrons le fichier. Nous invoquons la méthode Stat de
IStream pour connaître le nombre d'octets à lire. Cette méthode remplit
elle aussi une structure STATSTG et selon les paramètres qu'elle reçoit, il
faudra peut être veiller à libérer de la mémoire, comme expliqué plus haut
(cf. les commentaires dans le source) Pour varier les plaisirs, nous utili-
sons une interface COM IMalloc pour la libération de la mémoire, mais le
mécanisme global est exactement le même que précédemment. Un dernier
mot. Lorsqu'on efface un élément (IStorage->DestroyElement), la place cor-
respondante n'est pas libérée dans le fichier composé. Pour récupérer
cette place et réduire la taille du fichier, il faut passer par un fichier inter-
médiaire que l'on génèrera par racine->CopyTo. Enfin, on doit savoir qu'un
répertoire ne peut s'autodétruire et doit être supprimé depuis le répertoi-
re immédiatement au-dessus de lui dans l'arborescence.
s Frédéric Mazué - fmazue@programmez.com
Lexique
- SGDBR : Système de gestion de base de données relationnelles.
Oracle, PySQL, PostgreSQL, par exemple, sont des SGDBR.
- COM (Component Object Model) : Technologie Microsoft de com-
posants logiciels interopérables.
- Unicode : Unicode est un standard informatique développé par le
Consortium Unicode qui vise à donner à tout caractère, de n'impor-
te quel système d'écriture de langue, un identifiant numérique
unique, et ce de manière unifiée, quelle que soit la plate-forme infor-
matique ou le logiciel. (définition provenant de : fr.wikipedia.org)
5
P
ratique
Niveau
C++
facile avancé expert
74
Programmez n°87 juin 2006
Nous parcourons le contenu de fichier composé.
p72-74 cwindows 18/05/06 18:40 Page 74
P
ratique
Niveau
PHP
facile avancé expert
75
Programmez n°87 juin 2006
Notre objectif à travers cet article va être de découvrir ce qui est com-
munément vu comme la cerise sur le gâteau XML : Xpath le moteur de
recherche du XML.
XML et XPath ?
Comment faire une recherche dans votre document XML ?
Comment accéder aux données de façon aussi simple qu'avec SQL ? La
solution existe : XPath !
C’est le nom d’une syntaxe permettant de faire des recherches ou sélec-
tions dans un document XML. Il s’agit donc d’un moyen d’accéder aux
données très simple dans l’univers XML.
Comment l'utiliser ?
Nous allons baser nos exemples sur la plate-forme principale
d'applications Web : PHP. Comme Xpath est une spécification du W3C
vous pourriez également l'utiliser avec d'autres plates-formes. Nous
préférerons PHP 5 qui offre, avec SimpleXML, des fonctionnalités de trai-
tement des fichiers XML extrêmement puissantes et faciles d'accès.
Avec PHP il est possible d'utiliser Xpath au travers :
- des fonctionnalités DOM,
- des fonctionnalités SimpleXML
Si DOMDocument permettait déjà en PHP4 de parcourir l'arbre DOM
nœud par nœud et d'utiliser de façon complexe XPath, SimpleXML gère
le document XML dans sa globalité, en tant qu'objet. L'extension
SimpleXML implémente une méthode xpath(). Cela nous permet d'utili-
ser cette méthode d'accès à des arbres DOM, donc à tout document
XML ou XHTML.
Comment accéder aux éléments ?
Xpath voit un document XML comme un arbre de noeuds.
Nous nous intéresserons aux noeuds de trois types :
- les noeuds d'éléments, c'est-à-dire les balises XML
- les noeuds d'attributs, qui ajoutent des informations aux balises
- les noeuds de texte, les données du document
Notez que simpleXML propose déjà des méthodes pour accéder aux élé-
ments et attributs.
La syntaxe XPath appliquée à la
recherche d'éléments
Il existe deux syntaxes pour noter le chemin à travers les éléments du
DOM XML :
- la méthode complète, qui garantit le moins d'erreurs possibles et le
plus de précision,
- la méthode abrégée qui est plus rapide à écrire.
Considérons les balises XML suivantes et cherchons à désigner l'élément " c ".
<a>
<b>
4
3
2
1
XML puissance 5 avec XPath et PHP
Les applications utilisant XML sont partout ! Que ce soit les fils d'actualités en RSS, les services
web ou les formats de stockage (OpenDocument pour OpenOffice et OpenXML pour MsOffice) il
est difficile d'y échapper. Le premier objectif d'XML est atteint : ouverture et interopérabilité.
<c></c>
<c></c>
<c></c>
</b>
</a>
En utilisant la notation complète on aurait : a/child::b/child::c
En utilisant la notation abrégée on aurait : a/b/c
A retenir : on sépare les éléments imbriqués les uns dans les autres par
un slash, comme les répertoires Unix. On sépare les mots-clés de dési-
gnation du nom de l'élément par ::
1. Arborescence des noeuds :
Pour accéder au noeud racine, on peut utiliser le signe /
Pour désigner le noeud sur lequel on travaille, on utilise la notation ./
Pour désigner le noeud parent, on utilise la notation ../
2. Désigner plusieurs noeuds à la fois :
Les caractères spéciaux permettent de choisir plusieurs éléments en une
seule notation. On utilise l'étoile * comme caractère joker, et // pour
outrepasser la désignation de l'arborescence.
Soit le XML suivant :
<a>
<b>
<c></c>
<c></c>
<c></c>
</b>
</a>
<a>
<b>
<c></c>
<c></c>
<c></c>
</b>
</a>
<a>
<b>
<c></c>
<c></c>
<c></c>
</b>
<c></c>
<c></c>
</a>
Je désigne tous les noeuds enfants de a par a/* (je récupère donc les
noeuds b et c). Je désigne tous les c contenus dans un élément b par
b//c, si je souhaite au contraire tous les éléments c quel que soit le
noeud parent, je ferais //c
p75/76 PHP(2) 18/05/06 18:41 Page 75
P
ratique
Niveau
PHP
facile avancé expert
76
Programmez n°87 juin 2006
Attention, on postule que la DTD autorise des éléments c qui ne
seraient pas dans <b>. On peut également combiner les choix dans les
fonctions par le caractère | (pipe).
La syntaxe XPath appliquée à la
recherche d'attributs
La notation longue des attributs se fait par le mot clef attribute, et la
notation abrégée par le caractère @.
<personne>
<yeux couleur ="bleu">
</yeux>
<cheveux couleur="blond">longs</cheveux>
</personne>
<personne>
<yeux couleur ="gris">
</yeux>
<cheveux couleur="blond">en brosse</cheveux>
</personne>
<personne>
<yeux couleur ="brun">
</yeux>
<cheveux couleur="noir">courts</cheveux>
</personne>
Pour désigner les attributs de couleurs d'yeux, je note :
/child::personne/child::yeux/attribute::couleur (complète)
/personne/yeux/@couleur (abrégée)
La syntaxe XPath appliquée à la
recherche de texte
On utilise la fonction contains(chaine, motif ). Depuis PHP, notre chaîne
sera le titre de la nouvelle qu'on souhaite examiner. On peut examiner
aussi bien les noeuds que leurs attributs, que le texte contenu dans le
noeud élément.
Syntaxe d'un flux RSS 2.0 dans du XML
Un flux RSS est en XML et obéit à une norme. On sait donc que tous
les flux RSS 2.0 auront la structure suivante :
<rss version="2.0">
<channel>
<title>Titre du channel</title>
<link>http://www.monsite.com</link>
<description>Description du channel</description>
items...
</channel>
</rss>
Cas d'application : afficher les titres de flux RSS contenant le mot PHP
Imaginons qu'on ait un grand nombre de flux RSS (par exemple, 2000)
et qu'on ne souhaite afficher que les nouvelles concernant PHP. On va
donc n'être intéressé que par les titres contenant le mot clef "PHP ".
<?php
// Définition des sources
$tablo_flux[] = 'http://www.afup.org/backend.php3';
$tablo_flux[] = 'http://www.nexen.net/index2.php?option=com_rss&
6
5
feed=RSS0.91&no_html=1';
$tablo_flux[] = 'http://news.google.fr/news?ned=fr&topic=t&output=rss';
// On récupère le mot clef recherché dans l'URL
$mot = ['PHP'];
$taille = count($tablo_flux);
for( $i=0 ; $i < $taille ; $i++ ){
$racine[$i] = simplexml_load_file($tablo_flux[$i]);
$recherche = "/rss/channel/item[contains(title,'$mot')]";
$titres = $racine[$i]->xpath($recherche);
if($titres){
foreach($titres as $actu){
$lien = htmlentities((string)$actu->link);
$titre = utf8_decode($actu->title);
echo "<tr><td><a href='$lien'>$titre</a></td></tr>\n";
}
}
}
?>
Cet exemple simple permet de montrer comment faire une recherche
simple dans des fluxs rss. Rien ne vous empêche d'aller plus loin et de
créer un système de veille sur un ou plusieurs sujets qui vous intéres-
sent. Avec quelques lignes de plus vous obtenez un système de gestion
plus complet (voir figure).
En savoir plus
Article de Wikipedia sur Xpath
http://fr.wikipedia.org/wiki/XPath
Norme du W3C sur XPath
http://www.w3.org/TR/xpath
Manuel PHP sur SimpleXML
http://fr2.php.net/manual/fr/ref.simplexml.php
Les fonctions Xpath http://fr.selfhtml.org/xml/representation/fonctionsx-
path.htm
Former des flux RSS 2.0 http://ghostdogpr.developpez.com/articles/rss/
s Sarah HAIM LUBCZANSKI & Cyril PIERRE de GEYER - Anaska Formation
p75/76 PHP(2) 18/05/06 18:41 Page 76
C
omme pour les EJB 2.x, il existe deux grandes familles d’EJB 3.0 :
les sessions beans et les entity beans. Les premiers sont là pour
matérialiser des services, les seconds réifient le contenu de la
base de données. Jusqu’à ce point, la tradition des EJB est respectée.
Ce qui change, c’est la manière dont ces EJB sont mis en œuvre. Pour
les session beans, comme pour les entity beans, elle s’est considéra-
blement simplifiée. Elle s’appuie intensivement sur les deux apports
majeurs du JDK 5.0 que sont les annotations et les " generics ".
Le JDK 5.0 en entreprise
Avant d’entrer dans l’intimité de ces nouveaux EJB, rappelons ce que
sont les annotations et les " generics " et surtout, quels rôles ils peu-
vent jouer dans une application d’entreprise.
Les annotations forment un système de marquage des composants élé-
mentaires d’un programme que sont les classes, les méthodes et les
attributs. Elles ressemblent en cela au célèbre Xdoclet. Elles permettent
d’associer à ces composants, des informations qui pourront être exploi-
tées par un mécanisme tiers. Par exemple, l’annotation @Overrides
indique que la méthode associée doit avoir une super implémentation.
Cette annotation est utilisée par le compilateur Java, par l’éditeur Java
d’Eclipse, etc. L’annotation @WebService posée sur une classe Java
indique au serveur d’application qu’il doit installer cette classe comme
service WEB, générer le WSDL correspondant, etc. Il faut noter qu’une
annotation n’apporte aucune modification du comportement per se à la
classe, la méthode ou l’attribut sur lequel elle est posée. Une annota-
tion est passive. Il est toujours nécessaire qu’un outil, un framework, un
serveur d’application, reconnaisse l’annotation et apporte à la classe le
comportement demandé.
Les " generics " sont un mécanisme additif au compilateur Java per-
mettant de préciser le type des objets manipulés par une API. Ce méca-
nisme est d’abord utilisé dans les collections JAVA, épargnant le déve-
loppeur de trop nombreux " casting ". Mais les generics sont aussi
connus de l’API d’introspection. Il est possible avec le JDK 5.0 de déter-
miner dynamiquement quels sont les éléments rassemblés par une col-
lection donnée. Nous verrons que ce point est essentiel pour les EJB 3.0
Annotation et generics se révèlent simples à assimiler et à utiliser.
Même si vous n’êtes pas familier avec le JDK 5.0, vous n’aurez proba-
blement aucune difficulté pour comprendre les exemples de code illus-
trant cet article.
Définir un service à l’aide d’un Session bean
Le composant EJB qui matérialise un service métier est l’EJB Session.
Comme son aïeul figurant dans la version 2.x, il doit être installé au sein
d’un serveur d’application. Il confère à une procédure de traitement -
sans effort de programmation – la possibilité de l’invoquer à distance,
une unité transactionnelle et un contrôle d’accès sécurisé. Mais il en fait
plus, et pas de la même manière.
• " Plus " car il est possible désormais d’associer à ces procédures de
traitement des comportements " transversaux ". Il s’agit des fameux
" intercepteurs " qui ont popularisé la programmation par aspect
dans le monde des serveurs d’application. Et du framework Spring.
• " Différemment ", car les annotations et les generics permettent de
transformer des classes JAVA standard (POJO) en EJB Session, sans
qu’il soit nécessaire de les faire hériter de classes (ou d’implémenter
des interface) provenant de l’API des EJB, ni de définir d’obscures
méthodes réflexes (ejbActivate, ejbPassivate, etc.), ni encore de devoir
définir d’interface de fabrique (les " Home " des EJB 2.x). Il n’est pas
non plus nécessaire de déclarer les EJB3 Session dans un fichier de
configuration de type " ejb-jar.xml ".
Illustrons tout cela concrètement. Prenons comme exemple un service sim-
pliste. Ce service met à disposition une bibliothèque de fonctions mathé-
matiques élémentaires. La version initiale de notre classe est celle-ci
public class Computer {
public double add(double a, double b) {return a+b;}
public double minus(double a, double b) {return a-b;}
public double multiply(double a, double b) {return a*b;}
public double divide(double a, double b) {return a/b;}
}
Comment installer cette classe en tant que service ?
La première étape consiste à extraire de notre classe l’interface qui défi-
nit les fonctions attendues de ce service :
public interface ComputerService {
public double add(double a, double b);
public double minus(double a, double b);
public double multiply(double a, double b);
public double divide(double a, double b);
}
et faire implémenter cette interface par notre classe initiale :
public class Computer implements ComputerService {
...
}
Il suffit maintenant de rajouter les annotations @Remote sur l’interface
et @Stateless sur la classe d’implémentation … et le tour est joué !
@Remote
EJB 3.0 : Le grand virage
Cette nouvelle mouture des EJB est une synthèse rigoureuse des solutions les plus populaires en
matière de composants métier en Java : dans l’ADN des EJB3, on reconnaît une certaine pater-
nité des EJB 2.X, mais on trouve aussi beaucoup de gènes Hibernate et Spring. Cet article se pro-
pose de vous faire découvrir concrètement la spécification la plus attendue de Java EE 5 Platform.
P
ratique
Niveau
java
facile avancé expert
77
Programmez n°87 juin 2006
p77A79 EJB3 18/05/06 18:41 Page 77
public interface ComputerService {

}
@Stateless
public class Computer implements ComputerService {
...
}
Ces deux classes sont alors placées dans une archive .jar, que l’on ins-
talle sur un serveur d’application intégrant les EJB 3.0. Au déploiement
de l’application, le serveur scrute les classes contenues dans l’archive,
détecte les annotations et installe automatiquement l’EJB. Aucun fichier
de configuration n’est nécessaire !
Il nous reste maintenant à appeler notre service depuis un programme
" client ". Ce programme peut être une application externe au serveur
d’application (client riche) ou une servlet. Dans l’état actuel des choses
(car tout cela va changer avec la version 2.5 des servlets), il faut pas-
ser par l’annuaire du serveur l’application – c’est à dire JNDI – pour se
connecter au service, à l’instar de ce que l’on faisait avec les EJB 2.x.
Notez cependant, qu’il n’est plus nécessaire de passer par une
"fabrique" : le fameux " home " des EJB 2.x. La recherche du service
est directe. Par défaut, le nom de l’EJB est le nom de l’interface du ser-
vice auquel on ajoute " /remote " :
Computer cmp;
try {
InitialContext ctx = new InitialContext();
Computer cmp = (Computer) ctx.lookup(“ComputerService/remote”);
}
catch (NamingException exp) { … }
cmp.add(5.0, 5.0);
La première ligne de cette snippet crée un accesseur vers JNDI. La
seconde ligne obtient le service. La troisième ligne exploite le service.
L’appel à la méthode " add " n’est pas protégé par une clause try …
catch, malgré le fait que cet appel puisse être réalisé à distance. Il
semble, en effet, que les gens en charge de spécifier les nouvelles API
de Java EE aient enfin admis que les exceptions explicites (" checked
exceptions ") apportent une complexité et une lourdeur que ne justifie
pas le gain attendu dans le contrôle du code.
Injection de dépendance
Développons maintenant un nouveau service qui a besoin d’utiliser
notre service de calcul. Ce service est aussi un session bean EJB 3 dont
voici le code partiel :
@Stateless
public class MiniGrid implements MiniGridService {
ComputerService comp;
public double computeGrid(int op, double a, double b) {
switch (op) {
case OperationType.ADD:
return comp.add(a, b);
case OperationType.REMOVE:
...
}
}
}
L’attribut " comp " désigne le service de calcul que nous voulons exploi-
ter. Comment l’initialiser ? Avec les EJB 2.x, il aurait fallu définir une réfé-
rence dans le fichier de configuration ejb-jar.xml, que nous aurions tra-
duite en un nom JNDI dans un fichier de configuration spécifique au ser-
veur d’application. Cette référence devait ensuite être utilisée dans la
méthode d’initialisation du bean via JNDI, Home, etc.
Pour les EJB 3.0, rien de tout cela : il suffit d’associer à " comp " l’an-
notation @EJB pour que le serveur d’application détecte tout seul qu’il
doit lier le service MiniGrid a une instance de Computer :
@Stateless
public class MiniGrid implements MiniGridService {
@EJB
ComputerService comp;

Comment fait-il pour trouver le bon service ? Il s’appuie sur le type de
la référence " comp ". Comme un unique service implémente cette inter-
face, le serveur d’application devine tout seul la ligature à réaliser
(lorsque ce n’est pas le cas, l’utilisation d’un fichier de configuration
redevient nécessaire). Cette ligature n’est plus faite à l’initiative du bean
(MiniGrid), elle est " injectée " en son sein par le serveur d’application,
selon le Design Pattern IoC (Injection of control) ou DI (Dependency
Injection). On retrouve ici le principe fondamental du framework Spring.
Définir un objet du domaine (objet métier)
avec un Entity Bean
La simplification est encore plus grande en ce qui concerne les beans
entités. La norme EJB 3.0 abandonne sur ce terrain l’essentiel des prin-
cipes des EJB 2.x et adopte l’approche d’outils d’ORM comme Hibernate.
Les beans entités sont de simples classes Java, à l’instar de ce que pré-
sente la snippet suivante :
@Entity
public class Product implements Serializable {
String code;
String label;
ProductType type;
Set<Vendor> vendors;
public Product() {}
public Product(String code, String label) {
this.code = code;
this.label = label ;
}
@Id
public String getCode() {return code;}
public void setCode(String code) { this.code = code; }
P
ratique
Niveau
java
facile avancé expert
78
Programmez n°87 juin 2006
p77A79 EJB3 18/05/06 18:41 Page 78
public String getLabel() {return label;}
public void setLabel(String label) { this.label = label; }
@ManyToOne
public ProductType getType() {return type;}
public void setProductType(Product type)
{ this.type = type; }
@ManyToMany(mappedBy=”products”)
public Set<Vendor> getVendors() {return vendor;}
public void setVendors(Set<Vendor> vendor)
{ this.vendor = vendor; }
}
Cette classe ne présente rien de particulier : pas de classes à hériter,
pas d’interface EJB à implémenter. Ce sont des POJOs. POJO signifie
"Plain Ordinary (ou Old) Java Object", que nous pourrions traduire par
"des objets Java très ordinaires". A l’exception bien sûr de quelques
annotations qui vont transformer l’inoffensif POJO en un composant
d’entreprise persistant en base de données.
L’annotation la plus importante est @Entity qui indique qu’il s’agit d’un
bean entité. C’est en reconnaissant cette annotation que le serveur, au
démarrage de l’application, va installer cette classe en tant qu’Entity bean.
L’autre annotation obligatoire est @Id qui indique quelle est la clé pri-
maire de l’entité. Beaucoup d’autres annotations sont disponibles, per-
mettant de définir un mapping fin avec le contenu de la base de don-
nées. L’annotation @ManyToOne donnée en exemple dans la Snippet
indique qu’il faut mapper la propriété " type " avec la clé étrangère de
même nom dans la table qui contient la définition des produits.
Le cas de l’annotation @ManyToMany est intéressant, car il illustre le fait
que les collections sont aussi gérées par les EJB 3.0 à l’aide d’annota-
tions simples. L’attribut d’annotation " mappedBy " indique au serveur
que la propriété " vendors " de Product est la relation inverse de la
relation " products " de la classe Vendor. C’est par introspection sur le
type des éléments contenus dans la collection retournée par
"getVendors" que le serveur d’application reconnaît la classe Vendor
comme cible de la relation " vendors ". L’utilisation des " generics "
prend tout son sens.
Aucun fichier de mapping n’est nécessaire. Le serveur d’application uti-
lise le nom de la classe comme nom de table. Il utilise les noms des
propriétés (code, label, type) comme noms de champs. Il est bien sûr
possible d’altérer ce comportement par défaut en utilisant des annota-
tions comme @Table, @Column, …
Voyons maintenant comment manipuler ces entités. A l’instar des EJB
Session, les " Home " ont disparu. A la place, apparaît le gestionnaire
d’entités. Ce gestionnaire est la fabrique pour toutes les entités. Il sert
en quelque sorte de " Home " générique et général. Ce gestionnaire,
instance de la classe " EntityManager " est initialisé dans un Session
bean par injection de dépendance :
@Stateless
public class MonImplementationDeDAO implements DAOService {
@PersistentContext
EntityManager em;
En rencontrant l’annotation @PersistentContext, le serveur d’application
sait qu’il doit initialiser l’attribut associé par une instance de gestion-
naire d’entités.
Les méthodes de notre Session bean peuvent maintenant utiliser le ges-
tionnaire d’entités pour retrouver une entité particulière, dresser la liste
des entités qui répondent à un critère donné, créer, modifier ou suppri-
mer une entité, etc. Par exemple, dans la snippet suivante :
Product prd = em.find(Product.class, ”is2”);
List orders = em.createQuery(
”select o from order o “+”
where o.invoice.status = 1”).getResultList();
em.persist(new Product(”pF2”, ”pencil F2”));
La première invocation du gestionnaire d’entités recherche le produit de
code “is2”. La seconde invocation retourne l’ensemble des commandes
dont la facture n’a pas encore été réglée. La dernière invocation insère
un nouveau produit en base de données.
Ce rapide survol des beans entités permet de comprendre la nouvelle
philosophie des EJB, mais il ne permet pas d’en appréhender la puis-
sance : sachez qu’il est possible d’utiliser l’héritage des entités, de défi-
nir des requêtes paramétrées et dynamiques, d’utiliser un nouvel EJB
QueryLanguage qui offre l’ensemble des possibilités de SQL, OrderBy,
GroupBy, Having compris.
Le concept du " mobile object "
Contrairement aux Entités des EJB 2.x, les entités des EJB 3.0 ne peu-
vent être accédées à distance. Cette limitation n’en est pas vraiment
une : le modèle architectural d’une application d’entreprise impose,
dans la pratique, de masquer les beans entités par une série de Session
beans façade. Ce modèle rend donc inutile la faculté d’un bean d’être
sollicité directement.
En revanche, le fait qu’un bean entité EJB 2.x ne puisse exister hors du
conteneur EJB implique l’utilisation de DTO ou " Data Objects " pour
faire migrer la description d’une entité vers une application cliente. La
conséquence de cet artifice est que les objets du domaine sont maté-
rialisés par deux classes distinctes.
Rien de tout cela n’est désormais nécessaire. Les POJOs peuvent être
sérialisables et un POJO peut parfaitement être utilisé en dehors d’un
conteneur EJB. Il n’est donc plus nécessaire de créer des DTO. Une enti-
té EJB 3 peut être détachée du gestionnaire d’entités, transférée dans
un contexte client, modifiée dans ce contexte, puis retournée vers le ser-
veur et enfin, réinjectée dans le gestionnaire d’entités. L’entité EJB 3.0
est mobile. La simplification est d’importance : de quatre classes (home,
interface, bean, DTO) on passe à une.
s Henri Darmet
contact@objetdirect.com - Objet Direct, filiale de Homsys Group
A propos de Homsys Group :
Créé en 1991, Homsys Group est spécialisé autour de
la Business Intelligence (Homsys) et les technologies
Objet et Internet (Objet Direct). Homsys Group est
implanté à Paris, Marseille, Lyon, Toulouse, Bordeaux, Grenoble et
Rennes.
www.homsysgroup.com - www.objetdirect.com
P
ratique
Niveau
java
facile avancé expert
79
Programmez n°87 juin 2006
p77A79 EJB3 18/05/06 18:41 Page 79
L
udique
Les jeux indépendants ont leur portail
E
t c’est un portail dont la philosophie est
vraiment " indie " ! GameTrove
(www.gametrove.net), lancé il y a un
mois, a pour devise " Games from the people
who made them ". Le site entend clairement
permettre à tous les développeurs indépen-
dants, affiliés à un studio ou non, de publier et
même de vendre leurs jeux en ligne.
L’originalité du concept est que GameTrove est
juste un intermédiaire passif : ce sont les utili-
sateurs qui décident des jeux qui restent acces-
sibles, et dans quel ordre d’accès, en les
notant. Du côté des développeurs, la mise en
place du jeu est absolument gratuite : il suffit
de s’enregistrer (juste un login et un mot de
passe, rien d’autre !) puis de soumettre son jeu
en remplissant une fiche descriptive et tech-
nique complète. C’est tout. Chaque jeu est
alors automatiquement téléchargeable en ver-
sion démo, ou achetable en version complète.
GameTrove prend 10% sur les ventes réalisées
par le développeur, au fur et à mesure. C’est
tout à fait raisonnable, d’autant que l’investis-
sement financier initial du développeur indie
est nul. Cependant, il peut, s’il le souhaite,
faire une donation volontaire au portail, ou
acheter une bannière de pub tournante. Mais
aucune obligation : ce sont les notes des utili-
sateurs enregistrés qui font tout, classant les
jeux par hit-parade sur des pages successives…
Des jeux peuvent même être éliminés par excès
de mauvaises notes : la sélection naturelle ! Le
système est donc très séduisant, parfaitement
indie, communautaire, quasi gratuit, et détaché
de toute structure technique ou commerciale
externe aux joueurs et développeurs. En outre,
des liens vers les sites des développeurs et
bientôt des forums de partage assurent une
cohérence à la communauté. Reste à savoir
quelles balises ont été mises en place pour
réguler le processus d’annotation et éviter les
abus… En tout cas, le succès de GameTrove
semble immédiat, avec plus de 100 jeux soumis
et implantés en moins de trois semaines.
Plateau de jeu interactif pour jeux de
plateau virtuels
Un nouveau concept ludique montre le bout de
son nez, celui des jeux de plateau (vous voyez,
genre Monopoly) interactifs : une rencontre
très innovante entre jeux de société et jeux
vidéo ! L’invention est riche de promesses…
Jugez plutôt : Philips Research a présenté en
janvier dernier, et annoncé pour la fin de l’an-
née, si les tests sont favorables, son
Entertaible. Tout simplement un écran LCD tac-
tile à plat, qui fait plateau de jeu. On y dépla-
ce des pions et, au besoin, un programme gère
les règles au fur et à mesure. La perspective la
plus étonnante de l’Entertaible est que ce pla-
teau interactif est multi-jeux : on peut très bien
y charger, par USB ou carte-mémoire, des jeux
de société différents ! Un menu propose, dans
ce cas, les divers jeux disponibles, on fait alors
son choix : le jeu s’installe, le plateau s’affi-
chant sur l’écran, le programme de gestion
spécifique se chargeant en mémoire. Reste à
utiliser le set de pions spéciaux, électronique-
ment réactifs avec l’écran, pour commencer la
partie ! Philips prévoit pour l’Entertaible une
utilisation domestique, chez soi, mais aussi
son intégration dans des tables de bars, de
cafés, de clubs de jeux… On peut se demander
cependant si les amateurs de jeux de société
ne bouderont pas cette virtualisation, c’est-à-
dire la même perte de contact avec la matière
(carton du plateau, plastique ou bois des
pions) qui freine déjà le livre électronique !
Quoi qu’il en soit, une nouvelle direction de
développement ludique s’ouvre avec
l’Entertaible, à découvrir sur www.research.phi-
lips.com/initiatives/entertaible.
BRÈVES
Nouveau mariage mobile ATI-Nokia
A
u cas où vous douteriez encore de l’essor des
jeux sur mobiles, ATI et Nokia viennent de
conclure un partenariat à long terme pour créer
communément des outils de développement
ludique sur mobile. Leur objectif avoué est, par la
diversité de leur offre (jeu mais aussi musique,
vidéo), d’établir un véritable standard en matière
de plate-forme et d’outils. ATI doit donc fournir à
l’automne prochain un kit de développement logi-
ciel complet. Pour le promouvoir, les deux com-
pagnies organiseront alors mondialement des ate-
liers auprès des développeurs professionnels.
80
Programmez n°87 juin 2006
p80-81 18/05/06 18:38 Page 80
L
udique
Par Jean Michel Maman
Pour l’Histoire
L
a Bibliothèque du Congrès américain vient
de lancer un " national digital preservation
program " qui vise à assurer, entre autres, la
conservation des jeux vidéo. Le programme s’ap-
puie sur un appel d’offres aux entreprises de
développement US et mondiales pour définir des
procédures de stockage (soft) et des supports
hard viables à une centaine d’années minimum.
De quoi se faire un bon Pac Man en 2124…
Cecropia passe à l’Acte
L
e studio de développement indépendant et
très alternatif Cecropia, composé de vété-
rans prestigieux de tous bords (Walt Disney
Interactive, Pixar, Dreamworks, Papyrus, etc.),
vient de s’adjoindre les services de Ken
Fedesna et Andrew Miller pour lancer enfin son
fameux " filmgame ", The Act. Le concept est
unique : d’abord, c’est un jeu pour salle d’ar-
cades ; ensuite c’est un scénario de comédie
romantique ; enfin, le joueur joue essentielle-
ment avec la psychologie des personnages
pour monter de niveau en passant les épi-
sodes de l’histoire. Strange, mais attention :
peut-être un nouveau " concept-base ", on le
saura d’ici la fin de l’année. www.cecropia.com
La PS3 facile et sans zonage
L
a Games Developers Conference a apporté
quelques éclaircissements sur la future
PlayStation 3, par l’intermédiaire de Phil Harrison,
directeur exécutif du développement jeux de Sony
pour l’Europe. On a ainsi appris que " tous les
jeux de la PS3 seraient développés comme s’ils
s’exécutaient depuis un disque dur ", ce qui sous-
entend que la PS3 en sera donc dépourvue, du
moins en standard… Des jeux, comme d’autres
contenus, pourront aussi être téléchargés dans la
console, mais cette possibilité dépendra surtout
du taux et de la qualité du réseau de chaque
pays. Pour les autres, Sony continuera à s’accro-
cher à sa technologie Blu-Ray de " super DVD ".
Harrison a par ailleurs confirmé la rétro-compati-
bilité avec les titres PS1 et PS2, " avec parfois
quelques optimisations ". Il a aussi révélé que la
PS3 ne serait pas " zonée ", c’est-à-dire que tous
ses logiciels seraient mondialement utilisables. Il
a enfin voulu rassurer les développeurs : " on a
beaucoup critiqué la PS2 pour ses difficultés de
programmation. La PS3 apportera des perfor-
mances bien plus élevées, avec des chips plus
efficaces au niveau du développement. Tous les
outils que sont en train de créer de grandes entre-
prises nous le prouvent clairement, les dévelop-
peurs devraient vivre une expérience plus facile et
confortable sur PS3 ". Bref, tout sera pour le
mieux dans le meilleur des mondes ! Réponse
concrète en novembre… ou plus tard !
MechCommander2 à la source
L
e code source de
Mech Commander 2
est librement téléchar-
geable sur le site de
Microsoft et, en outre, il
est complet. Mieux
encore, il peut être uti-
lisé en conjonction avec
la préversion du XNA Build de mars dernier, outil
(toujours Microsoft) de gestion de complexité de
contenu. Ajoutez à cela une documentation en
ligne intégrale et des tutoriaux spécifiques, plus
trois conférences, en ligne, d’explications de
Frank Savage, lead programmeur de Mech
Commander 2 (courant mai, voir comptes-ren-
dus sur Gamasutra, www.gamasutra.com).
Téléchargement : www.microsoft.com/down-
loads, recherche " mechcommander ".
La Wii mal définie ?
L
e manager général d’Electronic Arts, Neil
Young, est connu pour son franc-parler. A la
dernière Game Developers Conference de San
Jose en Californie, il a clairement exprimé son
scepticisme par rapport à certains choix de
développement de la future console de
Nintendo (qui ne s’appelle plus Révolution, au
cas où vous ne le sauriez pas, mais Wii). " Une
des difficultés que va poser cette console est
que son affichage n’est pas HD (Haute
Définition). Pour les jeux de stratégie en temps
réel, la différence est grande entre jouer sur un
écran télé à distance et tout près d’un écran
d’ordinateur. Ainsi, la réussite de Battle of
Middle Earth II sur Xbox 360 doit beaucoup à la
qualité des contrôles de la manette, mais sur-
tout à la HD : les éléments de jeu se visualisent
sur la TV distinctement depuis votre fauteuil. "
Young, qui a aussi suggéré que la course à la
puissance du hardware ne valait que si elle
s’appuyait sur une bonne réflexion conceptuel-
le du développement logiciel ( !), a finalement
avoué préférer, sous cet angle, la Nintendo DS.
Mastère en Haut Multimédia
L
'ESIEE et Gobelins, écoles de la Chambre de
Commerce et d'Industrie de Paris, s'associent
pour proposer un Mastère sévèrement Multimédia!
Dénommé " Mastère Spécialisé en Ingénierie des
Médias Numériques " (MS IMN), il entend former
des professionnels aux technologies situées au
carrefour de l'informatique, des télécommunica-
tions, et de l'audiovisuel. C’est vaste, et quand
même flou… Bref, du multimédia par excellence !
Le Mastère sera accessible aux titulaires d’un
diplôme scientifique à Bac+5 (ou Bac+4 avec
conditions) et aux cadres en activité dans les sec-
teurs concernés. Une formation qui durera 12
mois, avec stage en entreprise de 6 mois et thèse
à l’appui. Renseignements : www.esiee.fr
RTSquare s’étend aux plug-ins
G
PU-Tech, société française, s’est déjà fait
un nom dans l’industrie du jeu vidéo avec
son logiciel de rendu 3D RTSquare, jusqu’alors
uniquement en version standalone. L’étape
suivante vient d’être franchie avec une version
en plug-in pour l’incontournable 3DSMax, qui
est sortie début mai, et une autre en dévelop-
pement pour le grand concurrent Maya.
www.gputech.com
81
Programmez n°87 juin 2006
p80-81 18/05/06 18:38 Page 81
ASP.Net 2.0 étape par étape

Auteur : George Shepherd

Editeur : Microsoft Press

Prix : 39 €
S
i depuis la sortie de
.Net 2.0, on peut
développer des sites avec
ASP.Net 2e version, encore
faut-il en connaître les
bases. On débute le livre
par ce qu’est une applica-
tion web, puis les
concepts des applications
ASP.Net. L’auteur dissèque ensuite, élément
par élément, la technologie. Le propos reste
toujours clair et est illustré de nombreux codes
et copies d’écrans. Il s’agit d’une excellente
base pour démarrer avec ASP.Net. Petit
manque : pas de référence aux notions Web 2.
Ajax en pratique

Auteur : collectif

Editeur : CampusPress

Prix : 49 €
A
vec la folie Ajax, il est
temps de remplir sa
bibliothèque d’ouvrages
sur le sujet, mais encore
faut-il en trouver. On
débute par la définition
du nouveau web, avant
les premiers pas sur Ajax,
présentant le modèle de développement de
Javascript / Ajax. Dès le début, les auteurs met-
tent en garde : Javascript demande une
réflexion, une organisation solide. On apprend
ainsi comment architecturer un bon code Ajax,
notamment avec la notion de pattern, puis on
touche à l’application en elle-même, le client et
le serveur. La sécurité, les performances sont
aussi abordés. La fin de l’ouvrage se concentre
sur les outils, même si les IDE Ajax ne sont pas
présents. Un livre d’introduction qui permettra
de débuter avec Ajax, mais il manque un véri-
table guide de références et des cas concrets
d’applications Ajax. Dommage qu’à 49 euros,
aucun CD-Rom n’accompagne l’ouvrage.
Administration Linux à
200 % tome 2

Auteur : collectif

Editeur : O’Reilly

Prix : 34 €
C
omment maîtriser au
mieux son système
Linux, son administration,
tout en fouillant dans les
entrailles du Tux ? O’Reilly
vous propose une cin-
quantaine de nouvelles astuces, connues ou
non. Ce second tome se divise en 9 parties,
chaque chapitre ayant son thème. On pourra
découvrir la sécurité par Kerberos, FreeNX, la
collaboration Wiki, le stockage, la journalisa-
tion, ou encore la réparation système. Chaque
fiche est indépendante et fonctionne selon le
même principe. On pose en quelques lignes le
" problème " et ensuite on explique.
Hacking interdit

Auteur : collectif

Editeur : Micro Application

Prix : 25,79 €
O
n dit toujours que
pour contrer le hac-
king, il faut connaître les
techniques employées. Cet
ouvrage a l’ambition de les
dévoiler aux utilisateurs
(très) avertis. On débute
par les outils de hacking et pour ce faire, les
auteurs passent par un outil de virtualisation
pour créer un environnement de test. Cette
première étape passée permet de s’attaquer
aux adresses IP pour les sniffer, les scanner.
Ensuite, on passe à la protection des données
et de la vie privée, puis au mail anonyme ou
encore contre les caches que Google sait trop
bien montrer… Les auteurs abordent aussi le
spam, l’usurpation, les réseaux wifi, les virus
et, bien entendu, les méthodes directes d’at-
taque, comme la force brute. D’autres tech-
niques y passent comme la stéganographie et
la manière d’effacer ses traces. Un livre utile à
tous ceux qui s’intéressent à la sécurité. De
quoi passer de bonnes soirées !
Java 5 Entraînez-vous et
maîtrisez-le langage

Auteur : Alexandre Brillant

Editeur : Eni

Prix : 27 €
J
ava 5 introduit de
nombreuses nouveau-
tés et un modèle de
développement diffé-
rent. L’objectif est d’ac-
quérir les fondamentaux
de Java 5, et d’en abor-
der les divers aspects de
développement. Comme de vrais travaux diri-
gés, on dispose d’exercices et de QCM. Chaque
chapitre commence par la durée, les objectifs,
les pré requis nécessaires, le tout accompagné
d’indices. Une bonne manière de jauger ses
connaissances Java.
Dans la même collection : VBA Excel 2003
Gestion de projet
informatique

Auteur : Pascal Mangold

Editeur : Eyrolles

Prix : 12 €
L
a collection "compact"
d’Eyrolles permet en
une centaine de pages
d’acquérir l’essentiel du
sujet. La gestion d’un pro-
jet informatique n’est
jamais aisée et nécessite
de nombreuses qualités.
L’auteur décide ici d’abor-
der le problème par le quotidien, les aspects
organisationnels, l’humain. L’auteur n’hésite
pas à avertir sur le méfait que peuvent avoir
les méthodes utilisées et l’effet pervers que
cela peut avoir sur le projet. Bien souvent, la
réussite du projet, sa bonne conduite, dépend
de simples actions au quotidien. Bref, un livre
en forme d’aide-mémoire que l’on devrait avoir
à portée de la main, que l’on soit développeur,
dirigeant ou chef de projet !
L
ivres
82
Programmez n°87 juin 2006
Par François Tonic
Ouvrages sur Eclipse
- Eclipse 3 pour les développeurs Java (Dunod) : Pour expliquer la programmation Eclipse, le livre pro-
pose plusieurs véritables applications avec le code et les explications nécessaires. Pour les plus accros,
une partie se consacre à la conception de plug-ins. L’ouvrage tente d’aborder l’ensemble de l’outil, au
risque de passer rapidement sur certaines fonctions (l’internationalisation, par exemple).
- Eclipse et JBoss (Eyrolles) : L’approche de l’auteur se veut avant tout pratique, en limitant les points
théoriques. Pour ce faire, la démonstration du développement J2EE Eclipse – Jboss s’appuie sur une
étude de cas concrète. On part des exigences avec la partie modélisation UML pour arriver au codage,
à l’utilisation des différents outils, du développement des JSF et EJB.
Livres p82 18/05/06 18:39 Page 82
01-87 18/05/06 19:44 Page 6
M
M
E
P
J
J
C
X
W
É
-
-
S
P
W
O
01-87 18/05/06 19:44 Page 2

sommaire
/

Attention : Edition sans CD-Rom
les exemplaires diffusées sur certaines zones géographiques, représentent une édition spéciale, sans CD.

n°87

ACTUS
L’actualité en bref ......................................................................................................................................................................................................6 Agenda ....................................................................................................................................................................................................................................12

/ /

TESTS
NetAdvantage 2006 vol 1 : Un pack de composants .Net ......................................................................11

EVENEMENTS
JavaOne 2006................................................................................................................................................................................................................14 Comment Microsoft apprivoise l’open source ........................................................................................................16 Microsoft entre à l’université................................................................................................................................................................18 Microsoft Technology Summit : l'Open Source invité à Redmond ............................................20

/ /

CARRIERES SGBD

..............................................................................................................................................................................................

22

CD-ROM PROGRAMMEZ N°87
Adobe flash player bêta
Editeur : Adobe - Version : 9 beta 3 La dernière version bêta du lecteur flash

MySQL User Conference 2006 ............................................................................................................................................................24 Brèves ......................................................................................................................................................................................................................................25

Adobe flex builder
Editeur : Adobe - Version : 2.0. Environnement de développement et d'intégration puissant et évolutif pour le développement d'applications riches.

/

DOSSIER : Mon Eclipse idéal
Eclipse : Un écosystème omnipotent ....................................................................................................................................29 Compiler son propre SDK Eclipse ................................................................................................................................................31 Exemple d’une configuration Eclipse de production ......................................................................................33 Plug-in Open Source ou commercial : comment choisir ..........................................................................34 Une sélection de plug-ins Eclipse ................................................................................................................................................35 Développer une application web avec MyEclipse ..............................................................................................38 Témoignages ................................................................................................................................................................................................................40

Adobe flex sdk
Editeur : Adobe - Version : 2.0. SDK de l'environnement de développement et d'intégration puissant et évolutif pour le développement d'applications riches.

Eclipse SDK
Editeur: Eclipse.org Version: 3.2 RC3 pour Windows et Linux. Dernière version du SDK de la plate-forme de développement.

Easyeclipse Starter Edition
Pour débuter en développement Java sous Eclipse.

Les plug-ins :
Antlr générateur de parseur suivant une grammaire
prédéfinie.

/

FOCUS SOA : votre nouvel architecte
Architecture et organisation ..................................................................................................................................................................43 Mettre en place une architecture SOA ..................................................................................................................................46 Témoignages ................................................................................................................................................................................................................49 BPEL & SOA, par l’exemple ..................................................................................................................................................................50 Outils ........................................................................................................................................................................................................................................53

Eclipse RSS Reader plug-in pour créer et
connecter des flux RSS.

Eclipseme
Plug-in dédié au développement d’applications mobiles avec J2ME sous Eclipse.

Google Search
plug-in permettant d’utiliser le moteur de recherche Google depuis l’environnement Eclipse.

/

FOCUS : P2P : Le P2P chez les pros

(2e partie)

P2P : un marché en pleine croissance ................................................................................................................................55 Groove Virtual Office : Pour quels usages ......................................................................................................................56 Avalanche : le projet P2P en gestation chez Microsoft ............................................................................58

Hiberclipse
plug-in pour Hibernate, un framework open source gérant la persistance des objets en base de données relationnelle.

/

TECHNOLOGIE
Les nouvelles armes anti-virus NX et DEP ....................................................................................................................60 Windows Workflow Foundation : Une machine à flux ..................................................................................62

EclipseJDO
plug-in permettant d'utiliser la norme Java Data Objet (JDO)

Blacksun
collection de plug-ins incluant des éditeurs C#, CSS, HTML, un constructeur de Builder.

/

PRATIQUE
GlassFish, serveur d’application Java EE 5 ..................................................................................................................65 Enrichissez vos interfaces Java avec Swingx sous Netbeans ............................................................68 Introduction à C++. Net ................................................................................................................................................................................70 Travailler avec le stockage structuré de Windows ............................................................................................72 XML puissance 5 avec XPath et PHP ......................................................................................................................................75 EJB 3.0 : le grand virage ..........................................................................................................................................................................77

PhpEclipse
Transformer votre Eclipse en environnement de développement PHP.

Erlide
Développer avec Erlang sous Eclipse !

Ruby Development Tool 0.8.0
la nouvelle star des langages de développement. Orienté objet. IDE Open Source pour la plate-forme Eclipse.

Apache Beehive
projet open source issu de BEA Workshop, environnement de développement J2EE et orienté SOA.

/

TEMPS LIBRE
Ludique..................................................................................................................................................................................................................................80 Livres ........................................................................................................................................................................................................................................82

Oracle Database 10g Express Edition PHP
Version : 5.1.4 - La dernière version de PHP pour Windows

Sources des Articles

Programmez n°87

3

juin 2006

Altova® XMLSpy® 2006 – The industry standard XML development environment.

Offrez ce qu’il y a de

mieux à vos projets de développement
Bénéficiez d’un aperçu de XMLSpy ® 2006 et comprenez pourquoi il est essentiel de maîtriser XML. Nouveautés dans la version 2006:
l l l l

Support schema-aware XSLT 2.0 Support schema-aware XPath 2.0 Intégration Microsoft® Visual Studio® .NET 2005 Intégration Eclipse 3.1 Altova® XMLSpy, l’outil standard de développement XML, est la référence en matière de modélisation, d’édition, de déboguage et de transformation de toutes les technologies XML. Sa conformité aux normes, ses outils de gestion innovants et son intégration de plate-formes avancées vous permettront d’optimiser votre stratégie. Avec XMLSpy 2006, vous pouvez structurer des schémas XML, créer des documents XML puis générer automatiquement un code d’exécution dans plusieurs langages informatiques. Vous aussi, devenez un génie de la programmation! Téléchargez XMLSpy® 2006 dès aujourd’hui: www.altova.com

evelo C++ D

d: Wante pers

Altova XMLSpy est compris dans Altova XML Suite.
Microsoft, Visual Studio, and .NET are either trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries.

rue René Boulanger. là des bugs. À peine dehors.P.du lundi au jeudi de 9h30 à 12h30 et de 13h30 à 17h00. etc. Maroc. X.com change ! LE MAGAZINE DU DÉVELOPPEMENT force de lui dire qu’il est mort et enterré sous dix mètres de claviers usagés non recyclables.Commission paritaire : 0707K78366 ISSN : 1627-0908 . admettons que notre développeur.abonnements. des technologies. Mais voilà qu’à peine commencé.com Directeur de la Rédaction : Jean Kaminsky Rédacteur en Chef : François Tonic. commerciaux ou open source.83 € . S.Parution le 30 juin 2006 Quels langages choisir ? Pour quel usage ? Les points forts et les points faibles de chaque langage. Maman.com. on lui révèle qu’il doit plonger. il se dirige vers l’entrée en se disant que Web 2 est plus facile. le vendredi de 9h00 à 12h00 et de 14h00 à 16h30 . d’où la nécessité de s’adapter en temps réel pour avancer. J. les démos que les éditeurs présentent dans les conférences. Smedile. PROCHAIN NUMÉRO n°88 . F. Marc. F.programmez@groupe-gli.France métropolitaine : 45 € (295. Maquette : AJE Conseils Publicité : régie publicitaire : ECC. Clune.75014 Paris . Dessins : Michel Piédoue.Tom : 79.18 FF TTC) . Editeur : Go-02 sarl. faute d’outils adaptés et de standards disponibles ! En désespoir de cause.CEE et Suisse : 51. en poussant des "waouh ! encore ! encore !". F. comme dans la démo. qu’ Eclipse écrase tout.76198 Yvetot Directeur de la publication : Jean-Claude Vaudecrane. Ont collaboré : J. R. du Web 2 pour l’entrée. il rend compte ici aussi que la structure complexe imaginée par l’architecte en chef demande des renforcements ici et là à coup d’orchestrations. Il regarde Eclipse pour développer un ou deux plugins à lui et pour apprivoiser la plate-forme RCP. Mazué. Barbin.publicite@programmez. S. Revel O. et des modifications ça et là. C. Mais espoir de courte durée. Tunisie : 55.Tél. l’architecte maison ayant déjà élaboré les jardins suspendus de Babylone en mettant du SOA pour l’armature. Que nenni ! Il faut s’assurer de la compatibilité des frameworks avec le reste de la construction.Fax : 01 55 56 70 20 . : 01 56 31 21 54 Fax : 01 56 31 21 59 . Et aussitôt.com . Que du bonheur ! Ou presque… Bien assis dans un fauteuil.61 € Dom : 62. car on lui assène une droite offshorisée… Bon. Une fois rentré à son bureau avec sous le bras des tonnes de documentation.Autres pays : nous consulter. presque passionnément avec l’Open Source. 6 rue Bezout . tête la première. Jovi. H. Paroissin. J.Abonnement (magazine seul) : 1 an . le développeur se demande comment il va bien pouvoir faire. Leclerq. d’outils en tout genre.M. S.TOUT NOUVEAU TOUT BEAU ! E dito La schizophrénie du développeur À Programmez. Cordonnier.Imprimeur : ETC . Tout le monde est tellement bluffé qu’il veut la même chose chez lui. que les outils automatiques lui volent sa future arthrite. comme un funambule oeuvrant à dix mètres du sol sans filet ! Si en plus.Canada : 64. en pleine forme. L’édition destinée aux abonnés comporte un cd rom et un encart rédactionnel. Padych. Bourdon. C. : 01 55 56 70 55 . il se rend compte qu’il lui faut lire et comprendre des centaines et centaines de pages et voir. J. Bordage. ose même sortir de chez lui sans l’allure d’un geek tendance aqua.juillet/août 2006 . Le développeur doit jongler avec l’immaturité des outils. Quelles formations ? Quels débouchés professionnels ? SPÉCIAL LANGAGES de ASP à XUL Programmez n°87 5 juin 2006 . que tout n’est pas forcément documenté comme il le faudrait. Chable. le développeur reprend un peu espoir quand on lui affirme que son métier change. Stéphane Kaminsky pour la publicité uniquement : Tél. on lui apprend que Windows flirte un peu. il apprend qu’il ne va plus coder comme avant.33 € . de Geyer. dans son entreprise. Il se penche alors sur l’armature mais. Darmet. C. composer au mieux entre les plans et la réalité du codage en essayant de colmater ici les lacunes des outils. C. des librairies.Algérie. B. notre développeur admire béat. F. 75472 Paris Cedex 10 . et que Sun a changé de patron. de l’Eclipse pour la maçonnerie et moult frameworks pour le mortier. beaucoup.11 numéros . trouver le bon outil Ajax / JavaScript pour coder proprement.Haim Lubczanski. Bouillier. que Borland cherche toujours un acheteur pour ses IDE. Le résultat final diffère toujours des plans initiaux. Santin.84 € . après quelques nuits blanches. notre ami le développeur se met au travail.Dépôt légal : 2e trimestre 2006 . Rédaction : redaction@programmez.95 € . comment ne pas devenir schizophrène ? s François Tonic Abonnement : Programmez 22. dans l’affreuse plomberie de ces merveilles de nouvelles architectures et applications de nouvelles générations.

A ctus OUTILS SPÉCIFICATION Zizasoft et le travail en équipe L’éditeur vient de sortir la version 3 de son utilitaire pour les équipes de développement. S’il possède 28 priorités comme un thread normal. Le support des services web est étendu grâce à Jax-WS 2. word et PDF). des priorités et du temps d’exécution. la priorité d’un thread RTS est renforcée. mais aussi des amis. toutes les fonctions de gestion que l’on peut avoir à faire quand on travaille en équipe et en réseau. Lattix vient de sortir un module de gestion de dépendances. Cet outil a pour but de stocker. La visualisation se fait via une carte d’architecture.com JAVA NetBeans tous azimuts ! NetBeans vient de lancer une préversion de Java RTS NetBeans Module. L’outil existait déjà pour Eclipse. de la compatibilité avec Glassfish. Il incorpore deux nouveaux threads spécifiques à la notion de temps réel et doit assurer une meilleure gestion des événements. de comparer les versions de fichiers. chez Sun depuis 1996.zizasoft. Cette spécification est très importante dans l’orchestration de services web d’une architecture complexe. Il est maintenant possible de créer et comparer des snapshots. Le module propose un assistant de création de projet. Ce sac décrit les informations complémentaires propres à EPR comme la description du point d’entrée.Net de Programmez.0. Dans l’édition professionnelle. Pour fonctionner. Site : www. Tout au long du développement. fichiers de registres Windows. La v3 rajoute de nouvelles fonctions de comparaison (support des textes. sur JBoss Portal.com. PEOPLE Codes Sources fait la fête La crème des développeurs . Sites : http://www. Site : www.w3c. Début mai. des services de sécurité. La communauté vient aussi de sortir officiellement la bêta de NetBeans 5. zsCompare.com W3C sort l’adressage pour services web Le consortium W3C propose depuis peu les spécifications 1. OUTILS JBoss continue à évoluer Le rachat de JBoss par Red Hat n’a pas bridé le travail de l’éditeur.jboss. dont certains auteurs du Hors-série . fondateur-animateur du site Codes Sources.0 du web services adressing. il possède un sac de métadonnées. les participants ont fait leur baptême de l’air. des données web sémantique. le module Lattix LDM teste et vérifie la bonne cohérence de l’ensemble. Il permet de définir l’adressage des services web et l’identification des messages. L’outil avertit les utilisateurs des nouvelles versions. il annonce sa démission du poste de patron ! Il est remplacé par Jonathan Schartz. Cette version assure le support de Java EE 5 et donc des EJB 3. indépendamment du transport. Cette triple participation doit assurer à JBoss un meilleur support des web services et du SOA dans ses outils et participer aux futures évolutions des spécifications. on passe par une référence d’un point d’entrée ou EPR. Une cinquantaine de "geeks". dont une édition communautaire gratuite. afin de maintenir l’intégrité des projets NetBeans. Il est disponible en 4 éditions. etc. www.lattix. le W3C et le WS-I. de manager les fichiers d’archivages et même de contrôler la bonne gravure d’un CD. Côté spécification. Il est possible d’utiliser cette spécification avec SOAP. par Nicolas Sorel –alias Nix-. En outre. et même Cyril (Cyrus). champion du PHP étaient de la fête : ces gens là ne sont pas sectaires ! Tout au long de cette folle journée. Cette mouture incorpore un module de mise à jour. La communauté de codes Sources. À partir de 35 dollars (édition Lite). Web Services Addressing adresse des objets pour les applications composées de services web s’appuyant sur les URI. Il supporte le temps réel dur et logiciel. McNealy demeure au sein de la société pour développer les opportunités de marché. Cette annonce " surprise " survient dans un contexte difficile pour Sun qui affronte une forte concurrence sur le matériel et le logiciel et des résultats financiers mitigés. Le module fonctionne avec NetBeans 5. gérer les sauvegardes.Net était rassemblée le 1er avril sur un aéro-club de Cergy-Pontoise. une description WSDL. MacOS X et Linux. Site : www. Disponible sur Windows. JBoss rejoint l’OASIS.netbeans. JBoss s’engage ainsi à assurer le support nécessaire durant le cycle de vie d’une application issue de sa plate-forme. on dispose d’un langage script pour automatiser l’outil. la nouvelle version 2.4 prend en charge les services web dédiés aux portlets distants (WSRP). Fin avril. à bord d’un petit bi-place.net… Programmez n°87 6 juin 2006 .5. ainsi que de faire une revue des changements de code… Bref. HTML.org SOCIÉTÉ Sun perd McNealy Co-fondateur de Sun en 1982. Scott McNealy était la figure emblématique de la société. Nix (t-shirt " geek ") et les stars de .2 de la solution JBoss Operations Network. Enfin. Il autorise l’interaction entre plusieurs services et l’échange de messages asynchrones.org. EPR peut aussi tenir le rôle de cookies lors d’interaction de services. XML. on nous annonçait la version 1. Toujours pour NetBeans.

.

Mais la situation ne doit pas perdurer trop longtemps. WEB Ajax se met à la business intelligence L’éditeur Information Builders. La force marketing et commerciale se portera désormais sur le marché du cycle de vie.fr SOCIÉTÉ IBM rachète encore IBM continue de faire ses achats. plus le temps passera. SP Portail permet d’observer. de modéliser des cas d’utilisation. annonce son nouvel outil : WebFOCUS Power Painter. notamment dans les équipes de développement.sysload. Le support utilisateur sera combiné avec le département Recherche et Développement afin d’avoir une meilleure réactivité et réponse. Site : www. et de nombreux utilisateurs des outils BuildForge travaillaient avec les logiciels Rational. regroupant l’ensemble des IDE. au sens large. En Europe. Pour arriver à cela. l’Angleterre et la France. Programmez n°87 8 juin 2006 . Artix incorpore WS-RM (Reliable Messaging) et on bénéficie d’une implémentation JMS comme API standard. "Les meilleures pratiques SOA exigent d'adopter une stratégie générale d'entreprise et une méthodologie de déploiement par étapes pour répondre aux changements des besoins métier" précise Massimo Pezzini. Pour garantir le bon acheminement des messages entre les services.A ctus ORGANISATION Borland annonce et confirme Après l’annonce du rachat de Segue Software et du désengagement de l’éditeur du marché des IDE. l’éditeur s’appuie sur Ajax pour proposer une interface desktop. La contrainte de ce genre d’outils est de bénéficier d’une interface très ergonomique et très visuelle. " Cette approche des SOA favorise le réemploi des ressources existantes et l'incorporation ultérieure de nouvelles technologies . c'est un gage de création de valeur des investissements consentis dans les SOA". et de sa qualité (avec les tests notamment). serveur). L’éditeur annonce aussi une meilleure prise en compte des environnements z/OS. BuildForge travaille dans l’automatisation des processus de développement logiciel pour aider au maximum le développeur à automatiser.com saturation.0. Vice-Président et analyste de Gartner. application. Car. Site : www. Le secteur des outils de développement. des rapports et analyses. l’éditeur définit une nouvelle organisation. Borland lance sa nouvelle solution de Requirement Definition and Management. permettant de spécifier les exigences fonctionnelles graphiquement. Site : www. de générer des cas de tests. À partir de ces tableaux de bord. les trois marchés clés pour Borland seront l’Allemagne. son utilisation. Et pour mieux répondre à cette vision.iona. Les rapports permettront de définir les ressources mal exploitées et celles surexploitées.com INTÉGRATION Iona rajeunit Artix L’éditeur Iona vient de présenter la version 4 de son outil d’intégration Artix. d’analyser la charge serveur. BuildForge était déjà " IBM Ready for Rational software Business partner ". utilisateur.informationbuilders.com PORTAIL Sysload soigne le serveur L’éditeur Sysload Software lance SP Portal 2.borland. Artix 4. sa solution de reporting de capacité et d’utilisation des serveurs. cela passera par une réduction d’effectif de 300 personnes. Borland a annoncé la finalisation du rachat et de la nouvelle stratégie maison : gestion du cycle de vie. Il travaillera indépendamment de l’éditeur. montrant que le processus de cession est en marche. L’exploitation optimale des serveurs n’est jamais évidente. La conception des flux d’orchestration se base sur Eclipse. Il s’agit de créer. comptera environ 180 personnes. d’exécuter des scénarios. L’outil permettra une personnalisation de l’interface selon les compétences de l’utilisateur. plus le doute sur l’avenir des ex-IDE Borland sera mal perçu par les utilisateurs… Dans le même temps. Cette v4 inclut une orchestration de services avec BPEL afin de coordonner et faire interagir les services. Cette solution regroupe CaliberIT et CaliberRM dans un package nommé Caliber Analyst. C’est au tour de BuildForge d’intégrer l’univers IBM. Caliber DefineIT. Site : www. La v2 de SP Portal complète sa panoplie de tableaux de bord (capacité. l’outil génère des rapports que l’on exploitait dans sa suite bureautique.0 est disponible à partir de 10 000 euros par processeur. pour un montant inconnu. Il s’agit d’un ESB (Enterprise Service Bus) pour les architectures SOA. spécialiste en business intelligence. Tout d’abord. Borland annonce qu’il travaille à trouver un ou des acquéreurs dans les prochains mois. en client léger.

vient d’annoncer l’intégration d’Ajax dans son outil JViews 7. un filtrage d’URL. Ces deux outils sont maintenant intégrables dans Visual Studio 2005. prouvant ainsi toutes les qualités d’Ilog sur la plate-forme Windows / . déclare Shimon Gruper. ce qui apporte un gain d’efficacité significatif. ce qui provoque souvent des interférences ". Site : www.Net. de nouvelles vues de terrain 3D sont aussi disponibles. Ilog est devenu Gold Certified du programme Microsoft Partner.aladdin.com RFID Sybase se renforce dans le RFID RFID devient le nouveau marché à la mode depuis quelques mois.com SÉCURITÉ Aladdin en rempart ultime L’éditeur annonce la version de eSafe 5. Ilog ajoute le format graphique SVG (Scalable Vector Graphics) et la technologie Java. avec identification des utilisateurs dans les rapports.1 facilite . Il dispose maintenant d’une synchronisation des lecteurs et des formats d’étiquettes personnalisés ou encore de la présence du GPIO (general purpose input and output). renforce son support en prenant en charge le plus largement possible les systèmes RFID mobiles ou fixes. si bien qu’elles multiplient lecteurs et antennes à proximité les uns des autres. blocage des téléchargements FTP.A ctus RÈGLES Ilog se met à Ajax Ilog. " eSafe 5 FR2 symbolise un nouveau positionnement du filtrage d'URL qui est désormais un composant critique pour pérenniser la sécurité. Il sera encore plus aisé de construire des interfaces utilisateurs riches pour le Web. Sybase qui éditait déjà RFID iAnywhere. JSF. Le filtrage d’URL intègre notamment une intégration LDAP et d’Active Directory pour l’identification des utilisateurs.sybase. L’éditeur a aussi mis à jour Ilog Rules et Ilog Gantt pour . support intégré des lecteurs RFID de poche. déclare Martyn Mallick.ilog. À Ajax. Elle supporte de nouveaux formats d’étiquettes. Vice-Président des technologies de l'unité Aladdin eSafe.5. la FR2. L’apparition d’Ajax concerne l’ensemble de la gamme JViews.fr encore plus la création d’application mobile RFID. Le module Maps inaugure un tout nouveau moteur cartographique et pour les armées. Dans la foulée. Cette mouture intègre une protection anti-spyware.net. RFID Anywhere permet désormais de contrôler les lecteurs par tranche horaire et GPIO. La nouvelle version 2. directeur des solutions mobiles et RFID d’iAnywhere. " De plus en plus d’entreprises commencent à opérer une montée en charge de leur système RFID. une journalisation du trafic sortant. Site : www. " Site : www. la protection et la productivité des entreprises ". éditeur français d’outils de règles métiers. " La solution idéale pour régler ce problème consiste à coordonner les lecteurs afin qu’ils fonctionnent mieux en mode de lecture intensive.

PDG de Microsoft. Voir : www. l’ " Ajax like " de Microsoft s’appuyant sur ASP. La gamme se compose de Graphic Designer. Il faut un nouveau modèle économique adapté. Le programme annoncé se voulait alléchant : MSN. On utilise le doigt. avec Web 2. La souscription constitue un des domaines sur lequel travaille Microsoft. Interactive Designer et Web Designer. Pour le moment. les participants ont pu voir très rapidement l’ultra portable / mobile Origami. Ce fut aussi une excellente occasion de démontrer toute la puissance des futurs Gadgets de Windows Vista et Microsoft Live. Tout pour réaliser des sites Web 2 de haute qualité. avec le fameux Windows Presentation Foundation Everywhere (WPF / E). la gamme Expression de l’éditeur va bouleverser la donne dans le développement de site Web et le graphisme. une citation de xNav.E vénements Conférence Mix 2006 Paris : le web 2. Le plug-in pèsera environ 2 Mo et devrait être disponible courant 2007. il ne sera pas complet. Durant environ 30 minutes. Tout ce qui est 3D. Ajax et Atlas. rien n’est décidé sur la future licence d’Atlas. ainsi que la publicité (sur le Web) plus largement. comme il s’agit d’un sous-ensemble. le Dashboard d’Apple sauce Microsoft. avec un soupçon de standards venant du W3C. Pour le moment. Les possibilités sont incroyables. les applications. et un important focus sur l’utilisation avec la nouvelle gamme Expression. En suivant cette évolution.0 fait son “show” Organisée en quelques semaines par les équipes de Microsoft France. décliné sa vision sur la connectivité accrue entre tous les nouveaux appareils numériques que ce soit dans la mobilité. Atlas a pour objectif de simplifier le développement de site Web 2. le plus grand flou entoure cette librairie. s François Tonic Programmez n°87 10 juin 2006 . une nouvelle technologie clavier ne nécessitant ni touches. la télévision. Un des gros morceaux de la journée fut Ajax et surtout Atlas. a démontré toute la puissance de la technologie. malheureusement lancé un peu dans le secret. Commençons par la fin. la programmation autour d’un site Web 2. Un des maîtres français des gadgets. Windows Presentation Foundation. fonctionnant sous Windows XP embarqué. Aurélien Verla de Wygwam. Contrairement à l’édition américaine. Internet Explorer 7. du futur guide de télévision en ligne du groupe de presse EMAP(Télé Poche).live. avec démonstration à l’appui. e thème central était le web nouvelle génération. Adobe est le premier visé par cette offensive.0. Une des sessions les plus attendues était celle de Steve Ballmer. capable de fonctionner sur divers navigateurs et systèmes pour exécuter les applications utilisant la technologie WPF. impressionnante. Un grand concours. Sur ce point.com Côté " nouveautés ". le Web au-delà du navigateur et le framework Windows Presentation Foundation. L’objectif est de pouvoir utiliser les IHM développés avec WPF / E. Cependant. On devient vite accro à ces petites applications s’utilisant via Vista ou Live. ni stylet. une démonstration. Officiellement présenté lors de la dernière PDC. entièrement réalisé avec les technologies Microsoft… Sur la concurrence. Si Web 1.0 était gratuit. une prestation de Steve Ballmer.Mix est une conférence nouvelle génération de l’éditeur qui mise surtout sur les intervenants extérieurs à Microsoft en se voulant le plus concret possible. il s’agit aussi de trouver le bon modèle économique. Il s’agit d’une copie de Mix réalisée à Las Vegas en mars dernier. WPF / E est un sousensemble de WPF.com. il a martelé la stratégie de Microsoft sur le Web et les principaux axes de développement. présenté il y a quelques semaines par Microsoft.NET et sur son propre langage XML de conception. cela ne sera plus le cas avec Web 2. cela va du programme télé à la circulation dans Paris. sera absent ! Dommage. eut un grand succès et une belle créativité. Le clavier est totalement repensé par " secteur ". Microsoft doit combler un retard important face principalement à Google qui multiplie l’annonce de services. Tout aussi succinctement. La salle est restée assez dubitative devant les manipulations… Souvent passée sous silence. L La folie des Gadgets ! Des technologies prêtes à déferler ! La suite de la journée fut très intéressante aussi. Et le choix est immense. Comme pour mieux appuyer cela. tout en profitant des technologies de WinFX. à se dépasser. On ne vendra plus des applications comme avant dans les prochaines années… Steve cite au fur et à mesure les grandes nouveautés de Microsoft : Vista. Steve dit que cela aide Microsoft à faire mieux. l’édition française se déroule sur une seule journée au lieu de 3. Les démonstrations présentées montrent tout le potentiel de la librairie. Pourquoi ne pas le mettre en licence Shared Source ? Cela ne pourrait qu’aider Atlas à se développer et à évoluer grâce à la communauté.

vous permettant par exemple de prendre différents types de datasources (dataset. comme celui utilisé pour la création d'un graphique. réduction du temps d'apprentissage. L'éditeur propose une panoplie de composants facilitant cette saisie et permettant de N détecter automatiquement des erreurs. les bulles.net 2. Fiche technique NetAdvantage 2006 vol 1 Editeur : Infragistics Site : http://www. ous avons installé la version complète valable pour le framework .infragistics. L'utilisation de certains contrôles est grandement facilitée par une série d'assistants.0. En résumé. 500 Mo d'espace disque. La richesse fonctionnelle est ici au rendez-vous : nous avons été impressionnés par les possibilités du composant UltraWinChart ou WebMonthView. VS 2005 Les + • • • • Code source fourni pour tous les contrôles Hautement configurable 3 versions par an (souscription) Documentation de qualité Les • logiciel et support testés en Anglais • prix assez élevé pour les développeurs n'utilisant pas . Ce logiciel vise un triple but : réutilisation facile du code. un graphique linéaire.net comme coeur métier . La personnalisation de l'affichage est très grande. que ce soit en C# ou en VB (pour les composants WebForms mais aussi WinForms). vous avez à votre disposition plus de 100 contrôles dans le cadre de la construction d'une application graphique autonome (GUI WinForms) ou Web (Webforms compatible AJAX).com/ Prix : Version d'essai téléchargeable / avec Souscription (MAJ) et Support 875 € Configuration requise: Windows XP n. Ceux-ci ont été baptisés WebTextEdit.etc).T est NetAdvantage 2006 vol 1 : Un pack de composants . etc.net.Net Par Xavier Leclercq Infragistics propose depuis des années une boîte à outils de composants pour professionnels. L'incorporation à Visual Studio 2005 devra passer par l'exécution de l'entrée "Create NetAdvantage Visual Studio Toolbox Tab" du menu nouvellement créé. et en général chaque élément (titres. Avec ce pack. il s'agit d'un très bon investissement dans le cadre de . Tous ces composants profitent des SmartTags de Visual Studio.0. et d'afficher de nombreux types de graphiques comme l'histogramme. et maintenance facile des applications réalisées. le camembert. WebNumericEdit. et vous avez la possibilité de créer vos propres SmartTags pour chaque contrôle NetAdvantage. WebDateTimeEdit. Ce dernier est vraiment ultra puissant. styles. datatable. Les SmartTags représentent une sorte de menu contextuel pour vos contrôles. sous-composants) est hautement configurable. xml.et 2. La documentation est remarquable et vous disposez d'un répertoire "samples" pour chacun des contrôles.

com Du 13 au 17 août 2006 Etats-Unis. DONNÉES agenda MAI / JUIN JUILLET BMC veut un nouveau standard L’éditeur BMC participe activement à la création d’un standard sur la fédération et l’accès aux données.com/devcon Programmez n°87 12 juin 2006 . Ensuite.Veille et gestion de l'information. Conférence annuelle de Progress Software. HP et IBM. Il sera possible de convertir des macros VB sans ajout d’outils tierces. www. le nom de l’outil. La version finale de l’outil est attendue pour le 3e trimestre 2006. Une des principales avancées est une version OpenOffice enrichie de fonctions entreprises. Campus de l’ Université Henri Poincaré . la distribution gratuite de Novell. cet ensemble bureautique doit offrir une alternative à Microsoft. Bâtiment du 1er cycle. Web Engine s’appuie sur SVG et xHTML. Elles cherchent activement des solutions leur offrant une meilleure flexibilité à la fois sous l'angle technique et com- Du 04 au 08 juin 2006 Etats-Unis. il s’agit de pouvoir permettre une visualisation immédiate des pages construites.progress. on applique le test généré sur l’application cible.com Du 20 au 22 Juin 2006 Disneyland Paris. Cette édition étend les fonctionnalités du modèle Business Process. Il s’agit d’une annonce importante pour l’offre SOA Open Source face à la nombreuse offre commerciale.Webdev et Windev Mobile. La v7 permet de créer les données directement dans le module de Business Process. Il peut servir de test fonctionnel. les éditeurs de logiciels pour valoriser le contenu et les prestataires de services. destinée aux experts et utilisateurs des solutions Progress. Les Rencontres Mondiales du Logiciel Libre 2006 (RMLL) Rendez-vous mondial des développeurs et des acteurs importants du Logiciel Libre. surtout qu’Opera fonctionne parfaitement sur terminaux mobiles. Pour Virtual Mechanics.com Du 18 mai au 22 juin TDF Tech 2006 (Tour de France Technique) sur les versions 10 de Windev. Il est multi terminal. Et Zenworks pour le côté administration. organisé par PC Soft. Site : www. Web Engine. Dans la partie visualisation.com ETRANGER Celtix 1. sur le thème : porter les solutions FileMaker sur le Web. utilisable par l’ensemble des éditeurs. On bénéficie d’une interface vers le moteur de workflow de l’éditeur W4. une fois les processus créés. sort en version 7. il s’agit de l’offre BMC Atrium. l’éditeur Mercury annonçait la création de son club utilisateur en France : e-CUME. Il s’agit d’un outil générant des tests et les exécutant.com CLUB Mercury lance son club utilisateur Fin avril. de système. Win’Design.i-expo.0 met en œuvre Jax-WS pour les web services. Site : http://www. est actuellement en version bêta. Il s’agit de pouvoir donner au CMDD (configuration Management DataBase) un standard unique. Novell y ajoute l’outil collaboratif : Groupwise.com mercial et considèrent que les technologies Open Source peuvent répondre à ces exigences " explique Massimo Pezzini.fr Du 31 Mai 2006 au 01 Juin 2006 Paris Expo CNIT La Défense I-EXPO 2006 Salon de l'informatique numérique . www. www.info SEPTEMBRE INTÉGRATION Du 26 au 28 septembre 2006 Paris La Défense.bmc. Caesars Palace. Cette version est créée par OpenSUSE. de validation ou encore de non régression. Hotel New York Gartner Midsize Enterprise Summit Séminaire du cabinet Gartner pour les PME. Selon l’éditeur. la pile . Il réunit les clients des outils Mercury (qui le souhaitent) pour des ateliers de travail et pour des séances plus informelles tous les trimestres. MODÉLISATION Win’Design puissance 7 L’environnement de modélisation de processus métier. Chez BMC.0 arrive ! Presque un an après la création du projet Celtix par Iona. CNIT ERP’2006. Novell sortira Linux Desktop 10. Nommé Open WorkGroup Suite.Net open source.com/europe/index_fr.salons-solutions. BMC rejoint Fujitsu. vice-Président et analyste reconnu du Gartner. Site : www.1 La nouvelle version majeure de la distribution SUSE est désormais disponible.com TESTS Conformiq distribué par Verifysoft L’allemand Verifysoft Technology distribue l’outil Conformiq Test Generator. Elle inclut des outils de virtualisation comme Xen et OpenOffice 2 et surtout Mono.filemaker. " Les entreprises commencent à prendre rapidement conscience que la décision de s'engager dans une démarche SOA ne signifie pas forcément adopter une plate-forme développée par un fournisseur unique. Le développeur décrit dans un modèle UML le test. Le CMDB est une base de données de gestion des configurations. Réunit les producteurs de contenus professionnels.rmll. www. l’utilisation du standard WS-RM pour la garantie d’acheminement des messages ou encore de l’implémentation des standards WS-Adressing.objectweb. Durant l’été.pcsoft. Test Generator fonctionne sur Windows et Linux. Celtix 1. Virtual Mechanics intégrant dans son outil de création web le navigateur Opera.A ctus DÉVELOPPEMENT Une nouvelle plate-forme de développement Web ? Opera et Virtual Mechanics annoncent une nouvelle plate-forme de développement web. et non plus de passer par le module database. il est possible d’utiliser une représentation en couloirs d’une répartition du travail.php Du 04 Juillet 2006 au 08 Juillet 2006 Vandoeuvre-les-Nancy.org SYSTÈME Novell dévoile SUSE Linux 10.verifysoft.virtualmechanics. la 9ème édition du Salon des Progiciels de Gestion Intégrés pour les grandes entreprises et les PME-PMI www. Le besoin d’un référentiel fédérant l’ensemble des systèmes d’informations et des données devient critique pour certaines entreprises.Nancy 1. Site : www. ObjectWeb et Iona annoncent la disponibilité de la version 1.progiforum.1 inclut plus de 1 500 applications. La v10. Site : www. www.net Du 07 Juin 2006 au 08 Juin 2006 Paris Expo CNIT La Défense Progiforum 2006 Salon des progiciels de gestion comptabilité-finance-décisionnel www. Orlando FileMaker Developer Conference. Faculté des Sciences. www.midsizeenterprise. JBI et SCA.win-design.0 de l’outil ESB / SOA. Las Vegas. l’outil fonctionne avec l’ensemble des langages du marché.

.

Plutôt que de lutter ouvertement contre IBM. Une initiative soutenue par les distributions Linux .0 et les JSF.E vénements JavaOne 2006 Sun s’ouvre pour maintenir la communauté Java unifiée Pour contrer Eclipse et maintenir ainsi la communauté Java soudée.700 millions de PC etc. fondateur de JBoss. En s’ouvrant ainsi. Il poursuit son effort sur une alternative séduisante à Eclipse IDE : NetBeans. cette initiative est soutenue par les membres clés d’Eclipse : IBM. directeur technique de Valtech Toulouse. ses outils de développement Java Studio Creator et NetBeans Enterprise Pack.1. et Sun. Sun tente de se positionner sur le marché des outils orientés SOA bien que la concurrence soit déjà très vive. Sun a tenu à rassurer les développeurs en joignant le geste à la parole. BEA. Schillix et BeleniX. composant web qui se positionne entre les EJB 3. les éditeurs de distributions Linux n’avaient pas le droit de distribuer le JDK et le JRE. Pilotée par Oracle. etc. la rumeur enflait dans la blogosphère : Sun va-t-il distribuer le langage Java et les frameworks associés .Standard Extension API for IDEs – vient d’être approuvée par le JCP. Sun libère tous ses logiciels et focalise ses efforts sur la fédération des éditeurs.1 milliard de téléphones d’intégrer l’éditeur WYSIWYG de portables compatibles NetBeans dans Eclipse IDE. et son bus JMS qui rejoint le projet OpenJava MQ.sous licence open source ?" La question n’est plus "allons nous le faire ?". JBoss va mettre tout le monde d’accord en standardisant un modèle de “ 14 juin 2006 La vocation première de Sun est de maintenir l’unité de Java et de tout faire pour augmenter son adoption " Jonathan Schwartz. .Operating System Distributor's License for Java . à terme. Malgré son succès. Après son serveur d’application (Java EE 5) Glassfish et son outil de développement NetBeans. Epaulé par Borland. Comme cette migration prendra du temps. Jusqu’à présent. Elle standardise la notion de plug-in et devrait donc permettre. D’autant que la JSR 198 . Le premier exemple d’interopérapossèdent une JVM bilité est Matisse4Eclipse qui permet .qui leur permet maintenant de distribuer le JDK et le JRE. . Des initiatives qui commencent à porter leurs fruits. Sun a préféré améliorer son IDE NetBeans 5. . C’est une sérieuse alternative à Eclipse IDE " estime Sami Jaber. Java ME. M. Eclipse IDE et la plate-forme de développement de client riche Eclipse RCP s’appuient eux aussi sur des technologies qui ne sont pas standard (la couche graphique SWT notamment). L’autre annonce open source concerne Linux. " Cet outil a fait des progrès fulgurant en un an. Java SE. mais plutôt "comment allons nous y parvenir ?" l'inventeur de Java. Google.Java EE. Sun a donc mis au point une nouvelle licence . CEO de Sun.Ubuntu. " JBoss Seans comble le gap existant entre les composants métier et la couche de présentation (JSF) dans l’architecture Java Enterprise Edition 5 " explique Marc Fleury. Gentoo. Gosling à a précisé Jonathan Schwartz lors de JavaOne 2006. près la nomination il y a quelques semaines de Jonathan Schwartz à la tête de Sun. et Debian – ainsi que Sun Open Solaris.5 (actuellement en version bêta). Borland. d’utiliser les mêmes plug-in dans Eclipse et NetBeans. Oracle ADF et Apache Struts qui représentent autant d’initiatives divergentes. son moteur BPEL Java CAPS BPEL Engine (issu du rachat de SeeBeyond). Les " web beans " seront proposés à la normalisation auprès du JCP. A Eviter les divergences Jonathan Schwartz a également exhorté les développeurs à s’impliquer dans la définition des prochaines versions de Java et des frameworks associés en rejoignant le JCP (Java Community Process). Le JCP décide des principales orientations de la plate-forme Java. l’éditeur a libéré son infrastructure de portail Java System Portal Server 7. SAP. Sun cherche à maintenir la cohésion de sa plateforme et à éviter les " forks " tels que JBoss Seam. la conférence JavaOne 2006 qui regroupait 10 000 développeurs du 16 au 19 mai dernier à San Francisco.25 milliard de JavaCard Java en chiffres Programmez n°87 . même si elles visent au final à résoudre les mêmes lacunes.

etc. alternative à OpenAJAX Soutenu par Sun. .multimédia. En fournissant par défaut des adaptateurs pour Dojo.0 devrait suivre avant la fin de l’année. . Au menu des nouveautés : le support d’AOP (Aspect Oriented Programming). etc. Il peut ainsi changer de librairie cliente sans remettre en cause son code. actuellement architecte chez JBoss. . BEA et Oracle n’ont pas encore annoncé de date precise. les développeurs Java peuvent continuer à utiliser leur langage de prédilection tout en générant des sites web reposant sur une architecture AJAX.Advanced Graphical User Interfaces .. Sun affirme qu’il a réécrit une application J2EE 1. du Java Wireless Client qui permet d’exécuter plus d’applications en même temps. Grâce à cette approche. et enfin du Java Toolkit for CDC qui offre de meilleures performances et une portabilité améliorée.Mobile Service Architecture. " Une initiative cruciale pour faire avancer Java et maintenir sa position de standard d’entreprise " estime Linda DeMichel.com/ajax) et l’autre sur Javascript (developers. elle va faciliter le développement d’applications plus riches . L’extension NetBeans “Mobility Pack for CDC” facilite de son côté le développement d’applications reposant sur CDC.com/ javascript).Spring 2. -Site : http://java. Oracle. 3D. et 30% de ligne de code en moins. Basée sur les JSR 248 et 209 (Advanced Graphical User Interfaces). ingénieur Sun travaillant sur Swing Web Beans fusionne Struts.sun.4 en utilisant 60% moins de classes. d’un look natif et d’une aussi bonne ergonomie que les appli.Sun ouvre deux nouveaux por. Jython. etc.Grâce à la JSR 277 .. Cette initiative est le concurrent direct de l’AJAX Toolkit Framework (ATF) d’Eclipse. le paiement via téléphone portable. responsable EJB chez Sun. c’est Gavin King.site: http://ajax.com/javame s Frédéric Bordage Programmez n°87 15 juin 2006 .0 est disponible.La JSR 209 .Oracle soutient Grails qui vise à améliorer la productivité des développeurs Java en suivant la même philosophie que Ruby On Rails.dev. un meilleur support des services web et d’AJAX au sein des Java Server Faces (JSF) 1. Apache. des outils de test Java Device Test Suite (JDTS) 2. sun. Grâce à l’ensemble de ces évolutions. etc. Prototype et Yahoo Widgets.com/javase/6.cations Windows natives.améliore les possibilités graphiques sur les périphériques mobiles. qui pilotera cette initiative de standardisation. gestion déclarative et contextuelle de l’état de JBoss Seam. et Sun vont concentrer le meilleur de leurs frameworks au sein d’un seul modèle de composant pour la conception d’applications web : les " web beans ". un modèle de composants Enterprise Java Bean (EJB) 3. et une nouvelle API de persistance reprenant le modèle du célèbre outil de mapping TopLink. .Java Module System – Java s’ouvre aux autres Les applications Swing disposent langages : JRuby. Pour s’adapter à l’évolution des téléphones portables Sun propose une nouvelle architecture .Java SE 6 est désormais figé et disponible en version bêta sur http://java. Bluetooth.et couvre des problématiques comme la géolocalisation.2.0 serait aussi 30% plus performant. EN BREF . Java EE 5.sun. Groovy. Borland. Google.sun. tails destinés aux développeurs : l’un sur AJAX (developers. A l’origine d’Hibernate.0.E vénements Java EE 5 disponible Ca y est ! Java Enterprise Edition 5. “ Swing est désormais performante et au même niveau que les autres platesformes de développement " Romain Guy. jMaki abstrait également le développeur du framework qu’il utilise. 80% de fichiers XML en moins. IBM. Seam et Oracle ADF jMaki. le projet open source jMaki permet d’utiliser différents framework AJAX clients (écrits en Javascript) au sein de tags JSF et JSP.0 permettant de transformer n’importe quelle classe Java (Plain Old Java Objects ou POJO) en service transactionnel.0 RC1 disponible. .java. Ces composants emprunteront différents aspects aux frameworks respectifs des éditeurs : meta-données d’Oracle ADF. L’objectif est de faciliter et d’accélérer le développement d’interfaces web. Il a aussi donné à la communauté open source (Apache MyFaces) son kit de développement AJAX qui s’interface avec JSF. . L’implémentation de référence de Sun est d’ores et déjà disponible et JBoss 5. Certaines technologies sont déjà disponibles. C’est le cas du Wireless Toolkit for (CLDC) with Mobile Services Architecture (MSA) qui permet de tester et déboguer les applications reposant sur la JSR 248 / MSA.net Java ME change d’architecture Le concepteur d'interface Matisse sur Eclipse.

Tout cela représente tout de même 500 000 lignes de code. de construire des projets. etc. cette initiative rappelle celle d’Apple avec le projet Darwin regroupant les couches basses de MacOS X. il est interdit de dévoiler. comprenant également le Windows Operation Systems Internals Curriculum Resource Kit. nettoyage des commentaires. les universités et chez les étudiants. Le seul sujet sur lequel nous sommes intraitables est la licence GPL. Analyse. De quoi donner mal à la tête… Les sources sont organisées selon deux grands répertoires : public pour les fichiers include partagés par l’ensemble du système et base/ntos/ qui contient les sources du noyau. Ainsi. On aura droit aux sources du système de fichiers de l’IFSKIT. en interne. L e 25 avril. dans un cadre uniquement d’enseignement et de recherche.E vénements Comment Microsoft apprivoise l’Open Source. le gestionnaire d’énergie et le code spécialisé ainsi que tout le code n’appartenant pas au noyau. Cette initiative vise à permettre aux étudiants d’étudier le source. Le but premier est de pouvoir construire et tester des versions expérimentales du noyau dans le cadre de recherches et de l’enseignement. tout ce qui concerne l’interface. Il y a un " lobbysme ". avec les termes de la licence BSD/Berkeley. Nous sommes tout à fait d’accord. Dans certains cas. Cette version sera accessible aux universités. la documentation des API Windows. organisées pour les enseignants (voir pages suivantes). l’éditeur possède toujours un grand nombre de licences… Windows Research Kernel se base sur XP SP2 et Windows x64. Microsoft a prévu d’inclure dans le package l’outil de virtualisation : Virtual PC. d’enseignement uniquement. L’étape d’aujourd’hui concerne Windows. de le manipuler. en direction de l’enseignement. rendre plus simple la comparaison de Windows avec les concurrents et simplifier les licences d’accès aux sources. car elle implique la négation de l’existence même de l’éditeur. Pour éviter de " crasher " un PC. de publier les sources codes ou encore de publier à des fins commerciales un noyau modifié. excepté le plug and play. au détour d’une conférence. surveiller les performances. même si Windows CE est libre depuis 3 ans. Le code livré ne sera pas livré " brut de fonderie ". 1• WINDOWS devient-il “ libre ”? Ne faisons pas durer le suspense. demeure en dehors de l’initiative. Bref. De nombreux outils seront tout de même livrés avec le projet pour tracer. L’ensemble de ce qui compose NTOS sera disponible. le file systems. axé contenu de formation. Au final. écoles en charge d’enseigner les systèmes d’exploitation et les auteurs d’ouvrages sur les systèmes. Une excellente idée ! Bien entendu. s Jean Kaminsky Microsoft fournit le noyau de… Windows ! W indows Research Kernel est disponible en bêta 1. chez Microsoft. L’objectif est donc de faciliter l’enseignement de Windows. Mais nous ne posons pas cette question pour le simple et vain plaisir d’un titre racoleur. communication devra se faire dans un cadre de recherche. il faudra inclure les notices de copyright Microsoft. malgré les dernières licences Microsoft. s François Tonic Programmez n°87 16 juin 2006 . Il permettra aussi de pouvoir créer des publications basées sur le cœur de Windows. déboguer. Quelques modifications seront effectuées par les ingénieurs maison : simplification du code ici et là. la réponse est " non ". Par certains aspects. Toute distribution. Cette initiative s’inscrit dans un dipositif plus vaste. et ProjectOz. dans le cadre des Journées Académiques. les pilotes. Aujourd’hui. pour la recherche et l’enseignement. La licence est donc non commerciale. Le conférencier en charge de cette annonce était Bernard Ourghanlian. Ce dernier est un projet d’un environnement de système d’exploitation utilisant les interfaces systèmes natives de Windows pour réaliser des expériences sur les principes fondamentaux des systèmes. Bon à savoir : tout ce qui ne sera pas dans le code source sera mis dans une libraire binaire. CTO de Microsoft France. paramétrer… 500 000 lignes de codes L’ensemble sera packagé avec un sous ensemble du DDK et de la documentation sur les pilotes. Microsoft annonçait. même si elle est limitée à un cadre très strict. les sources et l’implémentation d’IPv6 sont disponibles depuis 3 ans. le projet Windows Research Kernel. le réseau. par exemple. Remarque savoureuse de Bernard Ourghanlian : "nous avons corrigé des fautes d’orthographe et supprimé quelques gros mots". pour faciliter l’enseignement. Microsoft vient en en effet de rendre diponibles les sources de Windows. pour Microsoft ? " Nous ne sommes pas opposés à l’open source. Microsoft tente ainsi de reprendre du terrain dans les écoles. Est-ce un pas vers l’open source. qui nous l’a commentée. cette initiative est intéressante.

.

Déjà 70 000 logiciels ont été téléchargés depuis la rentrée 2005. soient enseignées au même titre que les autres." " Nos technos serveurs n’ont jamais vraiment été enseignées. on reçoit un mail avec l’URL du site de téléchargement. Cette initiative de Microsoft France est une première mondiale. Excel. Persuader le corps enseignant et séduire les étudiants. quel que soit le nombre d’enseignants. La seule interdiction : l’utilisation professionnelle ou commerciale. responsable des relations avec les développeurs et avec l’Enseignement supérieur. Jusqu’à présent. Si la technologie Microsoft est la meilleure et répond le mieux au besoin. l’étudiant doit pouvoir choisir la meilleure technologie et non pas une technologie par défaut. bien sûr. on veut ré-équilibrer. le système d’exploitation. l’arrivée de Linux a permis de passer de la station de travail au PC. d’étudiants ou de machines.Ces logiciels. 1000 étudiants se sont inscrits. peuvent être installés sur les machines personnelles des étudiants. il y a un réflexe Linux. après une simple inscription. précise Laurent Ellerbach. depuis le début de l’opération. Enseigner la diversité Cette action directe vers les étudiants marque pour l’éditeur un coup d’accélérateur. Nous nous battons pour que les technologies Microsoft.net/france Après vérification de son statut étudiant. Lancée en 2001. les étudiants peuvent télécharger gratuitement un certain nombre de logiciels de l’éditeur. En effet. quelques écoles de commerce et des lycées avec classes de BTS) sont abonnées au programme. Ce programme inclut les produits serveur. il y a des établissements réfractaires. il y a les 2 OS. Powerpoint et " évidemment les jeux !". et elles devraient être au nombre de 550 en fin d’année. Sun et IBM ont beaucoup investi. Bien comprendre est indispensable pour faire un choix. Parce qu’elles forment les élites de demain. les outils de développement. Pour le développement client. Microsoft ne pouvait pas en demeurer exclu. " Il se trouve que nos technologies ne sont pas les plus enseignées. A son service. " cela bloque au niveau d’un certain nombre d’enseignants. et pour une utilisation à l’école ou à la maison. complets et illimités. Ne sont pas inclus : Word. elle permet l’accès aux logiciels Microsoft. Une centaine d’établissements.msdnaa. Mais aussi. Montant du forfait : 927 euros. une équipe dédiée. En général. Attention : réservé aux étudiants de la Métropole et des DOM-TOM. Il y a une "L’arrivée de Linux a permis de passer de la station de travail au PC " " Les barrières tombent " Parallèlement à l’Academic Alliance. ce téléchargement exigeait que l’établissement d’enseignement ait souscrit au préalable un accord avec Microsoft .E vénements 2 • Enseignement : logiciels gratuits pour les étudiants… Traditionnellement. en moyenne. est devenu une priorité stratégique pour l’éditeur. Cela dépend des applications. moi vivant. D epuis la mi-avril. un code d’accès et un mot de passe. puis 150 par jour en moyenne. Pour le développement web et l’administration serveurs. Ils sont téléchargés directement sur un site de l’éditeur dédié à l’Education. même quand l’école est partenaire de Microsoft. en contrepartie d’un forfait annuel pour l’école. les autres permettent simplement l’accès des étudiants aux logiciels. Paradoxalement. Microsoft ne passera ! " regrette Laurent Ellerbach. l’éditeur a mis en place un dispositif complet d’actions. elle sera certainement choisie. " MSDN Academic Alliance L’arme principale employée pour conquérir les universités est la MSDN Academic Alliance. Près de 500 écoles (universités. rejoint le programme chaque année. écoles d’ingénieurs. forte culture Unix dans les Universités. les universités restent le bastion de Linux et de l’open source. Windows est reconnu. Dans un contexte donné. ou le département de l’université. La moitié l’utilise effectivement. via le Windows Live ID (ancien " passport "). dans le cadre de la MSDN Academic Alliance. mana- Programmez n°87 18 juin 2006 . dans un cadre pédagogique. En 3 jours. mais sont réservés à un usage strictement privé et non commercial. Les logiciels gratuits pour les étudiants Visual Studio 2005 Professionnel • Visio • MS Project • One Note SQL Server 2005 • InfoPath 2003 • Virtual PC 2004 Inscription : www. Le mot d’ordre de ceux-ci pouvant se formuler ainsi " jamais.

Voir également le partenariat avec l’INSA de Lyon (encadré). entre l’école et l’éditeur. WinFX. XAML. • Des partenariats peuvent également s’établir au coup par coup.Net dans la filière " Génie logiciels/Réseaux ". IUT de Reims : " ne pas être lié à un outil ". Dijon : 70% choisissent .Net. Ellerbach. précise L. " C’est surtout dans l’enseignement supérieur qu’il y a des réticences envers Microsoft. Nous refusons toutes les certifications. " Par tradition. Ils repartent généralement avec un livre Microsoft Press en bonus. on forme simultanément à l’Open Source et à Microsoft ". 70% choisissent . CTO et CSO de Microsoft France (Directeur technologie et sécurité) d’annoncer la mise à disposition des sources du noyau de Windows pour l’enseignement et la recherche (article précédent). On se pose la question. La France est le 3e pays représenté. Cet évènement a été l’occasion pour Bernard Ourghanlian. notamment la plate-forme . dont 8 500 Français. Mais il y a une formation . on a toujours favorisé Linux. On vient ici par curiosité. " Université de Bretagne : " nous refusons toutes les certifications ". C’est une expérience unique pour les étudiants participants. " Faire des conférences choquait il y a quelques années. http://www. On n’a pas les moyens de mettre des PC à disposition des étudiants ". reconnaît Laurent Ellerbach. mais aussi de leur permettre d’échanger entre eux ". Une cellule d’une douzaine d’étudiants. Et d’ailleurs unique au monde ". mais d’être capable de s’adapter à toutes les plates-formes et les outils. mais les barrières tombent et les enseignants y trouvent un bon complément à leurs enseignements ". Une des premières actions vers les étudiants avait été. L’objectif serait d’en compter un par établissement.Net. Programmez n°87 19 juin 2006 . • Les étudiants peuvent devenir MVS. En développement. AJAX. développement d’applications d’autre part. En décembre 2005. La quatrième édition des Journées académiques se tenait fin avril à Paris. • L’éditeur suscite la création de Students Clubs. souligne Laurent Ellerbach. on n’avait que de l’Unix.NET. en relation avec des responsables et le service support de l’éditeur. • Un autre partenariat original mérite d’être signalé : le support pour les administrateurs système-réseau de l’Education Nationale. • L’Imagine Cup est un concours qui existe depuis 4 ans. gère un forum auquel sont inscrits environ 1000 administrateurs système et réseau. Nous enseignons la programmation en Java et PHP. Office 2007. Ils sont déjà 90 à avoir mérité le label. ils sont sur des terminaux. Toulouse 3 : " Sur 5 000 à 6 000 machines. Nous sommes orientés Java. réalisé en partenariat. Elle propose aussi de découvrir les dernières innovations technologiques Microsoft. dès 2000. chargés de faire des conférences à destination des professionnels et aussi des étudiants. Le focus était mis sur les produits et les technologies de demain : Windows Vista. Il y en a une cinquantaine à l’heure actuelle. et qui vise à " faire découvrir et aimer le code par les étudiants ". nous refusons d’être liés à aucun constructeur ". Elle gère une catégorie. Ce partenariat est triangulaire : il associe l’école. reconnaît un enseignant. Unix. " Le but est de changer l’image que les enseignants ont de Microsoft. " le terrain de jeu de ces étudiants. après l’Inde et le Brésil. Ils sont très demandés dès qu’ils sortent de l’école ". Réticence. le ministère de l’Education Nationale et Microsoft. A l’école d’ingénieurs. dans le cadre des Journées Académiques. avec l’INSA de Lyon. Montpellier : " A la Faculté. et progression. force d’inertie. de ne pas être lié à un outil. Visual Studio 2005. On est obligé d’avoir une vision ouverte.E vénements L’Université Microsoft Les Journées Académiques rassemblent chaque année environ 250 chercheurs. ils n’ont pas du tout de Microsoft. " La formation d’administrateur système et réseau n’est pas enseignée dans les écoles d’ingénieurs. mais aussi un corps d’une quinzaine d’experts technologiques. Une Majorité de terminaux. Nous voulons avoir un esprit de veille technologique. enseignants et doctorants du monde de l'Enseignement Supérieur et de la Recherche. 200 étudiants avaient suivi les Students Days de Supinfo. s Jean KAMINSKY Témoignages Nous avons recueilli quelques avis d’enseignants.imaginecup. Cette conférence représente une bonne occasion pour les enseignants/chercheurs d’échanger sur des perspectives d’enseignement et d’innovation. gée par Laurent Ellerbach. c’est la vraie vie. (Most Valuable Students). On sent que nos collègues enseignants sont réfractaires. c’est le grand débat.Net Le Centre Universitaire Catholique de Bourgogne est un des premiers à avoir intégré dans son cursus des certifications Microsoft : RéseauServeur d’une part. • Environ 14 000 étudiants ont assisté à ces conférences. le " Projet Hoshimi ". le site web du Laboratoire Supinfo des technologies Microsoft. La coupe compte 60 000 participants dans le monde. On s’est abonné à MSDN il y a un an. mais nous n’avons pas encore de formation à .fr.

Eclipse. Si l’on en doutait encore.. C'est quelque chose de courant.. Au final. c'est un peu se rendre chez l’adversaire.oofrance. Atlas. IIS7 et Rialto Pour les architectes PHP. Tant mieux pour les logiciels OpenSource pour lesquels cet aspect est une force.com. un collaborateur proche de Bill Gates est venu nous présenter quelques unes des recherches effectuées par Microsoft dans ses laboratoires.E vénements Microsoft Technology Summit : 3• L'Open Source invité à Redmond Le " Microsoft Technology Summit " est une conférence destinée aux membres des communautés libres. C’est un peu l’approche PHP de Dreamweaver qui permet de générer les actions de base sans coder. Pour l'instant ils testent. petit boîtier qui enregistre votre vie à la manière d'une boîte noire pour les humains. Didier GIRARD . retouches d'images évoluées telle que la modélisation 3D à partir d'une image 2D ou encore la Sensecam. architecte en système d'informations chez Microsoft France : Romain BOURDON – (WAMP5. Pour un professionnel des solutions liées au monde du logiciel libre. ette année. Microsoft Research Rick Rashid. Chacun regarde ce que fait l'autre ! Sur place. Mais comme l'OpenSource ne signifie pas uniquement Linux. C OpenOffice. On appréciera que quelques fonctionnalités de base soient implémentées telles que l'affichage de listes. De l'autre. D'un coté l'OASIS. Vincent MASSOL . bases de données bien sûr. Dans le monde PHP. finalement peu de Linuxiens. les deux premiers inscrits étaient deux salariés de Microsoft. Un exemple des avancées d'interopérabilité qui pourraient être faites : il a été discuté des API PHP permettant de manipuler des fichiers Programmez n°87 20 juin 2006 . développeurs nous lui préférerons Firefox qui dispose déjà de ces fonctionnalités et même de plus (excepté le mode protégé disponible sous Windows Vista. sa force de frappe est immense. il y a forcément conflit avec les licences libres. Linq Linq est un nouveau langage de requête basé sur un pseudo langage SQL pour les développeurs . Microsoft souhaite y présenter ses technologies pour avoir des retours et aussi permettre une meilleur intéroperabilité de ses outils. Présentation de IE7 IE7 sera le navigateur embarqué dans Windows Vista (et disponible sur XP). ses outils perdront beaucoup de valeur face à ses concurrents. du coup c'est une direction forte. OpenOffice.. objets ou toute autre source de données. un renforcement de la sécurité. L'outil permet de développer du site web classique assez facilement. Microsoft est conscient que sans interopérabilité. de lire / modifier / créer facilement des fichiers bureautiques. se déroulant à Redmond.NET. Notre correspondant local a parlé de créer ce même type d’API pour manipuler des fichiers OpenXML.. l'ajout d'un système d'onglets. OpenXML Le concurrent de la solution d'OpenOffice. Dans ce cadre. Anaska).org : OpenDocument.afup. PHP.org . un organisme indépendant. On retiendra surtout que le conférencier recommande IE7 pour sa grand-mère (sic !) Nous. l'aperçu avant impression et la possibilité de choisir le moteur de recherche intégré à l'interface du navigateur. se rendre chez Microsoft.. si l'utilisateur y gagne. L'outil est pratique et permet de travailler vite et sans mettre les mains dans le code.net) nous a fait une démonstration de Visual Studio. car cela permet de savoir ce que fait l'autre et éventuellement de se repositionner. Gimp . création de menu. Thunderbird. quatre Français étaient conviés à participer à ce sommet par Steve Sfartz. supportant le XML. Au programme. Plus d’informations sur http://www. mais peut être demain Atlas ou d'autres frameworks seront complètement en logiciel libre et ouvert ? La difficulté est d'accepter de ne plus être le seul à avoir la main sur le projet. ndlr). les solutions sont beaucoup plus axées codage et Quelques conférences intéressantes Microsoft et l'Open Source Le modèle économique de Microsoft est basé sur la vente de licences à grande échelle. Lequel des deux sera le premier à être officiellement standardisé ? Dans tous les cas ce sera une grande avancée pour l'utilisateur.ass2l. Le grand intérêt de Linq est sa possibilité d'effectuer des requêtes sur des données quelque soit leur type. www.org / Anaska). Scott Guthrie (responsable des équipes de développement de IIS et ASP. Microsoft pousse son propre format OpenXML. en y regardant de plus près on aperçoit beaucoup de Firefox. mais aussi des données provenant directement du code tels que des tableaux. la plupart des ordinateurs tournent avec Windows. L'année dernière. Microsoft est présent partout. Microsoft est également dans une phase de réflexion quant à publier certains de ses outils sous licence libre. D'autre part. travaille sur la normalisation du format OpenDocument utilisé notamment par OpenOffice. virtualisation des interfaces (écran holographique tactile comme dans le film " Minority report ").(Improve).(Cactus. PHP et d'autres tendances telles que la fondation Mozilla ou Apache. car ce format sera ouvert et permettra à d'autres applications. Parmi les nouveautés. c'est la conférence que nous attendions le plus. au siège du géant des logiciels. PHP.org. Cyril PIERRE DE GEYER – (www. fichiers XML. La bataille fait rage pour la normalisation d'un modèle XML pour les documents des suites bureautiques. Sur place. près de quarante personnes représentant Java (surtout). Maven / Pivolis).NET. au Salon PHP. . tout le monde y gagne.

A la toute fin de la première journée. Programmez n°87 21 juin 2006 . Rien n'empêchera d'utiliser PHP ou JSP pour développer avec. On s’attendait à ce qu’ils cherchent à nous faire changer de bord et ça n’a pas été le cas. Le modèle économique étant de vendre massivement des licences on peut se demander comment cela va évoluer ? • Les efforts de la communauté du logiciel libre continuent à porter leurs fruits : l'impact sur les grands éditeurs du marché est réel. Encore un Framework Ajax. Eclipse. En fait la seule personne qui rabaissait toujours l’OpenSource et qui donnait des conseils pour le juguler était quelqu’un de notre groupe ! Sûrement une recrue pour Microsoft bientôt. cela n'a pas empêché quelques petits " dérives ". les conférenciers nous ont fait une petite présentation du serveur web IIS 7. La grande nouveauté semble être la gestion d'un équivalent des fichiers htaccess sous IIS. pêle-mêle. ndlr). ZendStudio). On y retrouve. Cependant. Microsoft a changé ses habitudes : le Framework sera en partie sous la "Microsoft permissive licence" et ne sera pas lié uniquement à .Net et intègre son langage de script. Conclusion : Microsoft change • Microsoft change.. l'approche ne serait plus une approche site Web mais plutôt une approche application Web dédiée aux systèmes d'information. nous avons été conforté dans la force de nos outils. Créateur de WampServeur (www. Conclusion L'organisation de l'événement était excellente. de gestion de travail collaboratif. Finalement.Net.E vénements aide au développement propre (PHPEdit. freeware existent pour compléter Visual Studio. Responsable du pôle formation Anaska. De Microsoft. la comparaison entre PHP et ASP n'a plus vraiment de raison d'être.wamp5. c'est la mode (même si Atlas fait partie de l’univers ASP. d’autocomplétion. Microsoft entend ainsi essayer de rattraper en partie le retard de IIS par rapport à Apache.net il faut utiliser plusieurs outils et parfois mettre la main au portefeuille (de nombreux outils open source. Cofondateur de l’association française des utilisateurs de PHP. de deboggeur.com).. nous avons eu l'occasion de voir fonctionner un autre framework Ajax qui vaut le déplacement : Rialto. Microsoft est passé à un discours plus nuancé. Pour s'imposer. nous avons rencontré des codeurs et des architectes et le courant est bien passé. le responsable des conférences a fait une annonce surprenante pour nous : un bon de 120 dollars à utiliser dans le " Microsoft Store " habituellement réservé aux employés ! Une fois arrivés sur place. … Pour avoir autant de fonctionnalités en ASP.Net. Ainsi. ndlr). et quoi qu'on en pense il faudra prendre ce paramètre en compte. Après la plate-forme web. • Les outils de la communauté Open Source sont d’un bon niveau. En marge de cette conférence. nous nous sommes rendus compte qu'en fait de " bon d'achat ". il faudrait comparer PHP et . Pour terminer. s Romain BOURDON. Ne connaissant pas où peu les outils de Microsoft nous avions parfois un complexe d’infériorité à cause de la force marketing du géant de Redmond. des outils de profiling. Un choc des cultures et de mentalité. Ainsi nous avions l’occasion de dépenser notre argent à hauteur de 120 dollars dans le magasin Microsoft. la partie cliente avec le framework à la Ajax de Microsoft : Atlas. D'une vision manichéenne avec laquelle il était facile de trouver ses repères. Directeur Technique Anaska et Cyril PIERRE de GEYER. il s'agissait d'un " droit d'achat " .

quelques données sur les compétences actuellement recherchées. elle est encore largement distancée par les Etats-Unis. "totalement indépendante des éditeurs de logiciels de programmation ou de modélisation". responsable de la chaire logiciel au Cnam et membre de l’association promouvant l’histoire de l’informatique et des télécommunications). elle a réuni 771 participants issus de 65 pays. Au programme de la rencontre : l’évolution des compétences informatiques au cours des 20 dernières années (sujet développé par Jacques Printz. encore tenue secrète.4% en 2005 et pourrait être de 1. Ouverte à tous (" étudiants. produite proprement et documentée. le ministère de la Recherche accueillait une belle brochette de participants dans le cadre d’une conférence organisée pour le lancement de la certification en compétence informatique I. président du Syntec.C arrière Jean Mounet. Pour mémoire en effet.8% en 2006… contre 8. sur un sujet fixé et fermé pour une durée limitée de 60h.6% pour les Etats-Unis et 3. directeur études et recherches de l’Apec. Regent Associates. Résultat : +7 % par rapport à 2004. Lauréats de l’édition 2006 : Arnaud Vandyck et Yannick Boogaerts (formateurs en informatique au service de technologie de l’éducation du professeur Dieudonné Leclercq. Pas une épreuve de rapidité…mais apprendre à travailler en réseau ! L’événement s’est terminé par la remise des prix du concours de programmation TopDev 2006. La date. celles des non informaticiens et enfin. tirée d’un cas réel professionnel. répartis en 10. Python). elle ne parvient pas à remonter son retard en matière d’investissements L&S. le domaine L&S représente 30. en nette progression par rapport à 2004 (+11%).S. diplômé de l’ENSI CaenISMRA et titulaire d’un DEA en intelligence artiAu premier plan. a accueilli au ministère de la recherche.html Programmez n°87 22 juin 2006 .com/index_fr. Puis trois débats se sont succédés : les compétences des informaticiens. Analyse Syntec informatique). " L’année 2006 devrait s’inscrire dans la continuité de 2005. . aucun des 4 grands domaines d’activités du secteur L&S n’échappe à la croissance qui s’est globalement accélérée sur un an. puis les éditeurs (25%) et le conseil (6%) – chiffres Pac. OCDE). Troisième place : André-François Landry (consultant indépendant à Saint-Omer au Canada). Chrystel Coassin confie qu’il cherche à "élargir l’équipe" et à ouvrir le concours à des associations d’étudiants. a-t-il indiqué. Quatrième place : Mohamed Ouchra (responsable informatique) et Patrice Manset (développeur Web). I.. 3.2% du marché (source : EITO). " que penser d’un système d’évaluation de compétences individuelles ? " revenu sur cette épreuve qui s’est déroulée lors du week-end du 27 au 29 janvier dernier. Pourtant. Chrystel Coassin. Deuxième place : Fabrice Fontaine (consultant technique indépendant à Paris. Les investissements des entreprises dans les L&S devraient donc encore afficher à court et moyen terme une croissance nettement supérieure à la croissance économique ". Par Claire Padych Logiciels et services : croissance de 7 % en 2005 plan européen. professionnels ou simples passionnés ") et à l’international. ceux-ci ont consacré 51% d’investissements en L&S dans les dépenses IT (Pac. Une réelle prouesse dans " un climat économique franchement peu dynamique ". L’édition TopDev2007 est en phase de préparation. En termes de dynamisme. Son président. Ils sont pourtant derrière le géant des TIC : les opérateurs télécoms qui représentent 44. directeur du département "technologies de l'information et de la communication" à la direction de la technologie. ministère délégué à l'enseignement supérieur et à la recherche. Able (Informations Systems Ability).topdevone.S Able a pour mission de mettre en place une structure indépendante d’évaluation en compétences informatiques . L’épreuve a consisté en la réalisation d’une application Web. En 2005.8% pour la Chine. sera prochainement communiquée et. le secteur L&S devant poursuivre la bonne dynamique engagée depuis 2 ans et afficher une croissance de l’ordre de 6% à 8%.7% pour les logiciels et 20% pour les services. Cinquième place : Andréi Toma (étudiant à l’Insa de Lyon et vainqueur de TopDev 2005). si elle a plus que triplé ses dépenses L&S dans le secteur IT entre 1973 et 2005. C’est donc sur ce point qu’il lui faut continuer à maintenir la pression… Dans la moyenne européenne… En France. par Pierre Lamblin. conclut Chrystel Coassin non sans humour " il faudra plus encore apprendre à travailler en réseau " ! En savoir plus : http://www. Joseph Mariani.com/V_La_Competence_ Informatique. Syntec informatique). Certes. L’ingénierie/intégration se taille la part du lion avec 40% de parts de marché. le PIB français a été de +1. la France se situe dans une bonne moyenne européenne -où l’Italie fait figure de parent pauvre . Viennent ensuite l’infogérance avec 29% de PDM. L’objectif : la mise en concurrence des informaticiens en programmation multi langage multi environnement (Java. faculté de psycho pédagogie à Liège). vient de présenter le bilan 2005 du secteur des logiciels et services.Net. est ficielle). et non pas " d’un exercice de programmation à réaliser le plus vite possible ".is-able. Autre enseignement : sur le TopDev : en route pour la troisième édition ! Le 10 avril dernier. un chiffre d’affaires de 31 milliards d’euros et de bonnes perspectives pour 2006 et 2007. passant de 12% à 41% (chiffres Pac. il est géré par l’association TopDev.php http://www. Syntec informatique.7% de PDM . PHP.2% pour l’Espagne (sources: Xerfi. les participants.

.

Cette modularité est synonyme de meilleures performances " estime Bertrand Matthelié. directeur général de Thinking Network qui développe un moteur MOLAP pour MySQL. par exemple. expert MySQL chez Yahoo ! et qui se demande " combien de temps faudra-t-il avant que MySQL intègre l’interface données de Google : Google Data API ? " “ 24 juin 2006 Nous souhaitons fédérer les initiatives en facilitant le développement de nouveaux moteurs de stockage grâce à notre architecture unique : ouverte et modulaire " Bertrand Matthelié. MySQL jouerait alors le même rôle d’intégration et de fédération qu’Eclipse pour les outils de développement.forge. James Duncan Davidson/O'Reilly Media". Ces interfaces fournissent différents services de bas niveau qui facilitent et accélèrent le développement d’un moteur de stockage spécifique. responsable marketing Europe de MySQL Programmez n°87 . MySQL a décidé d’axer le développement des nouvelles versions de son SGBD/R autour de la modularité. " Si vous n’utilisez qu’un seul moteur. Partant du principe que la nature des applications évolue de plus en plus et de plus en plus vite.com – qui regroupe l’ensemble des projets open source liés à MySQL. il y a des tas de fonctionnalités qui ne vous intéressent pas. C’est grâce à cette modularité que MySQL affiche d’excellentes performances face aux solutions d’IBM." free as in beer " . De nombreux moteurs sont déjà en cours de développement.lors de la conférence qui réunissait ses utilisateurs à Santa Clara (Californie) fin avril. Grâce à ce découplage. à l’aide d’une simple instruction SQL " alter table ‘engine’ ". Si vous recourez à plusieurs SGBD. Ces dernières imposent d’utiliser un seul moteur de stockage transactionnel. " il faudrait pouvoir aller encore plus loin en facilitant le développement d’interfaces et d’optimiseurs SQL spécifiques ". ce qui réduit leur performance. développer leur propre moteur(*). Google et Yahoo ! Techniquement. vous devez embaucher plusieurs DBA et faire face à des problèmes d’intégration " résume Zack Urlocker. etc. même si une table n’est accédée qu’en lecture. recourir à des tables MyISAM pour lire très rapidement des données et à des tables InnoDB pour garantir l’exécution de transactions ACID.) et les différents moteurs de stockage. Mais comme le note Juergen Faisst. MySQL permet d’utiliser plusieurs moteurs de stockage pour répondre aux différentes contraintes techniques d’une même application. vice président de MySQL AB. C’est pourquoi l’éditeur vient de lancer un programme de certification pour les moteurs partenaires ainsi qu’un site . une table peut être migrée d’un moteur de stockage à un autre. " Nos utilisateurs doivent pouvoir choisir le moteur de stockage le plus adapté à leurs contraintes. O n peut.SGBD MySQL User Conference 2006 MySQL veut " eclipser " les bases de données Depuis sa création. responsable marketing Europe de MySQL AB. un moteur de stockage s’appuie sur les " pluggable storage engine API " de MySQL. La modularité comme stratégie Grâce à son architecture à deux étages – moteur SQL d’un côté et moteurs de stockage de l’autre – MySQL veut encourager le développement de nouveaux moteurs de stockage répondant aux besoins spécifiques de chaque application. Une idée qui séduit aussi Jérémy Zawodny. au besoin. Les trois fondateurs de MySQL ont annoncé le nouveau moteur transactionnel Falcon .mysql. et même. (*) : comme l’on fait Friendster. Oracle et Microsoft. Les spécificités du moteur de stockage sont totalement invisibles pour le développeur qui n’a pas une seule ligne de code à changer dans son application. Le moteur de stockage gère les accès disques ou mémoire tandis que le moteur SQL sert d’interface entre le client (serveur d’application.

Ce fut aussi l’occasion. Verrou MVCC plus fin que la ligne. La journée fut un réel succès : plus de 900 inscrits. M Merge Federated MySQL Memory (Heap) MySQL Archive MySQL Cluster (NDB) CSV MySQL MySQL Blackhole MySQL Très rapide en lecture. Si BI City 2007 existe. Le grand chantier concerne le SGBD Ingres en version 2006. Cette suite vise à bâtir du BI et du Data Warehouse. un IDE de développement compatible Ingres 2006. Compatible avec certaines contraintes légales liées à l’archivage de données légales (factures. Moteur ne stockant pas les données. Intérêt Alternative à InnoDB Alternative à InnoDB Supporte un très gros volume de transactions courtes. notamment avec le SOA. Ingres 2006 O n l’avait presque oublié. etc. Transactionnel (ACID). Cette mise à jour inclut de nouvelles fonctions : mirroring de base de données. Base de données logique réparties permet l'accès à des sur plusieurs serveurs physiques. Cela permet de voir réellement l’utilisation des outils. Python. L’après-midi fut largement occupé par les retours d’expériences. Données compressées avant d’être Très rapide en lecture. Cette rencontre entre utilisateurs et retours d’expériences réelles a été une des clés du succès de la journée.ingres. l’éditeur annonce une meilleure intégration à Linux sur l’installation native (format RPM) que ce soit sous KDE ou Gnome. Solaris x86 et x86-64. de discuter du futur du décisionnel. OpenOLAP Q1 2007 Thinking Moteur MOLAP. disponible sous Linux. intégration aux IDE phares du marché (Visual Studio. l’exécution parallèle des requêtes et leur optimisation. manager. stockées sur disque. verrou au niveau des lignes. un fichier plat au format CSV. de nouvelles fonctions pour les SQL Server Reporting Services. DSI de PriceMinister.Adapté selon l’éditeur aux applications " web 2. le SGBD Ingres continue à exister et tente de se redynamiser en annonçant ses plans pour 2006 et 2007. Cette édition mise sur les performances. un nouveau système de partitionnement ainsi que sur la haute disponibilité grâce à des mécanismes de clustering.0 ". Format très ouvert. MacOS X et même Xbox 360 ! L’éditeur travaille aussi activement sur OpenROAD. Transactionnel (ACID). Eclipse). Perl. Test de montée en charge afin de déterminer les goulots d’étranglement liés au code SQL et non au moteur de stockage (par exemple). Le BI est devenu un outil stratégique dans la prise de décision. Côté développement et connexion. Elles ne peuvent Nécessite très peu de pas être supprimées ou mises à jour. verrou au niveau des lignes Berkeley DB Oracle Transactionnel (ACID). l’objectif sera ambitieux : atteindre les 1 500 personnes ! F Tous ces moteurs sont disponibles sous licence GPL. Côté nouveaux systèmes. MyISAM MySQL Non transactionnel. s’intègre à . Alternative à InnoDB BRÈVES SQL Server Service Pack 1 icrosoft a lancé fin avril dernier le premier service pack dédié à SQL Server 2005.Net et Visual Studio et inclut le support de JDBC 3 pour JBoss. s Frédéric Bordage Programmez n°87 25 juin 2006 . Un fichier par table. Ingres 2006 prend en compte OpenVMS Itanium. " Je suis prêt à renouveler l’expérience si j’y trouve un intérêt. L’évolution d’OpenROAD se fera en plusieurs étapes entre 2006 et 2007 : apparition d’un runtime mobile pour Windows Mobile. MySQL Intérêt Support des transactions longues. La matinée fut surtout consacrée à la vision d’Oracle sur le BI. Adapté au web et à certains type de datawarehouse.SGBD Les moteurs actuels de MySQL Moteur InnoDB Editeur Type Oracle Transactionnel (ACID). orchestrée par Oracle autour de ses solutions et de solutions partenaires. Le domaine de SP1 propose aussi un support plus large des différents types de données ou encore la mutualisation des connaissances pour le décisionnel. SQL Server 2005 s’intègre bien mieux avec SAP NetWeaver Business Intelligence via un nouveau composant fournissant les données SQL Server à l’outil SAP. via une table ronde. apparition du Management Studio Express pour l’administration. intégrité référentielle. Collection de tables MyISAM Performances et identiques qui sont vues comme une dépasser les limites seule table par le SGBD. déployer des applications BI. on met en place une équipe ". Networks AG Tous ces moteurs sont disponibles sous licence GPL. L’outil doit supporter les nouvelles fonctions d’Ingres et aura un support complet d’Unicode. Couplée à Oracle 10g. Les moteurs à venir Moteur PBXT SolidDB Falcon Date Q4 2006 Q1 2007 Q1 2007 Editeur PrimeBase XT Solid IT MySQL Type Transactionnel (ACID). Ce renouveau bénéficie aussi à la France qui voit renaître le club utilisation Ingres ! Site : http://www.). chaque table est un fichier. Performances lors de recherches sur des tables contenant de très nombreux enregistrements. On aura d’autres choses à dire en 2007 ". on ne paie pas seulement les licences. se montre enthousiasme de cette formule. il sera possible de rapidement créer. tables d'un serveur distant (pour l'instant uniquement un server MySQL) Table stockée entièrement en mémoire. WebSphere et WebLogic. Cluster temps réel Performance et haute disponibilité Stockage des données dans Simplicité de manipulation. verrou au niveau de la table.com BI City : Oracle s’expose in avril dernier se tenait une journée sur le Business Intelligence. Et désormais. place sur le disque. D’autre part. Ruby. fonction de modélisation graphique basée sur UML. Windows et Solaris. le SGBD supporte PHP. Datawarehouse et décisionnel. " avoir un retour du terrain est primordial. les solutions de l’éditeur. L’investissement est important. sans oublier une meilleure intégration de la mobilité. physiques des disques. Ce fut aussi l’occasion de lancer Oracle Business Intelligence Suite. Justin Ziegler.

quest. On notera l’apparition de nouvelles fonctions serveurs pour la robustesse. Site : www. Cette version est identique à l’édition SQL Server Mobile. Site : www. Elle assurera une synchronisation vers les bases SQL Server et le modèle de développement sera identique à la version desktop.Net 2 mais surtout de PHP. Toad permet d’apporter des fonctions d’administration. Viper se veut une base de données hybride permettant d’utiliser le relationnel classique et XML.SGBD SGBD IBM DB2 Viper : prêt à mordre Disponible depuis plusieurs semaines en préversion. vient de racheter Kashya. La librairie RegexImporter prend en charge cette fonction. compagnie travaillant sur les logiciels de réplication de données et de protection. MySQL. il faut débourser 170 euros.fr MOBILITÉ iAnywhere 10 en programme bêta La filiale de Sybase travaille activement sur la version 10 du SGBD iAnywhere. Le montant du rachat est d’environ 153 millions d’euros. Version d’essai disponible.lgg.com OUTILS Embarcadero vise une surveillance optimale L’éditeur Embarcadero prépare la sortie de Performance Center 2. SOA n’a pas été oublié dans ce SGBD. Monitorer. La principale nouveauté est le support du MacIntel (Mac utilisant des processeurs Intel). Site : http://www. de continuité et de sécurité des données. Si rien n’est connu en détail. DB2 affronte Oracle. spécialiste du stockage. mais avec les limitations des versions express. On retrouve le support de . déployer. La fédération de données est disponible uniquement en environnement DB2. La possibilité d’exposer et de consommer des Web Services facilite l’utilisation de DB2 dans un cadre SOA.com SOCIÉTÉ EMC se renforce dans la réplication EMC.Net 2 et de Visual Studio 2005 ainsi que des nouveaux matériels Symbian.com SGBD 4D en version 2004. il s’agit essentiellement d’une version de maintenance corrigeant des bugs des versions précédentes. confirme la volonté d’IBM de rester sur le marché très concurrentiel des SGBD. La rupture annoncée en fin 2002 avec le projet "Goldfinder" ne devrait pas avoir lieu. Toujours aucune nouvelle sur la prochaine version majeure que l’on attend depuis 2003. le monitoring constitue un élément critique dans la disponibilité des données et les bonnes performances. Elle supporte Oracle. Il est probable que les licences d’accès client seront payantes. nom de code Viper. un nouvel outil graphique servira à administrer. Microsoft lancera une version express de SQL Server dédiée aux mobiles. Outre son fonctionnement sur Windows. la partie développeur a été soignée.ianywhere. Cette version doit apporter un monitoring 24 – 7 des bases de données DB2 sous Linux. On ne pourra pas l’utiliser avec son serveur web.ru/products. Pour l’administration. Pour les gros volumes de données. au plus tard à la rentrée. L’outil supportait déjà Oracle. nouveautés et améliorations. Avec la masse croissante des données et des applications. Toad for MySQL est gratuit mais sans support. Linux et Solaris. Microsoft et MySQL. Elle ne supportera pas Xpath. avec l’ajout du Zend Core.Net (1. OUTILS Quest Software aide toujours MySQL L’éditeur Quest Software rend disponible la version 2 de son outil Toad for MySQL. Sybase et Microsoft. une version express gratuite de Viper sera disponible sans doute vers la fin de l’année. Site : www.emc. on dispose d’une fonction de compression. SQL Server. Unix et Windows. pour bénéficier d’un support. EMC souhaite injecter des outils et technologies dans le stockage. le prochain DB2. un module sera à acquérir si on en sort. Site : http://www. Site : http://earthquakes.aspx MOBILITÉ SQL Server partout Pour investir l’ensemble des marchés. d’un gestionnaire de sécurité ainsi qu’un enregistreur de macro. Cette v2 inclut un module de " version control integration " pour vérifier rapidement le code.0. Il s’agit d’une très importante mise à jour avec plus de 200 Programmez n°87 26 juin 2006 . le support de .4d. DB2 Viper devrait arriver en version finale durant l’été.4 L’éditeur français 4D a une nouvelle fois mis à jour sa base de données. Une première version devrait être disponible durant la prochaine TechEd (novembre).embarcadero. La licence développeur coûte 270 euros. de performance et sécurité aux bases MySQL.4. Facilitant ainsi l’accès aux bases DB2 depuis une application PHP.com OUTILS Importez du texte dans une base Comment importer automatiquement des colonnes de textes dans différentes bases ? L’import de données est souvent une corvée à incorporer dans une application. L’éditeur met en avant cette dualité en précisant que XML est supporté nativement et que l’on peut manipuler des données XML sans aucune transformation. Fonctionne uniquement sous . Estampillée 2004.x pour le moment).

.

Mais encore faut-il savoir par où commencer. etc. les autres IDE ne sont pas morts. Pour autant. e passage de Borland à Eclipse pour JBuilder puis le retrait de ce même Borland du marché des environnements de développement avec la vente de l’ensemble des IDE n’a fait que confirmer la suprématie d’Eclipse. le réflexe Eclipse est tentant. ergonomie moyenne. IBM. Cependant. NetBeans semble être le challenger n°1 alors que Jbuider. L’autre L avantage de l’outil est de s’appuyer sur une communauté d’éditeurs et open source très active aussi bien dans la définition de nouveaux frameworks que dans la conception de nouveaux outils. Software AG. Oracle. Quand on débute le développement Java. IntelliJ ou encore Jdeveloper peinent à rester dans la course.D ossier Mon Eclipse idéal À peine 5 ans ont été nécessaires à Eclipse pour s’imposer comme l’outil de développement Java par excellence et devenir une plate-forme technique et technologique de référence. De très nombreux environnements de développements utilisent Eclipse. pas de certifications des extensions. s François Tonic Programmez n°87 28 juin 2006 . La profusion de plug-ins compense le manque de fonctions disponibles par défaut dans l’environnement de développement. Adobe. Que vous soyez pro ou amateur d’Eclipse. pour ne citer qu’eux ! Cette utilisation se fait sous deux formes essentiellement : intégration de socle Eclipse pour bâtir une solution " packagée " dessus ou fournir des plug-ins. Zend. BEA. la plate-forme souffre de plusieurs maux : complexité du développement de plug-ins ou d’applications RCP. qualité des plug-ins très variable. Compuware. il est toujours utile de connaître les fondamentaux. Comment choisir des plug-ins ? Quelles précautions prendre ? Peut-on recompiler son environnement Eclipse ? Faut-il créer sa propre configuration ou utiliser des distributions clé en main ? Autant de question que nous allons aborder dans ce dossier.

Aujourd’hui. Un des sites francophones le plus connu est EclipseTotale. tester des plug-ins pour livrer un environnement clé en main au développeur. Jface et l’interface utilisateur (Generic Workshop). C++. de packager l’IDE Eclipse et différents plug-ins. Il s’agit. de tester les plug-ins et surtout de vérifier l’interopérabilité entre les différents modules ! Pour démarrer rapidement. de qualité et de pertinence très inégaux. Vous trouverez aussi des " distributions métiers " construites pour répondre à un problème business comme le management. Basiquement. officielle ou non. Le but est de fournir aux développeurs un socle fonctionnel complet. l’édition entreprise démarre à 450 dollars avec support. Desktop Java. C’est une tendance vouée à se renforcer. il faut absolument construire une distribution type déployée sur l’ensemble des postes de développement. capable de coder en Java. IDE. E clipse n’est pas mono langage mais véritablement multi langage. Ainsi.D ossier Eclipse : un écosystème omnipotent ! On ne présente plus Eclipse. grâce à une demande elle aussi en croissance. Programmez n°87 29 juin 2006 . c’est l’idéal. framework. intégrer. Il est l’outil majeur dans les développements Java / J2EE et bientôt sur Web 2. Vous trouverez aussi des distributions de développement orienté. LAMP. C. sont nombreux.95 euros. les ressources. son principal concurrent. Se former à Eclipse Maîtriser Eclipse n’est pas chose facile. EasyEclipse propose des éditions de démarrage. Il existe parfois des versions communautaires gratuites et des versions payantes incluant le plus souvent du support. dont plusieurs en Français. Il faut en effet garder l’homogénéité de l’environnement de développement et éviter toute installation sauvage. À la fois. la librairie d’interface SWT. Il existe déjà une offre de formations relativement étoffée. la plupart du temps. multi plate forme. Yoxos propose trois éditions de sa distribution avec possibilité de souscription et de support. Intuit Eclipse illustre cette capacité modulaire d’Eclipse. Eclipse repose sur un runtime OSGI. PLB propose ainsi une formation de 4 jours sur la conduite de projets Eclipse en étudiant CVS. NetBeans. souvent open source. les distributions Eclipse commencent à se multiplier sur le marché. a su en quelques années bousculer le marché des environnements de développement au point de forcer l’acteur historique Borland à passer à l’ennemi… Eclipse ne risque pas de s’arrêter en si bon chemin. Il existe plusieurs dizaines d’ouvrage sur Eclipse et son utilisation dans le développement. mobile. Toute une offre de formation existe. extensible. etc. Ant et Junit. plate-forme client riche. la distribution (supply chain). les forums Eclipse. Valtech n’est pas en reste. Cette méthode a l’avantage de vous éviter de chercher. parfois commerciaux quand il s’agit d’éditeurs. par contre. Le premier élément est la documentation. etc. À cela s’ajoutent le Java developments tools. il existe presque un millier de plug-ins. point de départ pour démarrer et apprendre les premières fonctions (malheureusement pas toujours complète et souvent volumineuse et en Anglais). sans pour autant " détruire ". Il se pose désormais en plate-forme universelle pour les outils. les documentations. Eclipse. L’un des intérêts d’Eclipse est son architecture ouverte et modulaire avec l’ajout de plug-ins. La communauté étant très active. Il fonctionne sur de nombreux systèmes. sans souscription (donc sans mise à jour) est à 24. serveur. issu des laboratoires IBM. Le but de toutes ces distributions est toujours le même : assembler. Quand vous travaillez en équipe. C’est une bonne manière pour se former et se perfectionner dans certains domaines. L’édition développeur. Les distributions Eclipse À l’instar des distributions Linux. l’IDE. des extensions à l’environnement. C#. La formation Eclipse est un marché en plein essor. Il existe aussi des initiatives open source comme EasyEclipse pour bâtir une distribution entièrement ouverte. en Français ou en Anglais. Il est ouvert. commerciaux et open source.

Les premières " versions " seront disponibles dans quelques semaines. Le but est de soutenir. pour garantir le bon fonctionnement des différents modules en production. Surtout.org son propre catalogue des plug-ins commerciaux et open source. EMF.eclipseplugincentral.oneclipse. 2006 : la fondation regroupe 12 développeurs stratégiques. le monitoring. suivre la croissance du marché Java émergent. SWT. Sysdeo (groupe SQLi) propose aussi des formations similaires.L’adoption par les développeurs commence à croître fortement. Il s’agit de fournir. Seuls les projets officiels sont en quelque sorte adoubés par la fondation.0). de l’open source. S’y retrouver dans la jungle des plug-ins Comme vous allez le voir dans la suite du dossier. Il s’agit de fournir une interopérabilité entre les principaux frameworks Ajax. il devient nécessaire de mettre en place une véritable procédure de certification. moins dépendant. Il devrait prendre en compte les spécifications du Service Component Architecture (ou SCA). C’est un bon point de départ pour toute recherche. Les prix sont très variables. le tracing et les tests. Il recense la plupart des plug-ins disponibles par catégories (28 en tout).com). tout du moins. les outils de données. . . eclipse plugins (www. les outils Web.VE (Visual Editor) : projet visant à créant un constructeur d’interface utilisateur supportant Swing. En complément. Un assistant de création web service est disponible.2.WTP (Web Tools Platform) : l’objectif est d’étendre la plate-forme avec des outils pour développer des applications web de type J2EE. A noter que l’Ajax Toolkit Framework. SQL. 8 développeurs à plein temps et plus de 80 sociétés membres de la fondation et/ou utilisant Eclipse dans leurs solutions. . Il existe aussi : oneclipse (www. "Eclipse Ready". avec la création du consortium Eclipse.info).EMF (Eclipse Modelign Framework) : framework de modélisation et de génération de code dédié aux outils et applications basées sur un modèle de données structurées.TPTP (Test & Performance Tools Platform) : il doit fournir des outils sur l’optimisation.com). cet été. Pour que l’écosystème d’Eclipse continue à croître. On pourra aussi citer : Anyware Technologies. L’un des plus connus est Eclipse plugin central (www. comme BEA avec Workshop Studio. Il n’existe pas de certification officielle de la Fondation Petit historique 1998 : IBM commence le développement d’un environnement de développement qui se nommera Eclipse. Les grands projets Eclipse Eclipse s’occupe d’une série de projets visant à créer des socles techniques / technologiques sur de nombreux domaines applicatifs et de développements liés à Eclipse et utilisables par les développeurs. ac6. la disponibilité d’Eclipse 3. Espérons que cela se mette en place d’ici fin 2006. la fondation mène un projet ambitieux : Callisto. avec des batteries de tests pour homologuer le plug-in. mais comptez entre 1 200 et 1 700 euros. Mais c’est aussi l’année des critiques du marché sur le contrôle d’IBM sur Eclipse et le flou sur l’avenir de l’outil. Certification. Il existe plusieurs manières de procéder. en pleine phase de conception. packagent Programmez n°87 30 juin 2006 .eclipse-plugins. des assistants. "Eclipse Incubation". XML. Il est cependant moins pratique dans sa présentation et dans la mise à jour des informations. Callisto touche le reporting avec BIRT. Sites d’annuaires Le plus pratique est de passer par des catalogues. Il inclut des outils HTML. le développement C/C++.STP (SOA Tools Platform) : construire un framework et des outils extensibles orientés SOA. Javascript. 2001 : le projet adopte le virage de l’open source. leur propre Eclipse avec des plug-ins. s François Tonic Eclipse. CSS. "Eclipse Proposals" mais ils n’apportent aucune certification ou garantie explicite de qualité. sans fournir une unification des projets. fait partie du WTP. Le site officiel La fondation propose sur eclipse. Il utilise XMI pour les spécifications du modèle. etc. une des difficultés est de pouvoir trouver les bons plug-ins pour créer son environnement de travail. des commerciaux. Première conférence EclipseCon ! 2005 : annonce d’Eclipse Rich Client Platform. Il existe bien des logos officiels "Built on Eclipse". . C’est pour cela que des éditeurs. logos Un des points négatifs mis en avant concerne la diversité des plug-ins. Il y a forcément une qualité très variable d’un plug-in à l’autre. 2004 : création de la fondation Eclipse pour rendre l’environnement indépendant d’IBM. dawan. Voici une petite sélection : . Il en existe plusieurs. les plus actifs et les nouveautés sont bien mises en avant. 2003 : année capitale pour l’environnement qui débarque dans sa première version majeure (apparition des préversions de la 3.D ossier avec 3 jours pour personnaliser l’environnement et faire du travail en équipe. la livraison de 10 projets Eclipse.

Une fois l’outil Ant correctement installé et configuré. sous licence Eclipse Public Licence dont l’objectif. pourtant c’est justement ce qui fait toute la puissance de cette plate-forme. … Dans les parties suivantes. nous verrons comment compiler et personnaliser quelque peu son propre SDK Eclipse. ou simplement que vous ayez envie de personnaliser votre outil fétiche. mais également de ne rien faire de particulier ! Cela semble être paradoxal. à l’origine.zip)’ ayant le fichier associé ‘eclipse-sourceBuild-srcIncluded-3. COBOL pour le Cobol. Une fois que vous avez téléchargé Ant sur le site d’Apache (http://ant. Nous effectuerons ces étapes sur un système d’exploitation Windows XP. E clipse est une plate-forme libre. ainsi que les scripts de compilation pour les différentes plates-formes. Cela vous permettra d’obtenir une plate-forme qui convienne réellement à vos besoins. est de permettre aux utilisateurs de pouvoir réaliser n’importe quelle tâche. Vous aurez ensuite besoin d’Apache Ant (version 1. N’oubliez pas d’ajouter le répertoire contenant ces 2 exécutables dans la variable d’environnement PATH de votre système. CDT pour le C/C++. La procédure concernant les systèmes Linux. Ainsi. voici quelques informations pour vous guider dans les premières étapes de l’élaboration de votre propre distribution. Téléchargez les exécutables zip et unzip (attention unzip est compressé dans l’exécutable proposé au téléchargement. (Fig 1) La figure 2 représente une arborescence possédant Ant. Celui-ci est constitué d’exécutables permettant de compresser et décompresser les fichiers nécessaires à l’assemblage final du runtime Eclipse. ajoutez à la variable d’environnement PATH le chemin vers le répertoire bin.zip’ d’une taille d’environ 63Mo.2.D ossier PRATIQUE Compiler son propre SDK Eclipse L’adoption toujours croissante d’Eclipse par les entreprises a su faire de cet IDE Java. Ce que l’on désigne souvent sous le nom d’Eclipse n’est autre qu’une plate-forme permettant la création d’applications de type client riche . afin que le script de compilation soit capable de trouver ces deux utilitaires lors de l’assemblage.1 au minimum) pour exécuter les scripts de compilation et d’assemblage. un des leaders du marché. un autre utilitaire est indispensable à la compilation d’Eclipse : Info-ZIP.4 au minimum. vous aurez évidemment besoin des sources de celui-ci.apache.2. Pour compiler Eclipse. c’est l’utilisation du plug-in JDT (Java Development Tools) qui transforme Eclipse en un puissant IDE Java ! Il existe également un certain nombre de plug-ins pour les autres langages.2 sous le libellé ‘Source Build (Source in . Attention : n’utilisez pas de chemin possédant un caractère espace dans le nom. c’est l’ajout de plug-ins à cette coquille ‘vide’ qui le rend si utile. Après cette procédure. par exemple PHPEclipse pour le PHP. … est sensiblement la même à quelques excep- (Fig 1) tions près qui sont notifiées dans les instructions de compilation fournies dans les sources du SDK d’Eclipse. Pour la compilation d’une release 3. Le résultat de cette compilation vous donnera un SDK Eclipse opérationnel que vous pourrez utiliser immédiatement. L’archive contient les sources Java et les ressources. Si l’assemblage venait à échouer.1. vous devez préparer votre environnement afin de rendre possible la bonne construction de votre distribution. l’installation d’un JDK 5 sera requise. si flexible et surtout si populaire. comme les images. Que vous soyez une entreprise désireuse d’adapter votre distribution Eclipse à vos processus de développement. cela serait sûrement dû à une mauvaise configuration du PATH de ces deux utilitaires. le succès d’Eclipse provient aussi de sa flexibilité qui permet à chaque entreprise d’adapter cet outil à ses propres besoins. ajoutez la variable d’environnement ANT_HOME contenant le chemin vers le répertoire où vous avez installé l’outil. Info-Zip et les sources du SDK d’Eclipse à la racine du disque c:\ : (Fig 2) Les prérequis à la compilation Avant toute chose. vous devez disposer d’un JDK 1. sinon l’exécution du script de compilation se soldera par un échec.1. vous pourrez d’ailleurs tester cela en entrant la commande ‘ant’ dans une console et vous assurer que celle-ci est reconnue. Dans notre Programmez n°87 31 juin 2006 . il vous faudra donc exécuter celui-ci pour décompresser le programme unzip). Evidemment. Ant devrait être correctement configuré. et enfin. Outre sa gratuité. Elles sont accessibles depuis la page de téléchargement de la version 3. Pour les développeurs Java. MacOS.6.org/) et décompressé celui-ci. avec notamment la compilation du SDK d’Eclipse. tous les utilisateurs possèderont vos modifications sans jamais avoir à réaliser l’opération de nouveau après la compilation. et surtout de vous familiariser avec la méthode automatisée de compilation du code source Java et de l’assemblage du runtime d’Eclipse. Modifier l’image de démarrage L’un des intérêts de la compilation d’Eclipse est de pouvoir modifier les ressources avant la construction de l’archive zip du runtime. Unix.

0 • http://www.org/legal/cpl-v10. s Julien Chable .html Eclipse Public Licence V1. nous allons simplement changer l’image de la fenêtre de lancement d’Eclipse. ws le système de fenêtrage et arch le type de processeur cible.1. (Fig 3) Lorsque votre image est modifiée et enregistrée comme à la figure 3. haitent uniformiser leur pratique des règles et méthodes communes de développement .zip.eclipse. L’image que vous devez modifier se trouve dans le répertoire plugins/org. Pour ce faire. décompressez cette archive zip comme pour n’importe quelle version d’Eclipse que vous avez déjà pu installer.1. • http://ant. nous compilons pour un Windows XP tournant sur un processeur x86.org/eclipse/downloads/index. <os>.bmp. puis lancez l’exécutable eclipse. Vous devriez obtenir un résultat identique à la figure 6.org/ Site officiel d’Info Zip • http://download.xml auront vite raison de vos désirs.eclipse.sdk. vos ressources modifiées ou ajoutées. vous allez devoir lui donner plusieurs informations qui sont fonction du système d’exploitation. platform de la racine du répertoire des sources du SDK d’Eclipse. et se nomme splash.eclipse.org • http://download. (Fig 4) Pour lancer ce script correctement.php page de téléchargement des sources toutes versions confondues. Avec les arguments de la ligne de commande que nous avons spécifiés. Pour plus d’informations sur les options et les combinaisons possibles.Développeur ProxiAD Liens : • http://www.eclipse.bat fourni à la racine du fichier zip des sources d’Eclipse. (Fig 5) (Fig 6) La compilation. le fichier s’appelle win32-win32-x86-sdk. il ne vous reste plus qu’à exécuter le script de compilation nommé build.html Les instructions de compilation d’Eclipse • http://sourceforge. quelques modifications au niveau du fichier assemble. Pour tester votre distribution fraîchement créée.eclipse. vous pouvez vous reporter à la documentation située dans l’archive des sources du SDK d’Eclipse.2 et de ses sources • http://download.<ws>.bat –os win32 –ws win32 –arch x86 (Fig 4) L’argument os représente le type du système Allez plus loin dans la personnalisation de votre distribution Le processus de création d’une distribution Eclipse personnalisée représente aujourd’hui un réel besoin pour les entreprises qui sou- Programmez n°87 32 juin 2006 . Dans cet article. L’ajout de plug-ins supplémentaires avant la compilation du SDK n’est pas réellement complexe si vous maîtrisez un tant soit peu les scripts Ant. Ce script configurera l’environnement du Classpath avant de lancer les scripts Ant appropriés à la version d’Eclipse que vous souhaitez construire. et à condition d’attendre quelques longues minutes. enfin ! Une fois votre environnement correctement configuré. Dans notre cas. cela dans le but de garder un processus de développement fiable et maîtrisé en fournissant un outil unique à ses développeurs.org.org/eclipse/downloads/drops/R-3. ceux-ci n’influenceront pas le résultat de votre compilation.2-200601181600/srcIn cludedBuildInstructions.D ossier (Fig 3) cas.1.2-200601181600/index.exe. Si tout a été configuré correctement. d’exploitation.eclipse.apache. il ne vous reste plus qu’à passer à la compilation. votre attente devrait aboutir sur un écran similaire à la figure 5 vous indiquant que la compilation et l’assemblage se sont déroulés avec succès.org/ Apache Ant • http://www.php Page de téléchargement de Eclipse 3. voire quelques heures selon la puissance de votre machine.info-zip. du système de fenêtrage et du type de processeur cible qui exécutera au final votre version d’Eclipse.org/legal la partie légale du site Eclipse.eclipse. (Fig 5) Ne vous souciez pas des warnings incessants qui s’affichent dans la console de sortie lors de la construction. nous n’avons fait qu’effleurer le sujet de la personnalisation du SDK d’Eclipse au travers de sa compilation. <arch>. La commande à exécuter pour lancer la compilation est par conséquent la suivante : build.net/projects/ceb/ Site officiel de Custom Eclipse Builder Le premier lancement Le résultat de ce travail se trouve dans le répertoire result à la racine du répertoire des sources.org/eclipse/downloads/drops/R-3.

Pour les chefs de projet.html).jboss. exécuter des outils de génération tel que AndroMDA. Le plug-in JBoss IDE intègre déjà le plug-in Hibernate. voire même d’une façon quasi automatique. consiste simplement à augmenter la taille du tas lors du lancement d’Eclipse avec les arguments -vmargs –Xms256M –Xmx512M (256 Mo de mémoire au minimum et 512Mo au maximum). La qualité Assurer la qualité de son application en favorisant la maintenance du code et en évitant les bugs est devenu indispensable. déboguer et déployer leurs applications depuis l’IDE. Il existe plusieurs plug-ins Eclipse capables de réaliser cette tâche. sans pour autant perdre un temps précieux à chaque tentative de modification de l’application. Le serveur d’application Prenons l’exemple où le serveur d’application J2EE utilisé pour votre projet est la dernière version de JBoss (www. c’était l’une des solutions possibles. Les frameworks Les frameworks font partie intégrante des développements Java.org/). Les outils de revue de code vont justement dans ce sens. ce vergure. Ils permettent aux développeurs de pratiquer un autocontrôle et une revue de code beaucoup plus rapidement.D ossier Exemple d’une configuration Eclipse de production qui ne nécessite pas d’installation supplémentaire si le premier est déjà installé. qui permettent par exemple de générer les modèles complets de classes. l’utilisation de plug-ins est indispensable pour espérer créer. ce genre d’outil est utilisé pour mesurer le degré de qualité du code généré par les développeurs. Attention. La souplesse d’Eclipse permet de l’adapter à de nombreux processus de développement. les choses ne sont pas aussi simples pour les développements J2EE.org/) est devenu une ‘best practise’ pour ce genre d’opération. Il est très important pour les développeurs de pouvoir lancer. compiler et déployer une application J2EE dans un serveur d’application. nommé JBoss IDE (http://www. mais construire l’ensemble d’une application avec les bonnes dépendances. Si vous ne satisfaites pas leur besoin. nous allons voir un exemple de configuration qui a déjà fait ses preuves dans des projets réels. leur exécution se soldera par un échec de type OutOfMemoryError. Utiliser Eclipse pour le développement de ses applications J2EE est une solution adaptée à condition de savoir quelle configuration adopter ! Voici un exemple concret d’une configuration utilisée en production.net/). L’utilisation du plugin officiel associé à ce serveur. La construction de l’application Gérer un serveur d’application ou créer des fichiers de mapping est une chose. La parade pour exécuter ces goals directement dans l’IDE.com/products/jbosside/ downloads) permet de répondre simplement et efficacement à ce besoin. arrêter.jboss. grâce au plu-gin JDT directement disponible dans Eclipse. Cela peut vous valoir de longues heures de débogages inutiles. compiler puis empaqueter le tout. Il s’avère quelquefois qu’une version d’Eclipse ne soit pas entièrement compatible avec la version de certains plug-ins. Maintenant à votre tour de trouver la configuration qui fera de vos projets des succès ! s Julien CHABLE Développeur ProxiAD Quelques conseils L’utilisation d’Eclipse n’est pas sans poser quelques petits tracas dans les projets d’en- Programmez n°87 33 juin 2006 . cette configuration est étroitement liée aux outils utilisés en amont. la solution que nous avons retenue pour nos développements est CheckStyle qui est disponible sur sourceforge (http://eclipse-cs. gardez cette configuration tout au long de ce projet sans jamais en changer. Par conséquent. Une configuration parmi tant d’autres La configuration présentée dans cet article reflète un processus de développement spécifique avec Maven en tant que pilier central.sourceforge. Par exemple. notamment pendant la phase de conception. cela est une autre histoire. L’utilisation d’un plug-in pour ce framework de persistance permet principalement d’assister le développeur dans la mise au point de ses fichiers de mapping particulièrement complexes. En revanche. E clipse excelle pour le développement d’applications JSE.apache. Quelquefois. Exemple de configuration Dans les parties suivantes. certains plug-ins nécessitent une consommation de mémoire importante. Lorsque vous avez établi une configuration de référence pour un projet donné (version d’Eclipse et versions des plug-ins). c’est le cas de certains goals Maven particulièrement imposants.apache. et Hibernate figure parmi les plus en vogue. celui-ci permet de lancer des scripts Maven directement dans l’IDE. L’outil Maven (http://maven. Un plug-in officiel est disponible sur le site officiel (http://maven.org/ eclipse-plugin.

la solution la plus onéreuse ! En conclusion. Trouver et choisir ces plug-ins va prendre du temps. comme on l’a souligné précédemment. des debuggeurs. Bien entendu. Des contraintes temporelles ou budgétaires guideront probablement votre choix. Concernant la qualité d’un plug-in. Si ce plug-in est source de revenus importants. Il faut s’intéresser au nombre de release et au temps entre chaque release pour vérifier que ce plug-in continue d’évoluer. les utilisateurs seront souvent beaucoup plus indulgents avec une communauté L’éditeur Open Source qu’avec une société. tout ce qui pourra assurer que ce plug-in répond correctement aux besoins. Ce système est un bon compromis pour le développeur sans budget. L’open source est une solution tout à fait opérationnelle avec ses bénéfices et ses inconvénients. Le premier point à vérifier est donc de savoir si le plugin est soutenu par une société ou si celui-ci a été développé ou légué à la communauté Open Source. Cette somme peut être comparée avec le coût d’un développeur par jour. le mode d’installation du plug-in. en s’imposant des critères de choix. debugger de JSP. il est probablement plus facile de retenir le plug-in qui répondra à ses attentes. s Sébastien Revel . Javascripts. Si l’on souhaite doter son Eclipse des plug-ins indispensables. celuici doit s’intéresser tout particulièrement aux fonctionnalités bridées du plug-in gratuit. Qu’en est-il de la documentation du plug-in. Open Source Vs Commercial La multitude de plug-ins open source ne facilite pas le choix. Comment va-t-on garantir que l’équipe de développement utilisera les mêmes versions des plug-ins ? Où encore. L’autre critère de choix important est l’activité du plug-in. Pourquoi encore acheter un plug-in commercial ? Intéressons nous par exemple aux applications Web. Même si. EJB. L’installeur fourni permet une installation harmonieuse dans Eclipse. mais surtout peut assurer une certaine pérennité ou évolutivité. L’existence d’une version trial est aussi en quelque sorte la démonstration de la confiance de la société pour son plug-in. entre 400 et 700 euros par jour. comme on l’imagine. Celui-ci se présente-t-il sous la forme d’un zip ? Existe-t-il un site d’update ? Est-il packagé dans un installeur ? On doit aussi s’assurer que l’on ne restera pas bloqué en cas de soucis. dans ce cas. En prenant une approche "retour sur investissement". La priorité doit être la pérennité du plug-in et son évolutivité. soit d’une société. Enfin. avec la bonne granularité. Struts ou JSF. Celle-ci est-t-elle bien détaillée ? Y a-til un Getting Started ? Des vidéos de démonstration ? Des captures d’écran ? Bref. Struts. Pour rester dans notre hypothèse du développement Web. es plug-ins Eclipse sont soit issus d’une communauté Open Source.Ideo Technologies Programmez n°87 34 juin 2006 . un produit comme Workshop Studio de BEA regroupe un ensemble de fonctionnalités équivalent à plusieurs plug-ins (éditeurs multiples pour JSP. Le support d’un grand Editeur international pérennise le choix et les évolutions. on ne peut que se réjouir du choix qui nous est offert aujourd’hui.D ossier Plug-in open source ou commercial : comment choisir ? Les critères de choix d’un plug-in Eclipse sont nombreux et très proches des critères de sélection d’un logiciel open Source ou commercial. ce n’est pas loin d’une dizaine de plug-ins open source qu’il faudra trouver : éditeur de JSP. comme par exemple le Workshop Studio de BEA Systems. que sur la Plate-forme. Il est souvent très instructif de vérifier le nombre de bugs remontés et corrigés par release. Autre démonstration plus subtile de l’en- L XML : Oxygen gagement de l’éditeur ou de la communauté. a-t-on le temps pour conduire toutes ces évaluations et tests de compatibilité ? Autant de questions qui trouveront une réponse simplifiée avec un plugin commercial. JSF. Le support est-il présent ? Sous quelle forme ? Existet-il une FAQ ? Une liste des questions fréquentes ? Il ne faut surtout pas négliger la compatibilité du plug-in. Leur installation et leur maintenance au fil du temps est également un élément à prendre en compte. pour ne citer que les principaux. Le prix d’un plug-in peut être gage de qualité. L’ensemble dispose d’une ergonomie cohérente et homogène. On peut parfois trouver des plug-ins existant en version gratuite bridée et en version complète payante.…). Combien est-on prêt à payer pour tous ces bénéfices. l’éditeur se doit de le faire évoluer et de le maintenir à niveau. pour gagner du temps ? Un produit comme Workshop Studio est commercialisé entre 500 et 1000 euros par développeur. On peut aussi vérifier que le nombre de bugs remontés est en constante diminution de release en release. la dimension économique est à prendre en compte. Les plug-ins de sociétés peuvent être gratuits ou payants. on pourra se rendre compte que le plug-in commercial n’est pas toujours. L’approche " blended " visant à mélanger composants open source et produits commerciaux cherche à rapprocher le meilleur des deux mondes. tant sur la version d’Eclipse supportée. Hibernate ou JDO.

cocobase.avaki. Licence Commerciale IBM WebSphere Voice Toolkit http://www-306. Persistence (BMP) Entity Beans. Clay est le nom d’un plug-in de modélisation de schéma de base de données. Eclipse étant très populaire la liste des plug-ins s'est très vite allongée. JMS 1. Celui-ci vous permettra de réaliser à la fois de la modélisation mais aussi du reverse engineering.net/projects/eclipsejdo/ CPL 1. Autrement dit.0. mais aussi libres.html Clay Database Modeling http://www.ibm. des outils de développement et d'essais de grammaire. commerciaux.com/developerworks/ websphere/library/techarticles/0304_schumacher/ schumacher. des outils de développement de contenu statique VoiceXML et d'applications dynamiques J2EE (Java) ainsi qu'un large éventail de composants de dialogue réutilisables. Nom du plug-in IBM Tivoli Monitoring http://www. au point qu'aujourd'hui on en répertorie plus de 1000 ! (et donc.com/ Description Il s'agit d'une solution de mapping et de persistance des données (Container Managed Persistence (CMP) & Bean Managed. Session Beans. J2SE et le JDK 1.com/products/index/monitor/ Description Tivoli est un logiciel d'administration distribué qui se base sur des agents (clients) pilotés par un serveur. Cocobase se fonde sur EJB 2. la diffusion de logiciels.ibm.tivoli. JSPs. Il s'agit d'un plug-in pour Hibernate. Licence Commerciale Mixte (libre et commerciales) Programmez n°87 35 juin 2006 .4. bon nombre sont commerciales ou à licence mixte (d'ailleurs. vues et agents).com/ http://sourceforge.jp/en/software/clay/index. des outils de débogage. Catégorie : IBM WebSphere Studio WebSphere est une "plate-forme applicative générique" (comprenant serveurs et outils) sur laquelle reposent des logiciels d'entreprises (conçu par IBM) comme Tivoli. Licence Commerciale Hiberclipse http://hiberclipse. Nous en avons sélectionné quelques-uns.0. rappelons au passage que Websphere Studio Application Developer d'IBM repose sur Eclipse).html Commerciale Commerciale Catégorie : base de données (persistance) Nom du plug-in Cocobase http://www. Servlets. Ce mécanisme d'extension a été rendu possible grâce à son framework élaboré et son outil de développement de plugins baptisé Plug-in Development Environment (PDE). Hibernate ne respecte pas le standard JDO (Java Data Object) mais est quand même très populaire auprès des développeurs.net/ EclipseJDO http://www.jsp Description Sybase a racheté Avaki. un framework open source gérant la persistance des objets en base de données relationnelle. Ce plug-in permet d'utiliser la norme Java Data Objet (JDO).versant. Dynamic Transparent Persistence et stand-alone Java persistence). l'administration de serveurs applicatifs. Toutes ces extensions ne sont pas libres.D ossier Une sélection de plug-ins Eclipse Un numéro entier de Programmez ne suffirait pas s'il fallait vous décrire l'ensemble des plug-ins d'Eclipse. Le plug-in est ici un modeleur de niveau professionnel. les tableaux présentés ci-dessous sont très loin d'être exhaustifs).com/software/ pervasive/voice_toolkit/ Lotus Domino pour WebSphere Studio http://www-128. Le domaine d'administration concerné touche la supervision.0. Il est fourni avec des assistants permettant de faciliter la gestion de la persistance objet.com/products/studio. Il s'agit en fait d'une trousse à outils VoiceXML comprenant des assistants de génération d'applications. J2EE. Ce plug-in fournit des outils pour créer plus simplement des applications Java appelant l'existant Domino (c'est à dire formulaires.0 Open Source mais support commercial possible Catégorie : base de données (modélisation de schémas) Nom du plug-in Avaki Studio http://www. pour l'essentiel. UML XMI. si vous voulez ajouter une fonctionnalité à cette plate forme de développement hors du commun il suffit d'y ajouter un plug-in. un éditeur VoiceXML. la gestion des comptes.azzurri. La spécificité d'Eclipse repose sur son architecture complètement basée autour de plug-ins.sourceforge.TBM Tivoli Monitoring permet d'auditer les performances dans ces domaines en vue de repérer les goulets d'étranglements. JDBC 2. spécialiste du "Data Grid" ("Grille de données" en Java).

le CVS intégré.v 1.net/projects/erlide/ Haskell development support http://eclipsefp. mettre en évidence les mots clés par coloration syntaxique. les tasks.phpeclipse.html Emonic http://sourceforge. une gestion semi-automatique des imports.sourceforge. vous n'obtiendrez pas (si vous le voulez) les même options et menus en travaillant par exemple en COBOL ou en EPIC. Licence LGPL open-source (CPL) Eclipse Public License Eclipse Public License Eclipse Public License libre Pydev signifie "Python Development Toolkit".eclipse.org).net/projects/aseclipseplugin/ Open Source Catégorie : Autres langages Rappelons qu'Eclipse permet de créer des environnements de travail spécifiques à un langage. tasks.sourceforge. Destiné au langage haskell (http://haskell. l'auto-complétion du code.ActionScript Development Tool. Emonic s'intégrera parfaitement avec Ant ou Nant..de/tiki-view_articles. Programmez n°87 36 juin 2006 .org/cobol/ EPIC http://e-p-i-c. la proposition de correction du code.html Photran http://www. open-source (CPL) PyLint est intégré.net/projects/pydev/ Description Fonctionne sous Linux.1. Contient un éditeur de code source. CVS intégré etc. Autrement dit. fait le "code completion". php?group_id=158390 Description Permet l'édition du code source avec coloration syntaxique. Il tient son nom d'un mathématicien Danois. Plug-in pour le langage Fortran.erlang. Il affiche les erreurs de syntaxe.com/fdt/flashsite/flash. Les erreurs de compilation sont affichées dans la liste des tâches. Solaris ou Windows. Il s'agit d'un langage fonctionnel "concurrent temps réel et distribué". Haskell est un langage de programmation fonctionnel. et la compilation. etc. EPIC signifie "Eclipse Perl Integration".8. 75% des données du monde des affaires ont été traitées par des programmes en COBOL).eclipse. Compatible C# 2.net/ Erlide http://sourceforge. Cobol est toujours très actif dans les institutions financières (en 2005. des templates. Propose la coloration syntaxique. Equivalence de FDT en open-source.org). Licence Commerciale ASDT http://sourceforge. Et bien sûr. qui fournit tout un environnement de travail dédié à Flash.sourceforge.91) n'est pas considérée comme stable). En outre.Version 3. D'un seul clic vous obtiendrez la documentation de la fonction. En outre. phpEclipse permet l'intégration d'un navigateur pour tester le résultat dans la même fenêtre. Supporte CVS et le débogueur GNU. une vision rapide de l'arborescence d'une classe (outline). Fortran est un langage de programmation utilisé principalement en mathématiques et dans les applications scientifiques.net/project/showfiles.Vous pourrez ainsi jouer avec de nombreux raccourcis clavier.php Pydev http://sourceforge.org/photran/ PHPeclipse http://www. énorme avantage: on profite d'Eclipse lui-même: debugger. Un des premiers plug-in C# du genre. Licence Eclipse Public License . un test en temps réel de la validité du code.net/haskell/index.htm Description FDT signifie Flash Development Tools. Il s'agit d'un plug-in pour Eclipse. Nous en sommes à la version 1. ASDT .powerflasher. l'emploi d'Eclipse implique l'utilisation du debugger.D ossier Catégorie : C# Nom du plug-in BlackSun http://black-sun. l'autocomplétion. Nom du plug-in Cobol http://www. Enfin il a été testé sous Linux et Windows.com/alpha/esharp/ open-source (CPL) Le plug-in Emonic Catégorie : Flash Nom du plug-in FDT http://www. Destiné au langage Erlang : le langage objet développé par Ericsson (www.net de Microsoft) ! Il vous permettra de réaliser de la complétion de code.net/license. Il s'agit donc d'un plug-in Eclipse destiné aux programmeurs C# utilisant Mono (mais vous pouvez également utiliser le framework ..0 Emonic signifie "Eclipse-Mono-Integration". un débogueur ainsi qu'un éditeur d'expressions régulières. semble peu active depuis 1 an. Encore en développement (la version actuelle (0. le refactoring.improve-technologies. avec une gestion des classes poussée.0 Common Public License (CPL) Improve C# http://www. refactoring.

D ossier
Catégorie : UML
Nom du plug-in Description Licence
Gratuit si usage non commercial, sinon licence commerciale Version gratuite et commerciale Together Community Edition Gestion de cycle de vie de Borland. http://www.borland.com/us/products/ together/index.html La version commerciale permet d'importer/exporter la Omondo http://www.omondo.com/ modélisation, supporte des profils, s'interface avec une base de données, est compatible J2EE, peut s'intégrer avec CVS et enfin, est ouvert à la programmation externe via une jeu d'API. SDE SDE signifie Smart Development Environment. Ce plug-in http://www.visual-paradigm.com/ est à utiliser en combinaison avec WebSphere. Il existe product/sde/ec/index.jsp de nombreuses éditions, une d'Enterprise, une Professional, une Standard, une personnelle et enfin une Community Edition qui s'avère gratuite pour un usage non commercial

Commerciale

Catégorie : tests et non-régression
Les tests serviront notamment à déterminer si le logiciel répond aux spécifications fonctionnelles. Nom du plug-in Description
Hpjmeter est un outil de visualisation des profils produits par Java (ce n'est pas un plug-in à proprement parler). Pour y parvenir, vous devrez compiler un programme Java sous Eclipse avec les infos de debugging, puis en second lieu, exécuter le programme avec une option de profilage. Enfin, vous pourrez lancer HPJmeter.jar pour ouvrir le fichier de profil qui a été généré. De cette manière vous pourrez extraire quelques "métriques" intéressantes. JUnitRunner JUnit est un environnement de test pour Java. La classe de tests doit être une sous-classe de junit. framework. http://sourceforge.net/projects/junitrunner/ TestCase et les attributs définissent les attributs sur lesquels porteront les tests. Un scénario de tests fait des appels aux objets testés, et vérifie des propriétés avec junit.framework.TestCase.assertTrue(...) Coverlipse Coverlipse est une extension de JUnit qui offre un support de couverture de code. http://coverlipse.sourceforge.net/index.php findbugs, jlint_plugin, eclipsemetrics Plug-ins d'analyse statique des bogues (analyse de codes sources). http://findbugs.sourceforge.net/ http://www.willowriver.net/products/jlint.php http://eclipse-metrics.sourceforge.net Hpjmeter http://www.hp.com/products1/unix/java/ hpjmeter/index.html

Licence
Usage gratuit, licence HP

Open Source

Common Public License Open Source

Catégorie : développement d'interfaces graphiques
Nom du plug-in
SWT Vector Library Graphics http://sourceforge.net/projects/svl/ Gface http://sourceforge.net/projects/gface/ SWTPlus http://www.swtplus.com

Description
SVL signifie "Simple Vector Library". Il s'agit d'une bibliothèque d'objets servant à manipuler des graphiques en vectoriel. Boîte à outils de widgets pour SWT (Standard Widget Toolkit, une bibliothèque graphique libre pour Java) Une autre boîte à outils de widgets pour SWT

Licence
GPL Eclipse Public License Open Source

Catégorie : développement XML
Nom du plug-in
Vex http://vex.sourceforge.net/ oxygenxml http://www.oxygenxml.com/ XMLBeans http://sourceforge.net/projects/xmlbeansplug/

Description
éditeur XML Open Source. Largement extensible, avec support WebDAV et FTP . ainsi que les DTD et CSS éditeur de source, débogueur XSLT, visualisation/édition d'arbre, édition et validation DTD, XML Schema, différence/fusion XML, support XQuery, XSLT, Xpath, Xalan, Saxon, MSXML et XSLTProc ! Ce plug-in permet aux développeurs Java d'utiliser des données et documents XML dans un environnement orienté objet. L'accès aux données s'effectue par un jeu d'interface de type XQuery. Le compilateur XMLBeans convertira un Schema pour créer un fichier JAR

Licence
LGPL Version d'essai téléchargeable Apache License V2.0

Catégorie : travail d'équipe
Nom du plug-in
ganttproject http://sourceforge.net/projects/ganttproject AT-project http://www.atreides-technologies.com/

Description
Gestionnaire de projets compatible Microsoft Project. Il utilise la méthode du diagramme de Gantt, ce qui lui permet de découper un projet en tâches, puis de visualiser les dépendances dans le but d'en gérer les ressources. Sera utilisé dans le cadre d'un travail en équipe car il permet de tracer les projets (partage d'informations, planification, suivi des erreurs...)

Licence
Open Source gratuit

Catégorie : serveurs d'applications
Nom du plug-in Description Licence
Open Source LGPL Tomcat For Eclipse Intègre Tomcat (conteneur de servlet J2EE) à Eclipse (Tomcat est un serveur web qui supporte servlet et JSP). http://openknows.free.fr/ Lomboz Lomboz est un plug-in J2EE pour Eclipse qui a été repris par le consortium ObjectWeb, et qui est devenu Open Source. http://lomboz.objectweb.org/overview.html Ce plug-in utilise plusieurs outils open source pour mener à bien son travail tels qu'Ant, Xdoclet et Axis. Il couvre ainsi le cyle de développement des applications J2EE de la rédaction à la génération du code, en passant par le déploiement et le débogage. JOnAS Eclipse PlugIn JonAS est un serveur d’application Open Source respectant la norme J2EE (Java 2 Platform Enterprise Edition). http://sourceforge.net/projects/jonaseclipse/ Il vous permettra d'utiliser des EJB, des Web Services, des transactions distribuées, etc.

Common Public License

s Xavier Leclerq - Xavier.Leclercq@programmez.com
Programmez n°87

37 juin 2006

D ossier

Développer une application web avec MyEclipse
MyEclipse (http://www.myeclipseide.com) est un ensemble de plug-ins qui étend les fonctionnalités d’Eclipse simplifiant le développement. Parmi les fonctionnalités, on peut citer le support d’UML, d’Hibernate (http://www.hibernate.org), de Spring (http://www.springframework.org), Tapestry (http://jakarta.apache .org/tapestry), Struts (http://struts.apache.org/),JSF (http://java.sun.com/javaee/javaserverfaces/) et l’intégration de n’importe quelle base de données JDBC.
Nous nous focaliserons sur les outils principaux (base de données, UML), l’intégration des serveurs d’application et d’Hibernate. Une fois connectés à la base, nous pouvons en voir la structure (liste des tables, colonnes dans chaque table etc.…) ainsi que l’interroger ou la modifier. Le diagramme entité relations nous permet de visualiser le schéma de la base dans l’environnement de développement : (Figure 3) La console d’Eclipse montre alors le statut du serveur d’application :
... INFO: Initialization processed in 2143 ms INFO: Starting service Catalina INFO: Starting Servlet Engine: Apache Tomcat/ 5.5.17 INFO: XML validation disabled INFO: Starting Coyote HTTP/1.1 on http-8080 ... INFO: Server startup in 6630 ms

Support UML
Les principaux diagrammes sont supportés : use case, classes, séquence, état, activité, déploiement et collaboration. (Figure 1)

Création et débogage d’une page JSP:
MyEclipse simplifie le développement de pages JSP, HTML, JSF et autres. Montrons comment développer une nouvelle page JSP: (Figure 6) Notez la structure de la page présentée dans

Nous bénéficions alors de la vue ER Diagram (Figure 4) Le support UML est intéressant par son intégration à la plate-forme Eclipse ainsi que ses capacités de round-trip engineering. Le roundtrip permet de générer le code Java à partir des classes modélisées ainsi que de générer le diagramme de classes depuis le code existant.

Support Base de Données
MyEclipse s’intègre à n’importe quelle base de données disposant d’un driver JDBC. Connector/J étant le driver JDBC du MySQL, nous utilisons celui-ci pour accéder à une petite base gérant des fichiers musicaux. (Figure 2) Notez comment les relations entre classes (ici une relation un a plusieurs) sont représentées.

(Figure 4)

la vue outline ainsi que les capacités de complétion. Une fonctionnalité impressionnante est le débuggeur (Figure 7). Voyez comment le point d’arrêt a stoppé la page et que les variables ainsi que leurs valeurs sont présentées dans la vue Variables. Nous avons une intégration et consistance entre le développement d’application Java et le développement d’application J2EE.

Support applicatif web
MyEclipse facilite le développement et le déploiement d’applications web sur les principaux serveurs d’application. Prenons Tomcat en exemple. Une fois configuré, lancer le serveur d’application est un jeu d’enfant : (Figure 5)

Design HTML
Le plug-in HTML MyEclipse associe en permanence le code HTML avec son rendu a l’écran. (Figure 8) On peut soit modifier la vue Design, soit modi-

Programmez n°87

38 juin 2006

D ossier

(Figure 9)

(Figure 6)

(Figure 7)

(Figure 10)

Support Hibernate
Eclipse permet de générer à la fois le fichier de configuration d’Hibernate ainsi que les fichiers de mapping entre tables physiques et model objet de l’application en développement. (Figure 10) Pour générer les fichiers de mapping, il suffit de cliquer droit sur une table - Notez le menu contextuel figure 2 – pour générer le fichier correspondant à la table.
(Figure 8)

Conclusion
MyEclipse s’intègre à la plate-forme standard Eclipse pour y offrir des gains de productivité non négligeables. Son prix modique n’est pas un frein à son adoption croissante et les gains de temps qu’il permet d’économiser en font un ensemble de plug-ins aujourd’hui incontournables. s Sébastien Marc

fier le code directement, les deux étant synchronisés automatiquement par le plug-in.

Support XML
La création de document XML est simplifiée à partir d’un DTD (qui permet une validation de

la structure du document) ou d’un schéma (permettant une validation de structure et de contenu). Les deux modes de validation permettent à Eclipse des facilités de complétion du document XML lors de sa rédaction (Figure 9).

Economisez 30%
Abonnez-vous !
www.programmez.com
Programmez n°87

39 juin 2006

D ossier
TEMOIGNAGES

Twinsoft apprécie SWT
" Eclipse bénéficie d’une communauté très active. Cela profite à nos outils. Il existe aujourd’hui deux grands marchés : .Net et Java. Eclipse ne fait pas que du Java " confie Olivier Picciotto. L’un des avantages mis en avant par l’éditeur est SWT, une interface relativement simple à développer avec un meilleur rendu, précise-t-il. " Il n’y a pas d’éditeur graphique mais tout dépend de ce que l’on fait. Le plug-in VE n’est pas au niveau d’un Visual Studio. Mais il s’agit d’une plate-forme évolutive et de nombreux outils s’appuient dessus, même s’il manque de bons éditeurs HTML pour éditer des sites Web. Sur la qualité des plug-ins, il n’y a pas d’homogénéité. Ce qui fait la différence entre les composants est le niveau business, la plus-value, qu’ils génèrent.

Il faut aussi avouer que le développement de plug-ins demeure compliqué et que tout n’est pas entièrement documenté " commente Olivier Picciotto. Aujourd’hui, chez Twinsoft, 4 développeurs utilisent à plein temps Eclipse…

Compuware mise aussi sur Eclipse
" De facto, Eclipse est devenu un standard. On constate une demande du modèle MDA sur Eclipse. Mais NetBeans n’est pas pour autant oublié, avec une audience moindre cependant. Sur Eclipse, on bénéficie d’une communauté active et de nombreux plug-ins " commente Guy Cartigny (responsable technique). Pour le moment, l’éditeur confirme son soutien à Eclipse et NetBeans. " Il existe des fonctions dans Eclipse que l’on ne trouve pas dans NetBeans et vice versa. Selon mon expérience, il est parfois difficile pour un développeur de

passer à Eclipse, car l’environnement est un peu brouillon, pas toujours intuitif, surtout quand on a connu autre chose ". Compuware travaille sur un double développement autour d’Eclipse. Le premier est de rendre disponible toute l’approche MDA et le second concerne le projet Corona. Ce projet est très important car il doit apporter à la plate-forme de véritables fonctions collaboratives, de gestion de tâches projet, des repository partagés et une interface web service pour faciliter le fonctionnement, " un peu comme Visual Studio Team System " avoue Guy Cartigny. La diversité des plug-ins pose-t-elle problème ? " C’est un point faible, mais cela en fait aussi sa richesse. Cela exige une certaine qualité. Guy Cartigny Il faut faire attention à la compatibilité entre les plug-ins, même si honnêtement j’ai rencontré ce genre de problème, une seule fois " conclut Guy Cartigny.

Eclipse : l’environnement personnalisable
Comment définir Eclipse ? Beaucoup diront que c’est un IDE pour développeurs Java. Certes, la principale vocation d’Eclipse est effectivement le développement Java. Mais Eclipse est aussi une réelle plate-forme qui peut être utilisée pour développer dans d’autres langages, faire de la modélisation mais également comme support pour d’autres logiciels. D’autres IDE paraissent plus complets qu’Eclipse (WebSphere Application Developper, JBuilder, NetBeans, …) parce qu’ils intègrent en natif beaucoup plus de fonctionnalités. Eclipse est cependant de plus en plus apprécié, grâce à la possibilité de développer ses propres plugins, ou bien de participer aux tests et aux développements de plug-ins de plus grande envergure. En somme, Eclipse est beaucoup plus qu’un simple IDE Java c’est toute une plate-forme et une communauté de développeurs qui participe à son évolution. Parmi les nombreux projets qui peuvent être intégrés à Eclipse, nous retrouvons : WTP (Web Tools Platform) : outils de développement Web et J2EE, BIRT (Business Intelligence and Reporting Tools) : outils de génération de rapports, Subclipse : outil de synchronisation de votre code source à un serveur subversion (contrôle de sources), Visual Editor : outil de conception d’interface graphique (AWT, Swing, SWT, RCP, …) par l’intermédiaire d’un designer WYSIWYG, EclipseUML : outil de modélisation UML avec des fonctions de génération des classes associées, de rétro-conception… , Azzurri : outil de modélisation de diagrammes de bases de données avec des fonctions de génération de script SQL permettant la création de la base de données selon le SGBD et rétro-conception, et bien d’autres… Aujourd’hui, nous utilisons Eclipse comme plate-forme de développement à SUPINFO quotidiennement lors des cours Java. C’est une plate-forme stable, multi-plate-forme que les étudiants peuvent, s’ils le souhaitent, paramétrer et personnaliser comme ils le souhaitent. Nous leurs fournissons cependant une version pré-configurée avec les plug-ins suivants : WTP, Visual Editor, Subclipse, EclipseUML, Azzurri. Plus les développeurs utilisent Eclipse et plus ils se familiarisent avec les nombreux raccourcis et les fonctionnalités de l’IDE, ce qui augmente leur productivité. Eclipse a pris une telle ampleur et un tel succès auprès de la communauté des développeurs que certaines entreprises se sont spécialisées dans le développement de plug-ins payant pour Eclipse. Il existe même des distributions payantes d’Eclipse, comme MyEclipse, avec un ensemble de plug-ins gratuits et payants. s Maxime Vialette - Supinfo

Programmez n°87

40 juin 2006

.

une rupture avec le passé. une révolution. bien réel. à y regarder de plus près. s François Tonic 42 juin 2006 . Car si le standard demeure le maître mot. comme vous le verrez dans les pages suivantes. un outil.. SOA signifie architecture orientée services. sa conception du SOA. il existe autant de concepts architecturaux SOA qu’il y a de systèmes d’information. Pour être exact. D’autre part. dire que l’on vend des outils SOA relève plus du marketing que de la réalité.. le risque. à choisir telle ou telle solution. Bien souvent. SOA est un concept architectural et non une solution. Et on retrouve ainsi les notions actuelles : flexibilité. le terme SOA s’est imposé. un progiciel. il faudrait dire : environnement orienté SOA. sa vision. Il existe. Cependant. couple lâche. Et chaque éditeur apportera sa réponse. heureusement. Bref.F ocus SOA SOA : votre nouvel architecte Depuis environ 2-3 ans. l’interopérabilité n’est pas totale. nous verrons comment définir SOA. c’est quasiment du cas par Programmez n°87 cas. SOA doit pouvoir s’accommoder d’un environnement aussi bien homogène qu’hétérogène. processus métiers. comment définir SOA ? Existe-t-il une approche unique ? S’oppose-telle aux outils d’intégration ou vient-elle en complément ? La définition est un premier problème que nous devons résoudre avant d’aborder les outils orientés SOA. Dans ce dossier. est de " s’enfermer " dans un choix technique. SOA est une évolution des concepts architecturaux. les éditeurs présentent SOA comme une nouveauté. Car. des bases communes. comment implémenter une telle architecture ainsi qu’un panorama des solutions du marché. Car. basée sur des services et non plus des applications. mais pour le reste.

de maintenance devient élevé avec une baisse du retour sur investissement. Pour pouvoir briser cette situation. tout l'héritage plus ou moins ancien fonctionnant dans un système d'information. son utilisation. chaque département. il faut remonter dans le temps et comprendre le poids de ce que l'on appelle legacy. On parle alors de cloisonnement ou encore de silot. des processus " métiers " spécifiques à chaque département. favorisant la réutilisation. et notamment pour des données et applications critiques ou " historiques ". On utilise donc des bonnes pratiques. liés à un métier. une architecture. on disposait d'un environnement plutôt homogène. voire les outils. Car. etc. il n'est pas rare qu'un système d'information possède du legacy hétérogène. le legacy est hétérogène ou homogène. Le silot empêche aussi de pouvoir communiquer facilement entre différents services. il faut donc mettre en place une couche de communication indépendante des silots. montée en charge. mais un concept. pour permettre de faire communiquer des silots et d'offrir des services. Le web to host ouvrait un legacy sur Programmez n°87 43 juin 2006 . nécessite un nouveau cycle de développement. Cette couche applicative devait faire communiquer les applications et les données avec de nouvelles applications. de qualification. comment avoir une vision globale de son système d'information ? Il est quasi impossible de posséder une granularité de son environnement d'information. l'EAI pêche par sa lourdeur : utilisation de connecteurs. plus le coût d'évolution. il devient difficile de manipuler et de fluidifier l'ensemble. n'est pas un outil. On se demandera parfois : pourquoi ne pas tout refaire ? En informatique. car le risque est d'avoir un format différent et surtout des structures et une finalité différente. modifiant. Avec la multiplication des applications. absence de processus métiers globaux. à un département. diversité des terminaux et des clients). des technologies. Sans apporter une réelle flexibilité. On risque d'introduire des erreurs. un batch vieux de 10 ou 15 ans fonctionne. Et surtout. Bref. car le silot empêche une telle vision globale. données. difficile d'échanger des données. supprimant des applications. en ajoutant. pourquoi changer ? Cet adage bien connu demeure vrai. les données. une instabilité. offrant un découplage entre les nouvelles applications et le patrimoine et permet- Une architecture de services La notion d'architecture de services n'est pas nouvelle. différents progiciels. extranet). Ensuite. inutile de le casser pour le remplacer. Le legacy regroupe les applications. existants. Bref. une solution. multilingue. Le mainframe. Si au départ. L'EAI a aussi le défaut d'avoir un couplage fort. Le tout en proposant une unification des données. on a parlé d'outils d'intégration et notamment les solutions d'EAI. des SGBD. absence de spécifications communes. des concepts architecturaux liés à SOA pour sa mise en oeuvre. etc. ses propres données et applications. Le cloisonnement oblige le développement de surcouches spécifiques pour pouvoir communiquer. Vers le SOA Il est difficile de donner une définition du SOA. Basiquement. tant que ça marche. des données. Première difficulté. car. coût. du patrimoine. Aujourd'hui. Si une application. à condition d'appliquer une architecture souple et flexible et que tous les acteurs de l'entreprise aient conscience de la situation et de la nécessité de changer. ont contribué à complexifier et à rendre hétérogène le système d'information. le monde du web ou encore CORBA. SOA favorise la mise en place de vrais processus métiers permettant l'adaptabilité rapide aux demandes business internes ou externes. L'urbanisation de son système d'information doit fournir une telle vision avec une granularité poussée.4 sont du legacy. L'architecture SOA est-elle une réponse adaptée ? 'architecture orientée service. ajout. L Un problème sur le système d'information ? Pour saisir l'un des intérêts de SOA. intranet. Aujourd'hui. sa nature est vaste et variée selon les contextes. technologies. applications. les rachats – fusions. Mais ces solutions étaient peu maniables et souvent lourdes. limitant ainsi sa flexibilité. ou SOA. le code source. plus il y a d'applications et de silots. Chaque modification. l'apparition des nouvelles technologies. L'urbanisation doit permettre d'éviter une telle situation. échanger. Ce sont dans la plupart des cas des silots verticaux. des applications VB6 ou Java 1. Ce cloisonnement pose un réel souci de communication transversale. flexibilité pour adapter rapidement son système. possède sa propre architecture. des applications web (site. Bien souvent. chaque filiale.F ocus SOA Architecture et organisation Le système d'information d'une entreprise repose sur une ou plusieurs architectures et il est toujours utile de spécifier une architecture par type d'applicatif et pour le matériel. Les outils servent à créer une architecture SOA et à mettre en œuvre ses différents aspects. services. un système d'information doit pouvoir s'adapter aux contraintes nouvelles (demande utilisateur.

Si SOA permet dans un processus métier d'utiliser des services externes ou d'exposer ses propres services à des clients et fournisseurs. Le processus métier (et l'orchestration) est la valeur ajoutée. puis étendez au fur et à mesure des besoins et demandes. La plus basse comprend les applications. prévoir les contrôles et la gestion des erreurs. web services. De plus. etc. le legacy. dans un processus de réservation d’une voiture.F ocus SOA tant. il faut s'assurer de la bonne intéropérabilité des services. une approche métier. Ainsi dans une fonction de réservation d'une voiture. de reprises de charge des services. les différentes étapes. du business doivent dire ce qu’ils attendent. tout n'est pas rose. soit des applications composites. d'un annuaire de services. ce n'est pas parce que l'on a une architecture SOA que les services communiquent. Il faut introduire des processus. On peut aussi avoir du SOA. Faites tout d’abord un projet type. Au risque de simplifier le concept. Là. riche ou léger sur du desktop. l'interopérabilité ne doit pas être oubliée. travaillent ensemble. l'arrivée. Pour ce faire. un service doit posséder un contrat de services décrivant son contenu. Des questions peuvent aussi se poser sur le load balancing ou encore la réplication. inutile de prévoir un service de commande de fournitures de bureau. Et n'oublions pas que SOA ne signifie pas obligatoirement services web. il faudra définir le diagramme de cheminement : le départ. Comme nous le verrons plus loin. surtout si les environnements SOA diffèrent. on peut utiliser un client lourd. éventuellement un ESB et enfin. les processus métiers. Ainsi. Il faudra donc que les services soient orientés métier. Cela n’a guère de sens. Il faut comprendre que SOA n’est viable que s’il y a un objectif métier / business. C'est là que l'on aura besoin de l'orchestration. s François Tonic Programmez n°87 44 juin 2006 . Si dans le cadre XML. La phase de tests sera vitale. Il faut déterminer ce que l’on souhaite exposer. la couche de présentation qui expose les services via une interface utilisateur. La couche du milieu est l'architecture SOA proprement dite avec les services. en traitement. s'il est facile de travailler avec quelques services. les données. De plus. La notion de réutilisation est très Architecture de type ESB (BEA) importante en SOA. un service peut être utilisé par plusieurs processus. il existe des spécifications. Internet. en sortie. il y a trois couches. Car. Le service web est une des manières de faire du SOA. Ainsi. Les gens du métier. son rôle. De plus. s'il n'y a pas une finalité réelle. un PDA. etc. Chaque couche se veut indépendante. Le technique (les développeurs) ne développe pas en aveugle. De plus. cela ne sert à rien de mettre en place une architecture de services. Enfin. des processus. son fonctionnement. il faut choisir ce que l'on veut. n’envisagez pas d’implémenter SOA immédiatement sur l’ensemble de votre entreprise. internes ou externes. pour exposer un service. etc. soit avec comme finalité des services que l'on expose. une intégration du legacy. la justification d'une architecture SOA. Le processus métier est donc en quelque sorte une définition du comportement en entrée. on utilisera des processus BPM (Business Process Manager). SOA fragilise-t-il son système d'information ? Il existe aujourd'hui de réelles interrogations sur les capacités de montée en charge. un mobile. Cela permet d'utiliser plusieurs services selon un contexte définition adaptable rapidement en fonction des demandes. il devient vite difficile de manipuler des dizaines de services. Les processus métiers permettent de donner un workflow de fonctionnement entre plusieurs services. De plus. on ne met pas tout et n’importe quoi en service. Il faut donc définir une charte de conception et de fonctionnement que chaque entité devra respecter. Le contraste entre avant et après SOA (Sun) SOA et le contexte métier SOA aura dans la majorité des cas. consommer.

.

L’importance d’une organisation adaptée Pour permettre la prise en compte des évolutions des métiers et son adoption partagée. et favorise la réutilisation des services. beaucoup de choses écrites sur les démarches SOA expliquent l’importance d’une démarche " Top Down ". Définir la proposition de valeur peut passer par une phase de cartographie des applications. l’approche SOA vise une démarche pour laquelle les découplages métiers et fonctionnels doivent être appréhendés en priorité. il faut d’abord définir la proposition de valeur en identifiant quels enjeux métiers ou quels besoins clients seront adressés par l’approche SOA. fonctions et organisations ou par la rédaction de business cases devant impérativement être portées par des analystes métiers. • imposer la vision SOA et promouvoir la réutilisation des services. Les modèles doivent être partagés. pour : • définir et valider les services.F ocus SOA Mettre en place une architecture SOA Lorsque les architectes logiciels et les développeurs se penchent sur les concepts associés aux architectures SOA. C’est la raison pour laquelle la réussite de la mise en œuvre d’une architecture orientée service passe par une forte implication des analystes métiers et la bonne synergie avec les équipes techniques. Elle facilite la communication entre les différentes parties. le risque est justement pour les architectes comme pour les développeurs de considérer cette proximité comme étant un facteur justifiant de " continuer comme avant ". Cette étape permet de définir le périmètre sur lequel s’appliquera l’architecture Programmez n°87 46 juin 2006 . Définition de la sémantique d’entreprise Un facteur de réussite d’une architecture orientée service est la définition à l’échelle de l’entreprise d’une sémantique commune. il apparaît de nouvelles responsabilités transverses. • la sémantique d’entreprise. Afin de maîtriser les risques de transition. réutilisation) ne peuvent apparaître que si l’effort de SOAisation est suivi dans le temps et que la vision est largement partagée par les acteurs du SI.org/) pour la définition des produits financiers. découplage. la mise en place d’une architecture orientée service se fait sur le long terme. Pourtant. Les promesses des SOA (flexibilité. D e plus. avoir leur propre gestion de version et placés dans un référentiel d’entreprise accessible à tous les projets. les projets B2B. la sémantique d’entreprise doit être placée sous une gouvernance transverse. Les démarches d’urbanisation. il faut procéder par itérations successives en gardant le cap sur la cible architecturale. BPM. http://www.fpml. ces derniers leur semblent souvent familiers car ils font. écho aux démarches objets ou aux approches Corba. Contrairement à l’approche composant. en fournissant des briques logicielles assemblables. Ceci conduit à définir des services dont le niveau de granularité est supérieur à celui qui avait été envisagé ou mis en pratique dans les architectures de composant. et de qualifier la granularité des services nécessaire en en mesurant le ROI. réactivité. Une mise en place de l’architecture effectuée par itérations successives Bien qu’il soit possible d’avoir un retour sur investissement à court ou moyen terme. On parle alors de " Coarse grained " services. les architectures massivement distribuées sont des terrains particulièrement favorables à la mise en œuvre d’une architecture de services. Une pratique gagnante est de formaliser cette sémantique sous forme de schémas (XSD) par l’intermédiaire d’un modèle UML. dont la vocation était de faciliter et flexibiliser les architectures applicatives. dans une certaine mesure. La standardisation de la codification des données qu’elle porte est un des grands facteurs clé de la réutilisation des services. ou RosettaNet pour la définition de conversations dans le monde de la high tech en sont deux exemples. FPML (Financial Products Markup Language. Certains des réflexes passés doivent être combattus. de nouveaux processus de gouvernance. Identification des services L’erreur la plus souvent commise pour tenter d’exposer des services est de partir des composants développés dans des applications et Les grandes étapes d’implémentation d’une architecture SOA : Définir une cible et un périmètre Une SOA ne doit pas être motivée par le seul effet de mode ou la pression du marché. sous peine de reproduire les erreurs commises sur l’approche composant dans les années 90. il existe déjà des stan- dards verticaux et il est souvent pertinent de s’appuyer sur ceux-ci comme point de départ. • gérer les coûts. mais ciblent très souvent le " top " et peu le " down ". Dans certains secteurs. Les architectures orientées service font en effet apparaître de nouveaux besoins en terme de gouvernance : les responsabilités ne sont plus seulement associées aux projets. d’obtenir un apprentissage progressif et de se définir des objectifs plus faciles à atteindre.

Interfaces bien définies. En ce sens. le choix de l’utilisation de standards va favoriser la réutilisation des services. conformément aux exigences et aux cas de test qui ont été définis. On utilise donc des échanges de messages au format XML plutôt que des objets. fréquence. • Qualité . Elle permet à chacun des acteurs d’une intégration de se focaliser et de formaliser les exigences réciproques entre le(s) consommateur(s) et le(s) fournisseur(s) sous la forme d’un contrat. mais ne sont pas les seules. il est souvent nécessaire de reprendre une démarche d’architecture fonctionnelle en repartant du besoin.F ocus SOA d’exposer des mécanismes d’invocation de ces composants par des façades techniques supportant des protocoles standard (JMS. • Robustesse . les technologies associées aux web services forment une implémentation technique possible des concepts de SOA. il peut parfois être tentant d’assimiler à des services toute interaction inter applicative déjà existante. et le contrat établi. La contractualisation des services Le découplage fonctionnel autant que technique sont des objectifs majeurs des architectures orientées service. plutôt que d’analyser des applications existantes. comme nous l’avons évoqué plus haut. Ceci contribue à isoler les mécanismes internes des mécanismes d’invocation pour favoriser l’autonomie des organisations et applications. comme c’est le cas avec DCOM ou Corba. . Pour permettre son découplage et sa réutilisation. par l’analyse des processus pour définir les conversations entre entités fonctionnelles qui devront se traduire sous forme d’échange dans le monde du SI. temps d’exécution. c'est-à-dire ne pas dépendre d’un contexte ou de l’exécution d’un autre service. WSDL…).Stateless. • Mécanismes de gestion des erreurs . L’outil méthodologique pour permettre le découplage est la démarche de contractualisation. • Protocoles d’invocations • Durée de vie du service ou de la version. • Disponibilité . La programmation par contrat est un élément qui permet notamment de maîtriser les cycles de test en permettant à chaque développeur des services d’être autonome et de pouvoir tester ses services. • Sécurité . L’interface d’un service peut être décrite par un WSDL (Web service Description Language). Programmez n°87 47 juin 2006 . • Point de contacts fonctionnels et techniques. machine de déploiement. .) du fournisseur du service. En effet. …). priorité. Un service doit être autonome dans son exécution. Les informations communément admises à intégrer dans un contrat de service sont : • Structure et format des messages échangés . bien qu’il soit possible de mettre en œuvre une architecture orientée service sans utiliser Caractéristiques des services . etc. le niveau de granularité qui porte la plus grande proposition de valeur est le niveau de granularité le plus proche des interactions métiers. De plus. Le consommateur du service ne doit pas avoir connaissance des détails d’implémentation technique (langage d’implémentation. Implémentation des services Une fois les services définis au bon niveau de granularité. Pour atteindre cet objectif. les services peuvent être implémentés. c'est-à-dire ne pas dépendre d’un contexte ou de l’exécution d’un autre service. • Performance et capacité de traitement (nombre d’appels. un service doit toujours être sans état et autonome dans son exécution. Lors de la contractualisation. Néanmoins.Couplage lâche. • Localisation et adressages . SOAP. volumes. Cette approche peut conduire à des erreurs de conception et peut être évitée en repositionnant le débat dans le contexte des processus logiques fonctionnels conduisant à ces interactions..

IBM. solutions qui sauront fabriquer une couche de services et construire les services comme autant d’abstraction de fonctions exposées par une ou plusieurs applications. transformations…). pédagogue auprès de tous ces acteurs (management. Des enjeux forts pour les architectes La trop grande simplicité de la mise en œuvre des web Services semble impliquer pour les néophytes. chef de projet. Les services de taille moyenne peuvent être utilisés dans le cadre d’une architecture applicative et combinés pour être exposés au travers d’un service de grosse granularité tandis que les services de granularité la plus fine ne sont utilisés qu’en interne à une application. SOAP. Amberpoint. Une approche par le haut (top-down) permet d’éviter de confondre les APIs avec les services. Il y a donc des solutions adaptées et spécialisées pour porter ces façades. ou interfaçage avec des MOMs en utilisant des standards tels que JMS • Le support Architectures distribuées • Services partagés • Réutilisation au travers de l’utilisation de standards technologiques (web services. Le support des technologies web services est donc un minimum pour garantir la pérennité des solutions choisies. émergeant lors d’une démarche de modélisation des processus métiers. Les services devront bien souvent orchestrer l’appel de quelques API pour être en capacité de produire un mécanisme d’intégration qui soit défini avec le bon niveau de granularité. là encore avec un support de BPEL • MOM. Un web service n’est pas forcément éligible au titre de " service " dans le cadre d’une architecture orientée service. etc…) Il existe 3 grandes catégories de solutions permettant de mettre en œuvre des architectures orientées services : • Les plates-formes applicatives des trois acteurs majeurs du marché (BEA. ni réutilisable. gouvernance …) • Medium grained et Fine grained – il s’agit de services apparaissant au niveau des composants et objets. de servir d’intermédiaire afin d’apporter le couplage lâche (protocole technique. sa vision technologique et son leadership auprès des développeurs. Cette couche réconcilie en quelque sorte les visions applicatives et métiers. WSDL… et les standards WS-* validés • Routage intelligent. Le challenge pour l’architecte est de devenir un animal communicant. mais nécessitant plus d’efforts (définition d’une sémantique d’entreprise. développeurs). car ils sont une abstraction plus élevée que de simples API. entre autres. dont certains pourront être mis en œuvre au travers de technologies EAI. porteurs de valeur autant fonctionnelle que technique (c’est souvent le cas avec l’intégration de systèmes existants). iWay… Ces solutions permettent. Programmez n°87 48 juin 2006 . Il faut souligner ici que le risque d’association d’un web services aux services est de reproduire par erreur une démarche " bottom up " plutôt que " top down ". Systinet. les quelques points clefs que doivent intégrer une solution SOA sont : • Support des standards du marché d’inter- opérabilité – au minimum XML. Une granularité fine peut sembler efficace car elle permet d’apporter une réponse directe au besoin d’un consommateur. Il doit être capable de promouvoir une stratégie pour le système d’information tout en gardant sa compétence. • Les suites d’intégration dont les leaders sont Tibco et webMethods • Des fournisseurs de briques unitaires spécialisées pour traiter certains aspects des architectures SOA : CapeClear. Dans une démarche stratégique pour les architectes et pour les développeurs. se rapprocher des fonctionnels est donc un facteur clé de succès. Microsoft) qui intègrent désormais des produits spécialisés pour supporter la mise en œuvre d’architecture SOA. Compte tenu de l’état de l’art actuel. localisation. Elle n’est ni stable fonctionnellement. Il s’agit de la granularité la plus porteuse de valeur. mais cette efficacité tient au fait qu’elle s’affranchit d’une réflexion sur les interactions consommateurs – fournisseurs.F ocus SOA les web services. les démarches de normalisation fonctionnelle et la culture plus forte autour des processus qu’ils acquièrent d’année en année pourront aider les architectes à " faire parler " les fonctionnels et les aider à formaliser des services au bon niveau de granularité. Remplacer les APIs par des web services ne garantit en rien que le service soit bien formé et conçu au bon niveau puisque les services dont il est question dans le cadre d’une SOA sont des services à valeur métier. s Marc Boullier Directeur Technique chez VISTALI s Benoit Paroissin Responsable de l’offre SOA chez VISTALI Granularité des services Il existe différentes granularités des services : • Coarse grained – il s’agit de services purement fonctionnels. une apparente simplicité de la mise en œuvre d’architectures SOA. utilisant des règles se basant sur le contenu des messages • Transformations utilisant le standard du marché qu’est XSLT • Moteur d’orchestration. l’architecte doit prendre en compte la direction que prend le marché et l’orientation vers des technologies autour des web services qui seront d’année en année de plus en plus matures. fonctionnel. Ils proposent des patterns d’implémentations ou des frameworks orientés SOA tels que SCA ou Indigo. C’est la raison pour laquelle l’identification des services fait généralement apparaître des projets façades. JMS.

SOA est l’avenir de l’EAI ! Mais SOA est plus que cela " précise Éric Samson. Mais au-delà de la réflexion purement architecture. les entreprises débutent des projets. leur exposition et le second est lié à l’intégration. Il faut les agréger. on bâtit son application. Microsoft mise sur la démocratisation " Sur le SOA. On assimilait il y a peu ESB et SOA. " prévient Frédéric Bonnard. " Nous possédons des centres de compétences SOA dans plusieurs pays. " Une application reposant sur des services avec l’échange de messages. L’aide et la formation deviennent des éléments importants pour le client. Le " buzz " autour n’est pas forcément une bonne chose " précise Marc Gardette (responsable architectes au sein de la division développeurs et plate-forme d'entreprise de Microsoft France). De plus en plus. pour parler de gouvernance : comment gérer l’architecture. des études approfondies. " Il faut aller voir les gens du métier pour vendre SOA pour qu’ils consomment l’architecture. plus tard. " Dans une architecture simple avec quelques services. Cependant. mais pas encore France. il unifie les architectures distribuées et la manière de communiquer. Orienté service. d’un dictionnaire. SOA est une démarche d’urbanisation de son système d’information. Je dois définir mes besoins. Les directions veulent plus de réflexion. définir les enchaînements. Numéro 88 . tout le monde a la même vision marketing. il faut rappeler que SOA est un type d’architecture avec une nouvelle couche orientée métier. SOA permet d’accéder aux anciennes applications à partir de nouvelles. Alors SOA l’avenir de l’intégration ? " Oui. les gens mettent BPM comme partie intégrante à SOA. avec de nombreux services. Pour cela. au business. il est extensible via des API. l’idée n’est (donc) pas nouvelle. Et WCF travaille avec notre framework de workflow" conclut Marc Gardette. "Échaudé c’est possible. Il faut impérativement une réflexion en amont " souligne Frédéric Bonnard (Directeur business unit crossvision). Et il ne faut pas oublier qu’il existe aussi différents types de services : technique. beaucoup font des études " précise d’emblée Éric Samson. c’est le rôle du BPM dans les architectures SOA. Car. Encore faut-il savoir comment les utiliser ensemble. Xcalia : ne pas tout confondre Le SOA constitue un axe stratégique pour l’éditeur français Xcalia. Je mets une couche au-dessus. " Et il faut aussi des personnes pour créer ces nouveaux services. plus c’est difficile à gérer. pour une question de taille de marché " précise Frédéric Bonnard. même en couplage lâche " prévient Frédéric Bonnard. On peut avoir des applications composites ou des processus " commente Marc Gardette. comment les orchestrer. plus l’architecture devient complexe. et cela ne se réalise pas forcément en Web Services. il faut aussi savoir ce que l’on souhaite faire : quelles applications vont profiter immédiatement de cette nouvelle configuration ? Rien ne se fait sans prouver que la démarche convient au métier. Chez Microsoft. De nombreux projets croisent SOA et intégration. business. Avant toute chose. que fait-on des services. le SOA est en quelque sorte le lien entre les applications et l’interface. Le premier projet SOA paie un peu pour les autres et il faut trouver un "sponsor" métier qui utilisera l’architecture d’un point de vue métier – business. Le premier concerne les services. mais cela n’est pas quelque chose de courant. infrastructure. " C’est encore un marché en démarrage. quitte. La vision. partage des schémas et sont gérés par des politiques. maintenant. Il s’agit d’un modèle de haut niveau. SOA = composant. assurant l’interopérabilité avec l’implémentation des WS-*. c’est simple à gérer. on dispose de workflow. aucune valeur ajoutée. " J’ai des services. La valeur ajoutée est là " poursuit Frédéric Bonnard. le discours de chaque éditeur n’aide pas les utilisateurs. si le SOA n’apporte rien de concret. On a besoin d’un véritable glossaire. à maintenir. Il y a deux visions : la vision métier et la vision technique. Et au-dessus de tout cela. Mais tout dépend de la manière dont on aborde SOA. Corba savait déjà le faire. nous disposerons d’une couche pour démocratiser SOA : WCF (Windows Communication Foundation). pour un certain nombre. Les principes des services sont autonomie. l’intérêt intrinsèque de SOA sera nulle. Les expériences passées ont sans doute raisonné les stratégies. SOA commence à se clarifier comme sur le référentiel de services ou encore sur l’orchestration. on est monté d’un cran. à aller vers du SOA " pur " " analyse Éric Samson. Le A signifie : quels sont les services. Surtout. Ce n’est ni une révolution. d’orchestration.F ocus SOA TEMOIGNAGES Sofware AG mise aussi sur le support " Ce que je vois. Bref. à maintenir. etc. Il y a deux axes à retenir. de processus. On a dit et écrit beaucoup de choses sur SOA. Cette démarche est capitale dans la réussite ou l’échec d’un projet SOA. On définit ainsi le SO (orienté service). Par contre. ni un outil. Cette relative prudence n’est pas due au hasard.Juillet / Août 2006 - SPÉCIAL LANGAGES de ASP à XUL 49 juin 2006 Programmez n°87 .

Or. lorsque nous demandons les descriptions et prix de tous les hôtels (en même temps) pour la liste que nous avons obtenue. ainsi que des Un service de voyage en ligne Lors d’un processus de réservation. BPEL (Business Process Execution Language) joue ici un rôle important en fournissant des moyens efficaces pour articuler et exécuter une logique applicative à un niveau d’abstraction prévu pour apporter les services nécessaires à des fins d’intégration. Les activités structurelles peuvent inclure une séquence qui exécute des activités les unes après les autres et un flux qui exécute les activités en parallèle. * OpenTravel Alliance (OTA) : http://www. il s’avère que c’est une notion des activités que le BPEL supporte. Pour des raisons pratiques. mettre en séquence et en flux. Les prestations comprennent : • getAvailableHotels : traiter une saisie de code aéroport et renvoyer une liste d’hôtels à proximité de cet aéroport • getDescription : traiter une saisie d’identifiant d’hôtel et renvoyer une description de cet hôtel • getRate : traiter une saisie d’identifiant d’hôtel. nous admettons que chaque opération est modélisée comme service unique. Renvoyer un devis • makeReservations : utiliser les identifiant hôtels et dates pour effectuer la réservation • cancelReservation : utiliser un numéro de confirmation pour annuler la réservation A Maintenant. En effet. D’autres services par contre peuvent être invoqués en parallèle. attribuer. par l’exemple Les architectures orientées services émergent comme modèle de choix pour l’intégration dans une entreprise. il y a la réception de messages. observons ce qui se passe lorsque nous voulons créer un service réutilisable avec un scénario type tel que la recherche d’un hôtel.opentravel.F ocus SOA BPEL & SOA. Ce scénario peut nécessiter une interaction de l’utilisateur qui doit par exemple visionner la liste d’options et décider quel hôtel réserver. les activités mentionnées ici sont recevoir. Dans le langage BPEL. par exemple. fin d’illustrer les préoccupations auxquelles le BPEL apporte une réponse. invoquer.org <sequence> <receive operation="shop" partnerLink="shopper"/> <invoke operation="getAvailableHotels" partnerLink="registry"/> <flow> <invoke operation="getRate" partnerLink="rateProvider"/> <invoke operation="getRate" partnerLink="rateProvider"/> <invoke operation="getRate" partnerLink="rateProvider"/> <invoke operation="getRate" partnerLink="rateProvider"/> </flow> <reply operation="shop" partnerLink="shopper"/> <pick> <onMessage operation="makeReservation" partnerLink="shopper"> <invoke operation="makeReservation" partnerLink="hotel"/> <reply operation="makeReservation" partnerLink="shopper"/> </onMessage> <onMessage operation="cancel" partnerLink="shopper"> <empty/> </onMessage> </pick> </sequence> Programmez n°87 50 juin 2006 . Nous pouvons imaginer ce processus comme un graphique présentant des activités de base et des activités structurelles. C’est le cas. un nombre de chambres et une date. toutes ces opérations peuvent être appelées. les invocations de services externes et l’attribution de valeurs d’un message à l’autre. La société concernée pourrait ainsi rédiger ses propres contrats WSDL en s’appuyant sur les schémas de l’OTA. Par exemple. Cet article présente une perspective des bénéfices qu’apporte le BPEL aux services Web : la concrétisation des principes d’une SOA. par exemple celles fournies par l’OpenTravel Alliance (OTA)*. Parmi les activités de base. Les messages utilisés par ces services peuvent être basés sur des définitions du secteur -ici du voyage. Nous appellerons plusieurs services dont certains doivent être invoqués à la chaîne. nous prendrons pour exemple un voyagiste qui propose des services en ligne. il y définit 15 activités de ce type. nous avons besoin d’une liste d’hôtels situés près d’un aéroport donné avant de demander des descriptions détaillées et les prix de ces hôtels.

fournit une réponse pour la sélection de l’hôtel dans la liste proposée ou pour annuler. l’utilisation du BPEL semble plus naturelle. ce qui permet l’utilisation de bindings plus efficaces lorsqu’on le juge nécessaire. et sélectionner un hôtel. et de connecteurs JCA. Des suites d’activités comme celles-ci peuvent être utilisées pour définir les processus BPEL qui seront publiés sous forme de services Web. Le framework d’Apache WSIF (Web Service Invocation Framework) définit ainsi les extensions WSDL pour des bindings d’appels locaux de Java. la deuxième pour visionner la liste. c’est que les activités sont représentées comme éléments et les sous-activités. 3/ Chaque message est modélisé comme une opération à sens unique. qui mémorise les points charnière depuis le début de la conversation. Pour notre scénario. JMS. Pour le modéliser. Ce qui signifie que notre processus peut être écrit en restant neutre sur la question des liaisons. les modèles de messagerie synchrone conviennent bien. Cependant. il parait raisonnable de maintenir les connections HTTP pour cette courte durée. Comme il y a deux interactions. makeReservation(). Parfois. WSDL au cœur du service Web La caractéristique technique déterminante d’un service du point de vue du BPEL est qu’il est décrit dans un fichier WSDL. au lieu de redémarrer de zéro à chaque message. Certes. il est possible d’arriver à ce résultat par le biais d’un langage de programmation traditionnel…Mais l’avantage que nous voyons dans le BPEL est que la notion d’interaction avec des services Web est intégrée dans le langage. les variables et les corrélations. 2/ Le processus expose une opération à sens unique qui initialise la recherche d’hôtel. En effet. Il est vrai qu’il existe de nombreuses librairies pour simplifier la tâche d’envoi et réception de messages avec des protocoles comme SOAP. On observe donc que la structure du XML reflète la structure du processus de façon évidente. Vous remarquerez que pour la première et la troisième option. Si nous admettons que nous supporterons ici des requêtes multiples et concurrentes. Ce morceau de code illustre comment et quelles activités peuvent être utilisées dans notre contexte (certains détails comme la manipulation de données ont été omis pour des raisons de clarté). L’orchestration de services en utilisant à la fois des identificateurs explicites et implicites apporte une flexibilité qui constitue un outil puissant lors le la modélisation de conversations étendues. cela marche très bien et il exis- Programmez n°87 51 juin 2006 . et cancel().F ocus SOA éléments de “non-activité” comme les processus. Ainsi. qui définissent la ville ou l’aéroport. nous pouvons très bien avoir un identificateur explicite qui circule ou nous pouvons cibler un set de propriétés applicatives spécifiques comme un tuple qui consisterait en un nom de client. quelqu’un qui envoie un message ne sait pas forcément quel identificateur utiliser ou même si une conversation existe déjà. les liens partenaires. le service global ne peut pas être modélisé sous forme d’une paire requête/réponse. Le temps nécessaire à chaque étape du processus est l’un des facteurs clé lors des prises de décision concernant la modélisation. nous avons plusieurs options: 1/ Le processus nécessite trois opérations de type requête/réponse: getDescriptionsAnd Rates(). Le BPEL n’admet pas par défaut que l’on accède aux services via SOAP avec HTTP. comme éléments fils. Le BPEL règle tous ces cas en introduisant le concept de corrélation et en permettant la définition des corrélations en fonction du contenu des messages. séparant ainsi clairement la logique métier des préoccupations de couche basse. si nous souhaitons nous concentrer essentiellement sur l’orchestration de services Web. et les dates. ou si une nouvelle conversation doit être créée. te une pléthore d’identificateurs de message et de conversation dans les standards JMS et WSAddressing. Les données du binding ne sont pas accessibles directement via le BPEL mais on les contrôle par le biais des configurations de déploiement. C’est pourquoi je vais exposer d’autres raisons d’utiliser BPEL dans ce scénario. Autrement dit. nous auront donc également besoin d’un moyen de corrélation définissant quel message est dirigé vers quelle conversation. Si l’utilisateur est devant le navigateur et attend une réponse à sa requête. Mais il arrive aussi que cette stratégie soit inutilement restrictive. ce qui implique un service stateful. EJB. Le client lance une requête. Les processus persistants Retournons aux différentes options d’échange de messages pour modéliser notre scénario. et ville. date. ou annuler la requête. le processus reçoit de multiples messages. un scénario d’utilisation différent peut amener l’utilisateur à répondre par e-mail Les schémas d’échange et les services stateful Notre scénario de recherche d’hôtel nécessite deux interventions de l’utilisateur: la première fois pour initier une requête avec des critères Identifier les conversations et corrélations Une manière de faire la corrélation est d’insérer des identificateurs dans chaque message pour identifier la conversation à laquelle il participe. Ce qu’il faut retenir ici.

Dans ce cas. Plus le processus est long. WSDL apporte des endpoints statiques à l’utilité limitée. Ils ne sont pas encore très largement acceptés et BPEL n’est pas dépendant d’eux directement à l’heure actuelle. Gérer les endpoints Dans notre scénario d’offre de voyages en ligne. si de multiples services Java tournent sur la même machine virtuelle. mais elle cache en fait une question délicate : l’opération d’annulation. Puisque les liens partenaires sont un concept intégré de BPEL et peuvent être manipulés directement dans les processus. y compris des considérations techniques et la logique métier. Isolation. Avec le niveau d’abstraction qu’offre le BPEL. Si une transaction de 500 millisecondes qui échoue peut simplement être relancée. Ce faisant. Durability). Les standards WS-AtomicTransaction et WSBusinessActivity utiles ici. Ici. s Jim Clune Responsable de développement chez Parasoft Programmez n°87 52 juin 2006 . Une des fonctionnalités souhaitables d’une SOA est la possibilité de gérer ces endpoints de façon dynamique à distance. même lorsque le processus n’est pas terminé. Bien qu’elles puissent être intégrées en écrivant du code dans un langage de programmation traditionnel. JMS a l’avantage de fournir des queues de messages adaptées à une utilisation en entreprise avec une messagerie persistante et fiable. nous avons là une solution complète de gestion des endpoints. au lieu de secondes. mais pas pour une transaction longue. et un certain nombre de technologies répondent à ce besoin. Nous allons ici faire la distinction entre deux types de transactions liées à BPEL et à l’architecture orientée services. on a également la notion de lien partenaire. elles font également partie des atouts du BPEL qui apporte un niveau d’abstraction et une infrastructure particulièrement adaptés à ce type d’applications. Le prochain obstacle derrière la notion de processus longs est la persistance de ceux-ci. avec des rappels spécifiés par des mécanismes d’adressage comme WS-Adressing. Ils participent au dialogue avec les partenaires via des Web Services et assure la persistance dans le SGDB. Le standard WS-AtomicTransaction définit une manière de réaliser ce type de transaction avec des technologies de service Web. l’approche consiste à définir des activités de “compensation” qui défont les actions précédentes. La première est la transaction atomique. à laquelle on accède souvent au moyen d’une API non propriétaire telle que le JMS (Java Messaging Service) et SOAP par HTTP. Transactions atomiques. Consistency. Les transactions atomiques préservent ainsi l’intégrité des données. simplifiant ainsi énormément la logique métier. voire des mois. Nous avons vu ici un certain nombre de propriétés communes à nombre d’applications à processus métiers. chapeautent le standard WS-Transaction pré-cité. Cela permet une résolution plus dynamique de l’endpoint comme ceux qui sont établis via le champ ReplyTo dans WSAddressing ou JMS. ce qui est raisonnable dans le cas d’une transaction courte. Le Runtime contient de multiple process. l’option qui prévaut pour gérer des processus longs via des services asynchrones est la queue traditionnelle de messages. Les liens partenaires peuvent être spécifiés au moment du déploiement ou de l’exécution.F ocus SOA – allongeant le temps à des jours. D’autre part. transactions longues L’une des opérations de notre service peut paraître inoffensive. il est plus efficace pour eux de s’invoquer l’un l’autre directement en mémoire plutôt que par le biais de messages ou connections socket. le modèle qui traite chaque message comme un service à sens unique paraît plus approprié. mais le prix à payer est le verrouillage des ressources pour toute la durée de la transaction. Elle implique que parfois des activités peuvent être dé-faites. plus il est critique qu’il puisse durer avec les cycles. Une pratique courante consiste à séparer l’interface WSDL en excluant l’endpoint de l’implémentation WSDL qui elle. C’est pourquoi il y a une seconde catégorie de transactions longues qui peuvent aussi être appelées Business Activity. depuis le déploiement statique simple jusqu’à la résolution dynamique dépendant de multiples facteurs. Dans le monde des services Web. la persistance est essentielle pour des processus qui vont s’étaler sur des semaines. Les systèmes distribués qui ont besoin d’une transaction ACID prennent normalement ces propriétés avec un protocole de commit à deux phases. l’un des éléments les plus sujets au changement est l’endpoint des différents services. Le bénéfice majeur qu’apporte un processus long implémenté avec BPEL est la persistance que fournit le moteur BPEL. mais la distinction entre les deux types de transactions est importante et le BPEL la supporte. Les lecteurs familiarisés avec les BD relationnelles reconnaîtront ce type de transaction associée à la sémantique ACID (Atomicity. les ressources ne sont pas verrouillées et l’information sur l’état peut être partagée. l’inclut.

de composition d’applications composites. Solution SOA et d’intégration. IBM Oracle IBM SOA Foundation Commercial Fusion Architecture Commercial BEA AquaLogic Commercial IWay Telelogic webMethod De Gamma Microsoft SOA Middleware System Architect Fabric De gamma suite Biztalk Commercial Commercial Commercial Commercial Commercial IWay webMethod Programmez n°87 Biztalk 53 juin 2006 . Utilise massivement les Web Services. Vous trouverez aussi bien des solutions " clé en main " purement SOA ou SOA – EAI chez les spécialistes de l’intégration. Cependant. outils de modélisation et d’orchestration. etc. XML et les Web Services. référentiel central. par contre. Plate-forme composée de différents outils et moteurs pour réaliser des environnements SOA (BPM. inclut un Bam et supporte BPEL. une gestion d’accès et des polices de sécurité. Développé avec . de BPM. Les offres se différencient sur les fonctions et aussi sur le type d’applications SOA : composites ou de services. monitoring. même avec des environnements complets. processus métiers. Inclut un ESB. Serveur d’intégration Windows de type EAI. l’ajout d’un outil tierce n’est pas à écarter. Certaines solutions obligent à mettre en œuvre une nouvelle infrastructure. plusieurs grands éditeurs se positionnent sur les solutions globales. dans la pratique. SOA évoluant constamment.). Il est difficile de dresser un panorama un tant soit peu complet.net. il est parfois difficile de cerner la notion de SOA et encore plus quand on aborde les outils. un " annuaire " pour les services web. sur les solutions globales.Net. il n’y aura guère de problème. L’offre autour du SOA s’étoffe rapidement dans l’ensemble des domaines. surveillez les spécifications et l’évolution des outils. ESB… SCA est déjà pris en compte dans certains outils de la gamme. Dans les outils open source. le nouveau marché de l’intégration. l’offre se réduit à peu de chose. Nous vous proposons un aperçu et les grandes tendances actuelles. un monitoring. Les solutions de bout en bout ou presque (applications de services et composites) Aujourd’hui. à vous. Pas de fonctions d’orchestration. SOA Foundation regroupe l’ensemble des outils IBM liés aux architectures SOA : modélisation. Son modèle de conception d’application / architecture est piloté par modèle et propose une architecture interne ouverte pour intégrer les applications hétérogènes.F ocus SOA Panorama des outils orientés SOA L’architecture orientée service est devenue le maître mot des éditeurs commerciaux et open source. les processeurs métiers. omme nous l’avons répété dans l’ensemble des pages précédentes. Permet de convertir des processus BPMN en processus BPM. un intégrateur de données. un module BPM et une fonction de recherche. l’interopérabilité / compatibilité existe entre les outils et avec les appli- C cations internes et externes. Mais. l’offre est variable selon les domaines. SOA et la gestion des informations. Suite d’intégration orientée SOA. Repose sur . les standards et protocoles implémentés. Le développement se veut le plus visuel possible. repose sur trois grands principes : le grid. les approches étant différentes selon l’éditeur. Inclut aussi BPEL. Théoriquement. Editeur SoftwareAG Outil CrossVision licence Commercial Description Suite d’outils couvrant l’ensemble des besoins. On dispose aussi d’un outil pour orchestrer les architectures complexes. Inclut de nombreux correcteurs. Environnement de modélisation orientée architecture. Inclut des mécanismes de déploiement SOA. Moteur de BPM présent. notamment dans l’orchestration. fonctions d’intégration de l’infrastructure applicative existante. ainsi qu’un outil de gestion d’accès et de sécurité applicative. portail. Présence d’un référentiel unique. Pour les ESB. Serveur d’intégration s’appuyant maintenant sur un framework SOA. Les spécialistes d’outils d’intégrations (de type EAI ou non) se tournent franchement vers le SOA. Gamme d’outils orientés SOA. inclut des modules de gouvernance. La différence peut se faire sur les fonctions proposées. Elle comprend un ESB. L’outil mise sur son interopérabilité et ne nécessite pas d’infrastructure nouvelle. de vérifier que vous pourrez utiliser tel outil avec des services / applications existant. serveur.

on disposera du Windows Communication Foundation et sur Eclipse de SOA Tools Platform. S’appuie comme la concurrence sur JMS. les monitorer. Cependant. SOA Link vise le cycle de vie SOA et la gouvernance. IBM. Propose une orchestration dynamique. s François Tonic Programmez n°87 54 juin 2006 . l’ensemble des standards et protocoles Java des web services et SOA. S’intègre à la plate-forme WebSphere d’IBM et intègre un modeleur de processus métier et un assembleur de composants. Possède une console d’administration web. AmberPoint AmberPoint Ilog Compuware Xcalia SOA Validation Commercial System SOA Management Commercial System Jrules Commercial OptimalJ Intermediation Platform Commercial Commercial La course à la spécification ? Début mai. Outil pour passer en SOA sans imposer des choix techniques. à la production et durant la maintenance. Basé sur JBI (Java Business Integration).F ocus SOA Les ESB Si SOA ne signifie pas forcément utilisation d’un ESB. 16 éditeurs oeuvrant dans les outils SOA ont rallié SOA Link. BEA et Oracle.Net Commercial Commercial Outil de tests et d’analyses de web services. l’outil peut servir dans des architectures SOA complexes afin de générer le code des services. plusieurs éditeurs. Il utilise les protocoles et standards Web Service et BPEL. Evalue l’impact de tout changement dans les services. construire des architectures complexes. Les promoteurs de SCA prévoient de l’implémenter dans leurs outils. Côté Microsoft. pour le moment. ce n’est pas une spécification. Utilisation des politiques de gouvernance. présentaient SCA (Service Component Architecture). L’outil vérifie le bon fonctionnement de l’architecture et des services.Net et les Web Services. La persistance des données pour les messages se base sur Derby. Se base sur le protocole de message JMS. dont IBM. SCA sert dans les architectures SOA. Pour le messaging. Inclut un module d’orchestration JMS et WS-RM. ESB multiprotocole. Gestion de bout en bout des messages. un ensemble d’outils pour créer des services.Net. les applications. Il utilise le framework Spring. BPEL4WS. SCA s’organise en module qui contient des composants. Outil de validation SOA. Il implémente aussi les standards BPM. l’offre n’a cessé de se multiplier et aujourd’hui. Possède aussi une console d’administration et une gestion de sécurité des services. L’éditeur français est le leader des processus métiers. supporte les messages non XML (via une transformation). Permet de valider les services selon les spécifications du marché. Cela signifie que l’on découple totalement la construction de l’architecture du développement. Facilite le développement et l’adaptation des processus et règles à l’environnement en prenant en compte en temps réel les modifications. non intrusif. Sonic Software IBM Sonic ESB WebSphere ESB commercial Commercial L’ ESB du marché. supporte z/OS avec un outil Eclipse. Utilise les principaux standards du marché. iWay Fiorano ServiceMix IWay ESB Fiorano ESB ServiceMix commercial Commercial Open source ObjectWeb Tibco Cape Clear Iona Celtix BusinessWorks Cape Clear ESB Artix Open source Commercial Commercial Commercial Divers Parasoft Mia Software SOAtest Mia for . outil de génération de code . Fonctions de rapports décisionnels. les gérer. supporte les standards et protocoles du marché. Il est à noter que chaque plate-forme définit sa propre " organisation SOA ". à terme. Orienté développement et MDA. cet ESB s’appuie sur ActiveMQ. On fournit ainsi une plus grande liberté de choix aux responsables et développeurs. Supporte Java. Supporte WS-Adressing. Ce projet doit apporter. Propose l’automatisation des tests des implémentations BPEL. Cependant. le bus devient un élément central des architectures SOA complexes. ni un standard. SOA Link pâtit de l’absence des poids lourds : Microsoft. . ses propres concepts.Net basé sur UML 2 et s’intégrant dans Visual Studio 2005. Permet de créer des architectures SOA adaptatives. un outil de message utilisant JMS. Inclut de bonnes pratiques. Mise sur le messaging avec le support de JMS. L’initiative a pour but de fournir des recommandations pour assurer une bonne intéropérabilité entre les outils des éditeurs adhérant au SOA Link. Basiquement. etc. Cet environnement vise à administrer au mieux son SOA de la conception. La conception des applications se réalise selon une approche SOA. Un composant correspond à des fonctions que l’on regroupe dans des services que l’on décrit par une interface et possède des contrats. Bref. JMS. S’appuie sur le standard JMS. l’offre open source rivalise souvent avec les outils commerciaux. En décembre dernier.WS-Reliable Messaging. Assure une gouvernance centralisée. on développe indépendamment d’un choix technique de déploiement comme c’est le cas aujourd’hui. Issu du projet Artix de Iona. L’approche de l’éditeur du SOA se fait par le développement orienté modèle. BEA. Depuis 3 ans. Il s’intègre au serveur J2EE Geronimo. basé sur . Oracle. Supporte Maven 2.

mise en place d’une solution adaptée à la demande du client (B2C). Le module. fondée par des développeurs du projet open source Azerus.foldershare. Olivier Chalouhi avoue qu’il est encore trop tôt en France pour voir apparaître ce genre d’offres d’emplois. L’éditeur semble assez optimiste sur les années à venir et sur la croissance du marché. il s’agit. sans pour autant surcharger la bande passante et surtout.allpeers. Allpeers. de déployer ou de mettre les informations internes sur plusieurs milliers de postes. Avec la croissance du contenu à la demande (vidéo. à un coût de distribution très bas. Cependant. 2e partie S pour accéder à son compte et récupérer / transférer des données. Le marché B2C est en pleine croissance. Dans les applications distribuées.aelitis. etc. autre Français prometteur du marché. comme Skype le propose. par exemple. son. " La technologie est prête et les entreprises savent ce qu’est le P2P. même si elles n’ont pas de vision dessus. on possède plusieurs éditeurs proposant des solutions et des services sur et autour du P2P. Le marché sur le point d’exploser ! Même si les utilisateurs finaux ne s’en aperçoivent pas toujours. à partir d’un navigateur Firefox.nous n’avons qu’effleuré le marché réel de cette technologie. contribuent au développement des solutions P2P Les grandes entreprises s’inté. Olivier Chalouhi (Aelitis). En entreprise. des services en ligne. le mobile. ou charger un film. client P2P Java bien connu. le marché du P2P explose de partout. Sites : Allpeers : www. de plus en plus d’applications vont embarquer des mécanismes de type P2P pour faciliter les échanges de données (ex. etc. propose une approche originale et plus que prometteuse. : dans un cadre collaboratif ). Il n’y a pas de frein sur la technologie. mais sur le manque de contenu " précise Olivier Chalouhi.) le P2P constitue une technologie fiable et puissante pour faire du streaming video à la demande. Le module s’appuie sur Bitorrent et aura une interface très simple. La seconde. de détecter les membres d’un réseau virtuel (= ses amis. L’explosion du contenu à la demande sur Internet. Idéal pour échanger de trop gros fichiers tout en évitant de passer par du ftp. Cela peut ressembler à ce que propose déjà Apple avec . Des éditeurs en pleine croissance Le Français Aelitis propose deux types de services : revente de la technologie à d’autres sociétés (B2B). le P2P intervient aussi Le modèle économique ne devrait pas être la publicité mais les services annexes. Au lieu d’utiliser des CD / DVD ou même un intranet. le P2P a aussi sa place.com Aelitis : http://www. avec un affichage du navigateur ressemblant à Messenger. par exemple. le P2P est adapté aux volumes de données importants à distribuer. Cette extension est en tout cas très attendue. Comme le précise. une petite dizaine de sociétés se développent sur le P2P. et très prometteuse. impossible de payer un film à la demande 400 ou 500 fois le prix d’une chanson… Dans les services de stockage en ligne. En entreprise. sera disponible sous Windows. Une des plus connues est Aelitis. à l’avenir. sans augmenter la puissance CPU de distribuer une grande masse de données.Mac. La version finale devrait sortir courant juin.F ocus P2P Le P2P chez les pros ! Microsoft débarque en force Dans la première partie de notre dossier P2P .com/ Foldershare : www. est Allpeers. en France.com s François Tonic Programmez n°87 55 juin 2006 . MacOS X et Linux. connaissances. pour mettre en relation des utilisateurs d’un même réseau de contact… Aux Etats-Unis. ressent aussi à cette technologie permettant des économies de déploiement gigantesques ! ’il existe encore peu de sociétés spécialisées dans le P2P. racheté il y a quelques mois. D’ailleurs Microsoft propose un mécanisme identique avec l’outil FolderShare (service de Windows Live). Il s’agit. à moindre coût. collaborateurs…). développant un module Firefox pour utiliser le P2P directement dans le navigateur et en proposant un fonctionnement à la Skype. Surtout. le P2P permet. La notion de services à valeur ajoutée sera sans aucun doute le point clé pour l’équilibre financier. il sera possible de voir quelques offres mentionnant des connaissances en technologies P2P. gratuit. Un avenir pour les développeurs ? Si aux Etats-Unis quelques postes de développeurs P2P existent.

de personne à personne ou à l’échelle du groupe. attributions de ressources humaines. un gestionnaire de tâches. les collaborateurs peuvent communiquer. elle ouvre de multiples perspectives. et cela peut être fort utile dans le cadre de tâches personnelles. etc. la troisième catégorie est composée de fonctionnalités spécifiques orientées utilisateur. etc. etc.L’agencement et l’usage d’un bureau virtuel sont fonction de sa finalité pour l’équipe qui l’utilise. Les collaborateurs disposent des mêmes ressources et. Le mode projet est naturellement privilégié par les utilisateurs de cette application. Ces outils sont tous partagés à l’échelle d’un bureau virtuel donné. dans un bureau virtuel. La gestion de la présence et les notifications de lecture sont deux des caractéristiques de la solution qui découlent directement du modèle P2P hybride. qui peuvent être déployés. diagramme de Gantt. Enfin. d’autre part. Gérer des projets Groove Virtual Office offre un panel large d’opportunités de travailler en équipe. du même niveau d’information. CRM. L’ordonnancement et le suivi en temps réel de tâches sont deux des caractéristiques communes aux outils Tasks Manager et TeamDirection Project.). Au sein des bureaux virtuels Groove. Les cas d’usages sont aussi nombreux qu’il existe de possibilités d’agencer un bureau virtuel. en ce sens qu’un bureau virtuel est un environnement Ad Hoc immédiatement disponible. Cette solution présente toutes les qualités d’un gestionnaire de projets classique : gestion de tâches. Elle est naturellement collaborative. Enfin.F ocus P2P Groove Virtual Office : Pour quels usages ? Groove est une solution P2P hybride de travail en équipe. permet de répartir les tâches d’un projet entre les membres d’un bureau virtuel et d’autres intervenants extérieurs. Elles incarnent les trois piliers fondamentaux d’une collaboration réussie : le partage. il n’y a donc qu’un pas que franchit une grande majorité des utilisateurs de Groove. en direct. En s’interfaçant avec MS Project. Rares sont cependant celles qui mutualisent l’ensemble de ces fonctionnalités en une même et seule application. permettent de copier comme lien. Citons en ce sens l’outil Meetings et l’outil Tasks Manager. ou encore les forums. Il s’agit en premier lieu de la messagerie instantanée interne à la solution. mener et acter des réunions consensuelles. il s’agit de moyens de communication tels que le Chat. Ils disposent d’un environnement modulable en fonction de leurs prérogatives de groupe et des objectifs qu’ils souhaitent concrétiser ensemble. la plate-forme se prête aisément à cet exercice. Or. si nécessaire. Meetings offre la possibilité de planifier. la seconde réside dans l’opportunité donnée de gérer des projets de manière macro ou microscopique. toute information de la plate-forme et faire pointer un membre sur cette information. etc. Ils disposent également de la possibilité de travailler en étant connecté ou non. Certaines fonctionnalités s’appuient plus particulièrement sur la notion de duplication à l’identique de données : les liens hypertextes internes à Groove. L’ensemble de ces fonctions permet aux membres d’un bureau virtuel d’échanger des données structurées ou non. documentaires. Programmez n°87 56 juin 2006 . ne souffre d’aucun SPAM et peut véhiculer tous types d’informations (vocales. TeamDirection Project se synchronise avec MS Outlook. La première est de simplifier les processus de gestion par une approche centrée sur les hommes et certaines fonctionnalités clés. Ce dernier n’est pas disponible en standard dans Groove. des espaces de stockage de documents ou des applications partagées. En effet. Tasks Manager. Ce produit se base sur le concept des bureaux virtuels. En second lieu. parce qu’elle met à la disposition des utilisateurs les outils fondamentaux dont ils ont besoin pour mener leurs projets vers le succès. N Collaborer efficacement en équipe La première est indiscutablement nécessaire : ce sont les outils de communication. il peut être acquis séparément ou dans le cadre de la version project du produit. Du mode projet à la gestion de projets. textuel.). ombreuses sont les solutions de travail collaboratif qui s’appuient sur des outils de communication synchrones. qui remplace l’e-mail. partager des ressources et des outils. mais ces trois catégories de fonctionnalités contribuent à un travail collaboratif réel. Ils constituent l’une des premières réponses qu’offre Groove à ceux qui souhaitent travailler ensemble sur un sujet précis : gestion de projet. la communication et la prise en compte du facteur humain. Sa durée de vie peut être variable suivant qu’il répond à un besoin de longue ou courte durée. en sus d’interagir avec l’ensemble des autres outils de Groove. il s’agit là d’un minimum requis pour qu’une équipe distribuée géographiquement puisse virtuellement travailler. un gestionnaire de contacts ou un tableau blanc et peut être étendue si les utilisateurs font l’acquisition d’outils additifs. également multifonction (manuscrit. textuelles. en temps réel ou asynchrone. d’une part parce qu’elle fournit un environnement propice au travail de personnes complémentaires et. On distinguera trois catégories de fonctionnalités. à la demande. La seconde catégorie de fonctionnalités comprend une vingtaine d’outils. en adéquation avec le modèle P2P utilisé par Groove. séance de réflexion. du fait de la synchronisation automatique des données entre leurs machines. audio. plus généralement. par exemple. Cette gamme compte des outils tels qu’un agenda partagé. quant à lui.

Elles peuvent aisément envoyer des messages. sources documentaires sont en lieu sûr et sont toujours à jour. sa raison d’être réside dans sa capacité à donner à une équipe de contributeurs les moyens de leur action. de travailler avec d’autres structures. Les canaux d’Information sont connus. grâce au serveur relais (le P2P de Groove peut être tour à tour pur ou hybride). L’avantage de cette solution apparaît évident : aucune manipulation préalable d’import/export ou processus de connexion spécifique ne sont nécessaires pour collaborer en mode asynchrone. aux bandes passantes disponibles chez chacun des utilisateurs d’un même groupe. Retrouvez l’actualité d’Hommes & Process sur http://blog. etc. la résilience et la persistance des données sur postes garantissent aux personnes l’accès à leurs informations utiles. s Fabrice BARBIN fabrice.boullier@hommesetprocess. ses partenaires.hommesetprocess. à titre d’exemple. mais n’exclut pas pour autant une approche apparemment ambivalente où coexisteraient la coopération et la collaboration. C’est pourquoi de nombreuses équipes de collaborateurs de par le monde exploitent ses qualités opérationnelles pour travailler avec efficience et confiance.F ocus P2P Travailler en mobilité et/ou en déconnexion Le protocole P2P hybride de Groove induit une duplication des informations entre les différents membres d’un bureau virtuel. etc. simples et optimisés.com Responsable Technologies http://www. En implémentant Groove au sein de leur propre structure mais également chez leurs collaborateurs extérieurs. les organisations utilisent l’email et les systèmes hébergés (Extranet. les télétravailleurs et les cadres dirigeants apprécient tout particulièrement ces qualités de Groove. Cross-Firewall et hautement sécurisé. basée sur le P2P professionnel hybride. Groove s’adapte.hommesetprocess. portails.hommesetprocess. notamment par l’intermédiaire des Web Services. les entreprises partagent un environnement de travail collaboratif complet. En conséquence. La mise en œuvre est rapide.) pour travailler ensemble. et sur une thématique propre au groupe. Hommes & Process fournit des solutions innovantes et des services d’optimisation du travail en équipe. C’est également la raison qui justifie l’intérêt porté par les DSI à ces technologies qui sont à la fois administrables. L’adaptabilité de la plate-forme aux bandes passantes disponibles. Etendre la coopération vers la collaboration Groove s’adresse à des populations de moindre taille que celles qu’adressent les services de portails.com Collaborer entre organisations distinctes C’est un lieu commun : une organisation a besoin. ainsi que la possibilité offerte aux collaborateurs de déterminer le niveau et les priorités de synchronisation de leurs machines entre elles permettent aux personnels nomades ou mobiles de continuer à travailler en toute transparence. Si un bureau virtuel peut rassembler un nombre quasi-illimité de collaborateurs. au quotidien. lorsqu’il en détecte. de multiples perspectives. Leurs res- Pour conclure… L’architecture originale de Groove Virtual Office.barbin@hommesetprocess. ensemble. à vocation plus communautaire et coopérative. La synchronisation des données entre les postes clients est automatique. Groove Virtual Office répond à ces attentes.com Programmez n°87 57 juin 2006 . hautement complémentaires et intégrables à des systèmes plus classiques. Groove ne l’est pas moins pour tous ceux qui sont mobiles ou travaillent en déconnexion. la solution a pour ambition d’apporter une réelle valeur ajoutée aux systèmes d’information existants dans les organisations. ouvre Unique distributeur officiel des technologies Groove (Groove Networks Inc / Microsoft Corp) sur le territoire français. tant en terme d’usage utilisateurs qu’en terme d’architecture purement technique. Les commerciaux. Par défaut. Ouverte aux autres technologies. Groove est le lien idéal entre les organisations qui souhaitent développer et capitaliser sur leurs relations tout en protégeant leurs propriétés intellectuelles. Nous l’observons : la majorité des équipes actives dans un espace partagé n’excède que rarement les 20 personnes. Ainsi. Team Direction Project : un outil intégré à Groove Virtual Office dédié à la gestion de projets en équipe. ses fournisseurs. FTP. Groove répond indéniablement aujourd’hui à de multiples attentes des organisations.com Responsable Marketing & Communication http://www. Les fonctionnalités sont celles dont ils ont un besoin opérationnel. La redondance. ses clients. Bénéfique à plus d’un titre aux utilisateurs sédentaires mais géographiquement dispersés. un ordinateur portable et une carte GPRS/EDGE ou Wi-Fi suffisent à ce que les itinérants restent productifs et informés lors de leurs déplacements. etc. ensemble. Plus important encore : la confiance numérique s’applique. sans avoir à se connecter à un réseau (Internet. modifier et déposer des ressources documentaires ou contribuer à un forum.com s Cédric BOULLIER cedric. LAN. des passerelles informatiques sont nécessaires pour faciliter la communication et l’ouvrage mutuel.).

Avalanche. un fichier DRM cadenasse par protection le contenu de manière à. Le but du jeu est de réduire la bande passante utilisée en n'échangeant pas plusieurs fois le même tronçon de données . Le problème du comportement des "pairs" d'un réseau P2P est trop complexe à modéliser de manière classique. Ce modèle serait parfaitement adapté à la diffusion de patches de taille importante. onéreuse et non adaptative à la charge ? Si vous avez des ressources limitées (vous possédez un nombre fini de fermes de serveurs). bande passante (de diffusion) variable en fonction du nombre de clients (un pair "va et vient" sans avertissement). le Swarming utilise des éléments dynamiques discrets. Avalanche réalisera l'échange de parties de fichiers. la capacité du service augmente au fur et à mesure de la charge et ce. Le concept trouvé est un P2P swarming grandement amélioré. sans pour autant qu'une demande trop forte ne sature les serveurs (en cas de rustine critique à appliquer par exemple à tous les Windows VISTA installés). la même importance en terme de reconstitution du fichier d'origine. Les bénéfices : augmentation drastique de la vitesse. Le swarming est la possibilité d'atteindre un but sans pour autant qu'une entité supervise ou coordonne l'ensemble des opérations. vous ne craignez plus l'effondrement du service. par exemple. Une meilleure performance Au départ. et le défi à relever est de maintenir la disponibilité du service. Un fichier DRM très faible. Pour pallier ce dernier inconvénient. difficulté de gestion du réseau en l'absence de véritable serveur central d'administration. besoin de recourir à des algorithmes plus sophistiqués. Bref. et que votre demande croit subitement de manière non prévisible. limiter le nombre de copies possibles sur différents supports. Plus vous avez de "clients" et plus votre diffusion résistera linéairement à la demande : avec ce modèle. le problème posé est le suivant : comment diffuser un patch à des millions de clients sans que cette opération soit lente. A la manière de Bittorrent.F ocus P2P Avalanche : le projet P2P en gestation chez Microsoft Des chercheurs du laboratoire de Microsoft travaillent actuellement sur un projet P2P révolutionnaire. Ce dernier point est primordial : chaque acteur est connu. la création d'un réseau P2P permet de suivre cette demande de manière linéaire. quelques clients. et mise à disposition d'un nombre restreint de serveurs noeuds. Les inconvénients : difficulté d'assurer à 100% un téléchargement sans interruption de service (risque réel qu'au bout de x tronçons téléchargés. I l s'agit d'un projet industriel de grande envergure : permettre de distribuer efficacement à l'échelle mondiale des correctifs. Il n'y a pas de "leader" qui ordonne les actions de chacun. à moindre coût. la charge engendre un effet positif. chaque PC aide l'autre. la durée d'écoute. Ouvrons une petite parenthèse pour expliquer ce terme. n'était plus disponible (car les clients sont arrivés au bout de leur téléchargement et se sont déconnectés). etc. les chercheurs de Cambridge ont décidé d'encoder chaque tronçon de manière à ce que ceux-ci détiennent le même poids. Chaque client Avalanche réclamera ses morceaux de Programmez n°87 58 juin 2006 . Au contraire. et le contenu reçu par un client est garanti comme étant strictement identique à celui diffusé (Microsoft n'autorisera que la circulation de fichiers estampillés DRM (Digital Rights Management)). Dans ce cadre. le nombre de lectures autorisées. le suivant soit momentanément indisponible). même si un des morceaux. coût a pour but de restreindre la diffusion par copie d'un contenu numérique en vue de s'assurer que les droits d'auteur ne sont pas bafoués. chaque "client" devenant un nouveau serveur. aux ressources limitées. bien au contraire. d'où le recours au swarming. adaptation illimitée à la charge. mais de tendre vers les 100% (on part du principe qu'un petit pourcentage d'échec est acceptable). pesant au plus un centième de l'ensemble. mais permettrait également d'identifier clairement et individuellement chaque fichier circulant sur le réseau. dans le cadre d'un système distribué et décentralisé. qui ne serait partagé que par Avec Avalanche chaque utilisateur reçoit des combinaisons et en génère de nouvelles à partir des données qu'il a déjà en sa possession. mais dont chacune des constituantes enferme les informations nécessaires pour récupérer "le reste". Le cahier des charges n'est plus d'assurer 100% de connectivité.

le peer soit "bloqué" en attente d'un bloc. Les services. un Pentium III. nous ne sommes peut-être pas loin d'une révolution en matière de P2P. Plus précisément. Si le serveur principal (celui qui détient à l'origine le fichier dans son ensemble) devient inaccessible soudainement. Une nouvelle génération de P2P En résumé.F ocus P2P manière linéaire (dans un ordre prédéterminé. Avalanche reconstruira le fichier original à partir de ces combinaisons. la vitesse obtenue au final sera de 20 à 30% supérieure à un réseau P2P classique comme celui de Bittorrent. tellement les avantages en milieu industriel sont nombreux. il deviendra possible de diffuser des parties d'un fichier de façon organisée (suivant des combinaisons linéaires). Et nous ne sommes sans doute plus très loin du temps ou des API seront disponibles pour les développeurs. En outre. C'est un peu trop beau pour être vrai. cet encodage ADN sera dynamique et réactualisé en permanence. Et la même machine prendra 3 minutes 38 secondes pour réencoder 100 blocs d'un ensemble de 200 Mo. mais dynamique). vu que les fragments ne sont plus distribués seuls. Pour reconstituer le fichier d'origine. mais pour l'instant purement théorique (Bram Cohen. et équipé de 512 Mo de RAM. Entre autres fragments. Le risque de voir un téléchargement ne pas aboutir existe encore mais est considérablement réduit. Grâce à ce réencodage dynamique en ligne. mais qu'il a pu déjà desservir chaque partie à seulement 10% des clients. L’interactivité.Xavier.com Photo : © Larry Williams/zefa/Corbis . tous les utilisateurs pourront reconstituer le fichier d'origine. mais ce phénomène sera moindre que dans le cas d'un téléchargement P2P classique. Au final. Les enjeux sont trop énormes pour que Microsoft ne soutienne pas cette voie. un utilisateur n'aura pas besoin de la totalité des TOUT NOUVEAU TOUT BEAU L’actu. aucun n'étant jugé primordial pour la reconstitution de l'ensemble. mais à notre avis cela finira par aboutir. mais de la totalité des combinaisons générées (chaque combinaison étant indépendante d'une autre). Les archives du Magazine www. D'après ses concepteurs. Avalanche utilise aussi un concept de plus en plus répandu dans le P2P qui est le téléchargement en parallèle. cela n'entamera en rien les performances et la diffusion des prochains blocs. il se peut qu'au bout de 90% de données téléchargées. cette technique améliorée de P2P swarming et de téléchargement en parallèle. Avec cette technique. Les Blogs.com Avalanche est plus robuste qu'un système P2P classique.Leclercq@programmez. s Xavier Leclercq . Autrement dit. peu importe si un des pairs qui contenait au départ une partie se déconnecte. Le temps de réencodage et de décodage des parties a été calculé pour n'occuper que 4% du temps total de téléchargement. chaque tronçon téléchargé pourra se substituer à un autre. cadencé à 650MHz. C'est génial sur papier. la bande passante est optimisée. Chaque utilisateur recevra des combinaisons et en générera de nouvelles à partir des données qu'il a déjà à sa disposition. Ces constituantes s'accompagneront d'un libellé décrivant les paramètres ("ADN") nécessaires à la recomposition de l'ensemble. et pour y parvenir. le client demandeur n'a plus besoin de télécharger l'ensemble des parties. mais suivant des combinaisons. Les sous-entendus techniques sont nombreux : par exemple. créateur de BitTorrent.programmez. car il n'aura plus de bloc considéré comme "très rare". mettra 5 secondes pour réencoder 100 parties d'un ensemble de 10 Mo. améliorations. a qualifié Avalanche de "vaporware" "dont la prétendue supériorité ne serait basée que sur des simulations"). et chacun de ceux-ci contiendra une sorte de combinaison "ADN" de l'ensemble. Et les applications ne s'arrêteront pas à la distribution de patches : certains imaginent déjà une possible utilisation dans le cadre d'une location de film à la demande via Internet.

de créer une liste d’applications qui ne seront pas soumises au DEP en basculant sur le mode OptOut. s Alain KERHUEL Programmez n°87 60 juin 2006 . our combler cette faille de sécurité (le buffer overflow). Pour que cette fonction soit utilisable. Pour Problèmes avec les compilateurs JIT et certains pilotes de périphériques Les applications qui ne supportent pas le DEP sont en effet peu nombreuses. Pour corriger ce problème. les différentes parties de la mémoire ne peuvent pas être sélectivement activées ou désactivées. Sur la version 32 bits de Windows. P l’heure. une violation d’accès déclenchera un reboot (bugcheck) 0xFC: ATTEMPTED_EXECUTE_OF_ NOEXECUTE_MEMORY. En mode utilisateur.T echnologie Les nouvelles armes anti-virus NX et DEP. Les pilotes de périphériques n’ont plus le droit de lancer l’exécution de code à partir de la pile lorsque le DEP est activé et si cela se produit. l’une software. Le premier paramètre ExceptionInformation de la structure EXCEPTION_RECORD contient le type de la violation d’accès qui a eu lieu et dans le cas d’une violation d’exécution il prend la valeur 8. implantée directement dans le système d’exploitation comme cela a été le cas avec le Service Pack 2 de Windows XP et l’autre matérielle. Les quatre commutateurs du DEP Côté système d’exploitation maintenant. Cette fenêtre permet également de vérifier si la fonction NX est présente. soit dans les cas les plus graves rebooter directement l’ordinateur. l’exception générée par le DEP provoque une violation d’accès STATUS_ACCESS_VIOLATION (0xc0000005). Elle s’appuie à la fois sur le système d’exploitation et sur une nouvelle fonction matérielle incluse dans les processeurs. ce qui évidemment perturbe le système de protection. C’est la valeur OptIn qui est sélectionnée par défaut. Sous l’onglet Prévention de l’exécution des données. Dans la majorité des processus. Cette méthode peut paraître violente. Celle-ci est alors récupérée par le système d’exploitation qui peut la traiter de plusieurs manières différentes. le DEP s’applique seulement à la pile par défaut. Cela se fait par le Panneau de configuration/Performance et maintenance/Ajuster les effets visuels (ça ne se devine pas !). En mode Kernel. la configuration du DEP s’effectue à partir de quatre commutateurs placés dans le fichier boot. Ensuite. lister les applications qui échapperont au DEP. il faut que le processeur tourne en mode PAE (Physical Adress Extension). Son but est simplement d’empêcher l’exécution de code lorsque celui-ci semble malveillant. il y a les compilateurs juste à temps et certains pilotes de périphériques. Cela se fait en plaçant des marques sur les pages de mémoire virtuelle en modifiant un bit de la PTE (Page Table Entry).ini. il faut vérifier auprès des fondeurs. Ce nouveau couple NX/DEP ne représente pas l’arme absolue. La technologie NX ou Execute Disable Bit est censée empêcher que du code malveillant ne s’exécute en profitant d’un " buffer overflow ". c'est-à-dire dans le cœur même du processeur. soit envoyer un message de violation d’accès à l’intention de l’utilisateur. Une granulation fine au niveau de la page mémoire Pour cela. mais il devrait tout de même empêcher un grand nombre d’infections virales de se produire. l’utilisateur peut basculer du mode OptIn au Mode OptOut avec les bouton radio et dans ce dernier mode. une nouvelle technologie nommée DEP (Data Execution Prevention) a été mise au point il y a environ deux ans. Cette partie matérielle se nomme NX pour No execute chez AMD et Transmeta et Execute Disable Bit chez Intel. le processeur stoppe aussitôt son exécution et génère une exception. tous les processeurs ne disposent pas encore de cette fonction. des boutons radios permettent de sélectionner les modes OptIn ou OptOut et d’établir la liste des applications qui ne seront pas soumises au DEP. et sous Windows XP SP2. si une application tente d’exécuter du code dans la page ainsi taguée. des zones mémoires dans lesquelles le code peut s’exécuter et des zones normalement utilisées pour des données dans lesquelles il ne le peut pas. Parmi celles-ci. l’exception sera " unhandheld " et le résultat sera simplement un arrêt du processus. Cette technologie s’appuie sur deux parties. il suffira de donner une permission explicite d’exécution au code qui a été généré. Il est possible pour des raisons de compatibilité. on définit d’abord pour chaque processus. Il peut soit simplement l’inscrire dans un fichier de log. mais elle est préférable à une infection virale puisqu’elle causera probablement moins de dégâts. Le développeur qui désire implémenter cette fonction pourra déterminer si le processeur en est capable en lisant simplement son CPUID. ou pas dans le processeur. Il s’agit essentiellement de celles qui génèrent du code de manière dynamique. Par le Panneau de configuration.

................................................................................. Adresse : ...................................................Le magazine qui parle votre langage 3 Numéros GRATUITS ...... Tunisie : 55........ s Je joins mon règlement par chèque à l’ordre de Programmez ! s Je souhaite régler à réception de facture ✁ A remplir et retourner sous enveloppe affranchie à : Programmez ! ......... E-mail : ..........45 45 € Ne manquez plus aucun numéro............................................84 € ...................... je m’abonne ! ou abonnement en ligne : www...............95 € .........com s ABONNEMENT 1 an (11 numéros) au prix de 45 € TTC..................................... vous pouvez être amené à recevoir des propositions d'autres sociétés ou associations.............................. s Mme s Mlle Entreprise : ....................Service Abonnements .............. valable jusqu’au 30 juin 2006 Le renvoi du présent bulletin implique pour le souscripteur l'acceptation pleine et entière de toutes les conditions de vente de cette offre.................. s M................... il vous suffit de nous écrire en nous précisant toutes vos coordonnées........Tom : 79................. Par notre intermédiaire.......com LE MAGAZINE DU DÉVELOPPEMENT PROG 87 ............... Tarif France métropolitaine.............................programmez........... Code postal : Tél : Ville : ...................31% En ligne www..............................................................com Un an de veille technologique et d’information permanente....................................................................75010 Paris... ........... vous disposez d'un droit d'accès et de rectification aux données vous concernant............. s OFFRE ÉTUDIANT 1 an (11 numéros) au prix de 39 € TTC.. Maroc.................Dom : 62.................programmez@groupe-gli...... Si vous ne le souhaitez pas... en bénéficiant de d’ ÉCONOMIE (Prix pour la France Métropolitaine) 20 € ......... abonnements..................................................................Autres : nous consulter Offre limitée à la France métropolitaine....Algérie.......Canada : 64...............22 rue René Boulanger ....... Photocopie de la carte d’étudiant obligatoire Tarifs hors France métropolitaine : CEE et Suisse : 51................. Conformément à la loi Informatique et Libertés du 05/01/78....................... (Prix pour la France Métropolitaine) OFFRES SPÉCIALES : • ÉTUDIANTS : 39€ joignez à votre abonnement la photocopie de votre carte d’étudiant (abonnement par voie postale) • ÉQUIPES : à partir de 3 abonnements dans la même société : abonnement en ligne obligatoire OUI........................................ Fonction : ...programmez..................... Prénom :........................ .................83 € .61 € .................. Offre limitée.......... prix de vente au numéro............................................... Nom : ..... abonnez-vous aujourd’hui ! seulement ! Au lieu de 65 €............33 € ..................

Pour fonctionner. Programmez n°87 62 juin 2006 . imaginons un workflow de validation de création de compte utilisateur dans lequel un site web comporte une inscription en ligne. le développement de celles-ci étant globalement similaire au développement de composants . . que vous allez devoir activer. Visual Studio 2005 propose plusieurs templates de base : . Un exemple de création de workflow Pour illustrer notre propos. service. une DLL qui contiendra des workflows qui pourront être exécutés/hébergés par une application tierce (application Windows. Par exemple. Cette activation peut se faire. vous allez devoir guider le moteur de workflow pour qu’il s’adapte à votre mode de fonctionnement. Windows Communication Foundation (WCF) et WinFS (le futur système de stockage qui tarde à apparaître. ndlr). Contrairement à un produit comme Biztalk Server. un e-mail de notification est ré-envoyé et le compte est supprimé. ces services suivent un modèle de développement extensible.NET : héritage d’une classe de base. et lorsqu’elle clique sur celui-ci. soit de manière impérative dans le code de votre workflow. il sera partie intégrante de votre application. son compte est validé. celle-ci a besoin d’un service dit de " tracking ".0. Lors de l’enregistrement d’une personne. application Web. en plus de la gestion de suivi. Si au bout de 5 jours. un service Windows. A la différence des solutions déjà existantes sur le marché. mais sera disponible lors de la sortie d’Office 2007 prévue pour la fin de cette année (disponibilité non encore confirmée. Workflow Foundation se présente comme une brique applicative venant se greffer directement au cœur de vos applications. Définition de workflow Pour pouvoir modéliser un workflow avec Visual Studio 2005.Installer les extensions de Visual Studio 2005 pour Windows Workflow Foundation. indows Workflow Foundation (WF) fait partie intégrante de WinFX. on retrouve un service de persistance qui permet d’assurer la reprise des workflows en cas d’incident directement à un état préalablement enregistré. vous allez pouvoir écrire. mais ce modèle étant complètement extensible. W Services additionnels au moteur de Workflow WF s’exécutant dans vos applications. elle n’a pas cliqué sur le lien. l’enchaînement des opérations n’est pas déterministe. une licence Go-live permet l’utilisation immédiate de WF et de WCF en environnement de production.). ndlr). le workflow ne dépend pas d’un produit ou d’un serveur pour fonctionner. Pour ce faire. Dans un automate à états finis. un service de gestion de tracking en base SQL est fourni. et surcharge de méthodes. en version Bêta. de workflow ou de méthodes externes.NET 2. timer. et garantit que Microsoft n’apportera plus de gros changements dans les mois qui viennent. que ce soit une application console. appel de services Web. ces étapes sont représentées par des composants appelés " activités ". Plusieurs modèles de workflow Workflow Foundation propose deux types de workflows : procédural ou événementiel. deux pré requis sont nécessaires : . Pour rappel. Microsoft mettra à la disposition des développeurs Windows Workflow Foundation. boucles et condition. Les workflows événementiels sont des automates à états finis. WinFX est. plus utiles lors d’interactions humaines (comme le suivi d’une commande). dans lesquels vous allez décrire votre processus par un enchaînement prédéfini (une logique de navigation de pages Web. le workflow est composé de l’ensemble des états possibles ainsi que des règles de transition d’un état à l’autre.Avoir WinFX installé sur le poste de développement. un workflow est un ensemble d’actions ou étapes s’exécutant dans un ordre prédéfini. La nécessité de modéliser un workflow est tout à fait adaptée à ce genre de cas. pour assurer un suivi complet du cheminement d’exécution de vos workflows. Microsoft fournit juste le " bas niveau " et non un environnement complet. une solution gratuite pour faciliter l’intégration de workflows dans leurs applications . au même titre que Windows Presentation Foundation (WPF). De manière similaire aux providers d’ASP. une API est présente dans le SDK. à l’heure actuelle. Dans Workflow Foundation.T echnologie Windows Workflow Foundation : une machine à flux D’ici la fin de l’année. Microsoft en fournit par défaut plus d’une trentaine : exécution de code. gestion de transactions et d’erreurs… Vous pouvez très facilement compléter cette liste avec vos propres activités. une suite d’exécution d’applications externes…). Ces actions peuvent s’enchaîner en fonction de conditions.. Cependant.. et un service de communication utilisé pour permettre à l’application hôte de pouvoir échanger des informations avec vos workflows. Un workflow WF s’exécute donc dans votre application. utiliser et faire évoluer dans le temps vos propres services sans impact direct sur le fonctionnement de votre workflow.NET.Sequential Workflow Library. soit de manière déclarative dans un fichier de configuration. d’interactions avec des processus informatiques ou en fonction d’interactions humaines. De base. celle-ci reçoit un Email de validation contenant un lien. vous pouvez remplacer ou ajouter des services techniques dans le moteur de workflow. Les premiers sont dits séquentiels ou de flux. Parmi les services les plus utiles. ou une application web.

pour modéliser des workflows en tant qu’ automates à états hébergés dans une application console. en utilisant Windows Communication Foundation Dans notre cas.Empty Workflow Project. nous aurons dix instances de workflow en parallèle en mémoire. le workflow est défini uniquement par code et représenté par une classe éclatée dans deux fichiers. Dans chaque étape. string email). le compte utilisateur doit être validé dans un certain intervalle de temps. soit de manière mixte déclarative (XOML) / impérative (C#/VB). .soit en utilisant des services Web (et dans ce cas en utilisant IIS pour héberger le workflow). par la méthode "DemandeCréation"). nous allons utiliser les services Web qui permettent une interaction facile et une communication simplifiée avec tout type d’application. . Chaque étape étant constituée d’un enchaînement d’activités. dès le début. pour définir vos propres composants.State Machine Console Application. } } Notre contrat de communication étant défini. un pour le designer et un pour le code utilisateur (comme pour une application winforms). sachant que pour passer de l’étape " compte créé " à l’étape " fin ". les différents états étant : " demande de création de compte " >> " compte créé " >> " fin ". Chaque activité EventDriven est un mini workflow séquentiel. pendant et après leur exécution. pour permettre le passage d’une étape à une autre.Sequential Workflow Console Application. bool DemandeValidation(string instance). va récupérer le nom et l’Email du demandeur puis les stocker dans des variables de l’instance. Deux méthodes sont courantes : . Dans notre cas. nous allons obtenir la séquence suivante : • Une activité représentant le service web qui écoute (la signature de celui-ci étant définie dans l’interface précédent. Si dix utilisateurs demandent chacun l’exécution de cette activité. définir les méthodes utilisées par notre workflow : namespace WorkflowLibrary1 { public interface ICommunication { Guid DemandeCreation(string nom. soit uniquement de façon impérative. Dans notre cas. . nous allons donc rajouter des activités de type "EventDriven" afin de créer / réveiller nos instances de workflow en fonction d’un évènement précis. il est nécessaire de détailler les actions à entreprendre avant. dans notre cas.State Machine Workflow Library. le fait que le service Web soit appelé par une application. Programmez n°87 63 juin 2006 . en mode design.soit en définissant un service d’échange de données représenté par une classe de données et des gestionnaires d’évènements. au préalable.NET qui créera le compte. l’automate à états semble le plus adapté. un projet vierge permettant de réaliser vos projets selon vos besoins.Soit à terme. commençant par une activité d’écoute et se terminant par une activité de changement d’état. de la boîte à outils vers le designer. Une fois le modèle d’automate à états sélectionné. Visual Studio ouvre un designer permettant de déposer les différentes activités dans le but de définir le cycle d’exécution de notre workflow. . . sous peine d’être supprimé. de définir la méthode de communication entre le workflow et l’application utilisatrice en définissant un contrat. également appelés " handlers " . Il est à noter qu’un workflow peut être décrit de plusieurs façons : soit de manière uniquement déclarative dans un fichier XOML. de glisser/déposer les différentes activités représentant notre workflow.Workflow Activity Library. ces workflows pouvant être persistés dans une base de données et déchargés de la mémoire. par exemple. qui permet de créer une application console qui vous permettra de créer vos workflows et de les héberger. Par exemple. via le service de persistance que nous avons abordé précédemment. Il nous faut. Il est donc nécessaire. s’ils sont inactifs durant un temps trop important (ceci.T echnologie . mais pour des automates à états. Notre première activité va permettre de démarrer une instance de workflow. identique à la version séquentielle. dans le but de préserver les ressources mémoire de votre serveur). • Une activité de code qui va donc exécuter une méthode . La première étape est donc. il ne reste plus qu’à l’intégrer dans notre automate à états. c'est-à-dire d’initialiser un cycle d’exécution. dans notre EventDriven de demande de création de compte.

de type "SqlWorkflowPersistenceService" utilisant une base SQLExpress locale. Windows SharePoint Services v3 et Office SharePoint Server 2007. Version=3. A ce niveau.workflow-foundation. Attention toutefois. et la DLL de cette dernière compilée. Ressources Site officiel.config) et créer les différents services web utilisés par notre workflow. et un deuxième appel pour valider la création.0. Etant donné que nous utilisons des services web pour communiquer. persistant à chaque fois que le workflow devient inactif (UnloadOnIdle) et se mettant à jour toutes les secondes. Microsoft l’utilisera d’ailleurs dans Office System 2007 et notamment. il est nécessaire de prévoir un système de persistance afin de gérer le chargement / déchargement de nos instances dans une base de données ou un fichier. la préconfigurer (web. il devient évident d’utiliser une application web pour héberger notre workflow. • Et une activité de changement d’état. au niveau du fichier de configuration " Web.] </configSections> <WorkflowRuntime Name="WorkflowServiceContainer"> <Services> <add type="System.Workflow. SQLExpress ou SQLServer 2000/2005 en exécutant les scripts de création de schéma fournis et présents dans le répertoire " C:\Windows\WinFX\3.Runtime.0\Windows Workflow Foundation\SQL\EN ". Notre workflow peut ainsi être testé directement depuis un navigateur web en appelant les services web : un premier appel pour créer une instance de workflow en spécifiant un nom et un prénom.Inte grated Security=True. PublicKeyToken=31bf3856ad364e35" connectionString="Data Source =. un service de persistance pour SQL Server est fourni. Visual Studio 2005 est d’ailleurs capable de créer automatiquement cette application web. Conclusion Windows Workflow Foundation offre donc un modèle de développement de workflows applicatifs.Runtime. afin d’obtenir le schéma d’exécution global du workflow. pour une base SQLExpress. une application web ayant une durée de vie limitée. en Français: http://www. en anglais: www.User Instance=True" UnloadOnIdle="True" LoadIntervalSeconds="1"/> </Services> </WorkflowRuntime> […. en faisant un clic droit sur la DLL contenant le workflow. Par exemple.SqlWorkflowPersistence Service.com Florent SANTIN et Stéphane CORDONNIER Programmez n°87 64 juin 2006 . Nos instances de workflow étant chargées en mémoire de la dite application. Si vous ne possédez pas SQLExpress ou SQL Server.AttachDbFilename=|DataDirectory|\Database. Celle-ci va créer automatiquement l’application web. ou bien sur le système de fichiers du serveur. il ne reste donc plus qu’à l’activer.Workflow.mdf. toujours en fonction de sa signature (ici on retourne l’identifiant unique " guid " représentant l’instance en cours). hébergé et fourni des services web consommables par tout type d’application. et en sélectionnant l’option " Publish as Web Service ". . Cette activation se déroule en deux étapes : . afin de passer à l’étape suivante. le paramétrage sera le suivant : <configuration> <configSections> [….T echnologie • Une activité représentant la réponse du service web. Il ne resterait plus maintenant qu’à écrire l’application qui appellerait notre service Web. il est possible de créer votre propre service de persistance qui irait écrire l’état des workflows dans une base de données Oracle ou MySql. il nous reste à publier et héberger celle-ci.\SQLEXPRESS. ainsi que dans les prochaines versions de Biztalk Server. Par défaut. rapide à mettre en œuvre et surtout totalement extensible par le développement de vos propres activités ou de vos propres services.0.net Site communautaire. System.Paramétrer l’application web pour activer la persistance.00000. Culture=neutral.Hosting. pour activer notre workflow depuis n’importe où dans le monde. Une fois la modélisation de l’automate à états terminée.Préparer une base de données. notre workflow est défini. elle peut s’arrêter en cas de non utilisation suivant le paramétrage qui aura été effectué sur le serveur Web. Toutes les étapes d’un automate à états vont ainsi pouvoir être détaillées avec des traitements plus ou moins complexes.windowsworkflow.config ".] </configuration> Nous nous contenterons ici d’activer un service.

Mac OS X et SunOS. Le serveur est maintenant prêt à être lancé. quant à lui.0/download. rendez-vous dans le répertoire " bin " et exécutez la commande : asadmin start-domain domain1 A la fin de la commande. à son écoute. Ce projet s’inscrit dans la politique de Sun : être proche du client. Linux.apache.dev. Par contre.net/nonav/javaee5/api/s1as-javadocs/index.sun. Une " javadoc " pour le projet est disponible à l’adresse : https://glassfish. Ce n’est pas le seul serveur d’application open source. Pour vérifier que le serveur fonctionne bien. prêt à réagir pour tenir compte de ses remarques et être toujours en accord avec ses besoins. JSP 2. celles-ci ne sont pas encore entièrement finalisées et il y a des risques que les applications créées actuellement pour Java EE 5 ne fonctionnent plus si les spécifications viennent à être modifiées. venant dès la découverte d’un bug ou.com/j2se/1. en soumettant directement un patch. à partir de l’adresse suivante : https://glassfish. d’améliorer les spécifications de Java EE 5 avant leur finalisation. GlassFish en pratique Installation et lancement Attention : il est nécessaire de disposer de J2SE 5 pour pouvoir installer et exécuter GlassFish. ce qui permet d’élargir au maximum le champ de testeurs. La suite de cet article est basée sur la version " GlassFish Project Milestone 5 .html Une fois le fichier jar téléchargé. Additional services are being started in the background.5. le message " Domain domain1 is ready to receive client requests.html). Ainsi. La version actuelle destinée à J2EE 1. mais c’est un des seuls à avoir très vite permis de tester les nouveautés de Java EE 5. un programme qui permet de compiler le projet.jar Support pour Java EE 5 Java EE 5 est une étape majeure pour l’édition entreprise de Java. Il s’agit d’une étape majeure dans le développement de GlassFish : c’est une version qui a été testée.sun. On notera plus particulièrement l’arrivée très attendue d’EJB 3 qui va permettre de simplifier l’utilisation d’EJB.com/cddl/CDDL_why_details.net.org/). encore mieux. Il permet déjà de tester toutes les nouveautés de Java EE 5 en avant-première.4 contient plus de 5 000 tests et il est prévu d’en avoir plus encore pour Java EE 5. une architecture permettant de prendre en charge la persistance des données en objet-relationnel.1 et les Servlet 2.P ratique j2ee Niveau facile avancé expert GlassFish G Serveur d’applications Java EE 5 Le projet GlassFish a été lancé en juin 2005 par Sun dans le but de créer un serveur d’application Open Source qui soit développé par la communauté. jusque-là très complexe. Toute une série de tests sera disponible prochainement : la Java EE 5 Compatibility Test Suite (CTS).net/public/downloadsindex. Bien sûr. cd glassfish ant -f setup.5. c’est elle qui va permettre de vérifier que le code du serveur est conforme aux spécifications et qu’il n’y a aucun bug. Ceci permet à la fois de construire une application sur une base solide mais aussi de pouvoir faire évoluer ce code. Cette ouverture de code se faisant sous licence CDDL (http://www. GlassFish supporte déjà les spécifications : JSF 1.xml Ouverture du code Sun poursuit sa politique d’ouverture du code en permettant à la communauté de reprendre le code source de son serveur d’application : Sun Java System Application Server Platform Edition 9.2.b32g " qui peut être téléchargé à l’adresse suivante : https://glassfish.dev. puis de le distribuer ou de l’utiliser en production. rendez-vous à l’adresse : http://localhost:8080/ Programmez n°87 65 juin 2006 .java. Pour cela. exécutez la commande : java -Xmx256m -jar filename. elle permet de voir. Cela permet de tester. à l’inverse d’une " nightly build " qui vient d’être compilée et dont la stabilité n’a pas été vérifiée. Ce répertoire contient le code source de GlassFish ainsi qu’Ant (http://ant.java. Cette suite de tests est très importante.net/downloads/12Feb06. " doit apparaître.jsp Le téléchargement de GlassFish se fait. lassFish est avant tout un serveur d’application open source prenant en charge toutes les spécifications Java EE 5.java. GlassFish figure parmi les nombreux projets open source hébergés sur java.html Cela va créer un nouveau répertoire nommé " glassfish ". " fermé " jusqu’alors. dans le cas où il y a redistribution du code après modification. il faut s’assurer que le serveur passe encore tous les tests de compatibilité. GlassFish est disponible pour les plates-formes Windows. Cette version de Java se télécharge à l’adresse suivante : http://java.dev. choisissez une " Milestone builds ". La possibilité d’avoir une implémentation de Java EE 5 est le meilleur moyen d’avoir un retour des utilisateurs. tout le monde peut apporter sa contribution en pré- A la fin de l’exécution d’Ant il doit y avoir un message : " BUILD SUCCESSFUL ". Toutes les entreprises qui souhaitent migrer vers cette nouvelle spécification ont ainsi l’occasion de pouvoir commencer toute une série de tests afin de faciliter la future évolution de leurs applications. Oracle contribue également à l’effort en fournissant le code de TopLink. A l’heure actuelle. d’utiliser et de modifier le code de GlassFish.html Pour avoir une version stable.

La documentation de Glassfish renvoie d’ailleurs vers celle de Sun. Pour le champ " Server ". Nous allons créer un EJB Session.P ratique j2ee Niveau facile avancé expert Vous devriez voir apparaître la fenêtre : Dans la fenêtre qui apparaît. il suffit de renseigner le répertoire dans lequel est installé GlassFish. Configuration et déploiement La configuration du serveur se fait via une interface Web accessible à l’adresse http://localhost:4848 Par défaut. faites un clic droit sur le module EJB puis " New > Session Bean… ". le compte admin du domaine est : Login : admin Pass : adminadmin Cette application d’administration rappelle celle de Sun Application Server. ajoutez un nouveau serveur en cliquant sur " Add Server ".labosun ". A partir de là. nous allons créer un nouveau projet. mais elle peut être installée. la dernière fenêtre vous demande le login et le pass admin de l’administrateur du domaine. Dans NetBeans. Le bean se nommera "HelloBean". Voici le code des 2 fichiers Java : HelloWorldRemote. Pour cela. Si vous souhaitez changer le mot de passe administrateur ou créer d’autres comptes. Enfin. Puis.java package com. telles que : • Voir les logs. Programmez n°87 66 juin 2006 . • Déployer un ear/war. EJB Session Tout ce qui est configuration du serveur se passe exactement comme pour le serveur " Sun Java System Application Server Platform Edition 9". ou de créer de nouveaux utilisateurs. il est possible de préciser quel fichier ear vous souhaitez déployer. il suffit de se rendre dans la partie "Application Server" (sur la gauche) puis de cliquer sur " Enterprise Application ". Projet – HelloWorld Maintenant que GlassFish est configuré. Puis dans le champ " Server ". À partir de cette page. rendez-vous dans la partie " Application Server " et cliquez sur " Password ". • Créer un connecteur JDBC.java package com. il est possible de modifier le mot de passe du compte actuel. } Configuration Nous allons voir comment configurer Netbeans pour utiliser GlassFish et comment créer une application J2EE 5 sous NetBeans. Pour déployer une application.5 permet d’utiliser un serveur d’application Java EE 5 et plus précisément GlassFish. Pour cela. Cette version de Netbeans n’est pas encore finalisée. La page principale permet d’accéder aux tâches les plus courantes.labosun.labosun. il sera de type " Remote " uniquement et doit se trouver dans le package " com. Pour la version de J2EE il faut choisir " Java EE 5 ". choisissez " Sun Java System Application Server ". sélectionnez le menu " File > New Project " et choisissez " Enterprise > Enterprise Application ". public interface HelloWorldRemote { public String sayHello(). sélectionnez le menu " Tools > Server Manager ". HelloWorldBean. sélectionnez le serveur GlassFish que nous avons configuré précédemment. NetBeans Netbeans 5.

Nous allons utiliser JSF (Java Server Faces) pour créer une page Web capable d’utiliser notre Session Bean. se veut prometteuse et proche de la communauté. faites un clic-droit sur le module Web puis " Properties ". Oracle AS (www.ejb. charset=UTF-8"> <title>JSP Page</title> </head> <body> <f:view> <h1><h:outputText value="Java Server Faces" /></h1> <h:outputText value="#{HelloBean.beans ".ejb.com) … Site officiel du projet : https://glassfish. il vous suffit de cliquer sur le lien " Java Server Faces Welcome Page " qui va vous amener sur le page " welcomeJSF ". Pour cela. choisissez " Java Server Faces ". il ne nous reste plus qu’à modifier la page " welcomeJSF " pour utiliser ce bean. Allez dans le menu " Run > Run Main Project " pour exécuter le projet. Il faut configurer le projet pour qu’il utilise JSF.labosun.01 Transitional//EN" "http://www. } Une fois que le bean est créé.beans. Pour cela. public HelloBean() { } Nous avons mis en place un environnement de développement vous permettant de vous initier à Java EE 5. choisissez ensuite " Web > JSF Managed Bean ". HelloBean.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.labosun.sayHello().jboss. Cette nouvelle spécification. Cela va automatiquement ouvrir votre navigateur par défaut sur la page " index. telle que vous devriez l’avoir : <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.com). D’autres compagnies Open-Source et propriétaires travaillent déjà sur Java EE 5 : JBoss AS (www. Nous allons maintenant créer un JavaBean pour interagir avec le Session Bean.java. Dans le module Web. À partir de celle-ci.hello}"/> </f:view> </body> </html> Lancement de l’application Le projet est maintenant prêt à être lancé.labo-sun.net s Olivier SMEDILE et Cyril JOUI du Laboratoire SUPINFO des technologies SUN (www. ajoutez-y la ligne : <h :outputText value="#{HelloBean. Nous allons nommer notre bean " HelloBean ". Web Module Pour que la partie Web utilise notre module EJB.dev.labosun. faites clic-droit sur le répertoire "Libraries". Pour cela.EJB.P ratique j2ee Niveau facile avancé expert import javax.sun. nous allons ajouter un champ de type "HelloWorldRemote" qui va automatiquement être instancié en tant que Session Bean grâce à l’annotation " @EJB() " (principe d’injection). public class HelloBean { @EJB() HelloWorldRemote hello.HelloWorldRemote. Cela va automatiquement créer le fichier " faces-config. L’engouement pour Java EE 5 est une réalité.oracle.bea. il est nécessaire d’ajouter le module EJB en tant que librairie du module Web.sun. import javax. @Stateless() public class HelloWorldBean implements com. Il faut ensuite sélectionner le module EJB du projet.HelloWorldRemote { } public String sayHello() { return "Hello World". Pour que ce JavaBean utilise notre Session Bean.com).hello}" /> Remarquez l’utilisation de l’annotation " @Stateless() " qui permet de préciser le type du bean (ici.w3.java package com.com) Programmez n°87 67 juin 2006 . Cliquez sur "Frameworks" puis " Add ". tout juste officiellement disponible. que nous placerons dans le package " com. puis "Add Library".jsp).*. } } public String getHello() { return hello.org/TR/html4/loose. Weblogic (www. un Session Bean Stateless).labosun.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html.jsp ".jsf ". Voici la page JSF (welcomeJSF. La valeur affectée à ce composant est le résultat de l’appel à la méthode hello() de l’EJB précédemment injecté dans le Managed Bean. Cette ligne insert un composant graphique (type Label) dans la page JSF. Conclusion import com.com/jsf/html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.xml " qui sert à configurer JSF et une page JSF nommée " WelcomeJSF. faites clic-droit sur le module Web puis " New > File/Folder ".

la classe du bean. Une telle classe obéit à une convention de nommage et pour notre exemple. par exemple. même si la nouvelle JTable se voit enrichie de fonctionnalités de tri inspirées de la JXTable de Swingx. Nous nous intéressons aujourd'hui à Swingx qui est un projet de développement de composants évolués basés sur les composants Swing. comme le sont aussi les composants Swing. Des images Gif ou Png feront l'affaire. Tout être prêt. Passez éventuellement une petite boîte de dialogue d'information pour arriver à la boîte de dialogue de configuration CVS proprement dite. vous devez configurer votre utilitaire CVS. Vous obtenez alors une archive Jar contenant tous les composants Swingx. supposons-la nommée LeBean. Il a été un temps question que ces nouveaux composants soient intégrés à Java Mustang.BeanInfo. Enfin. ce qui sous Netbeans se fait ainsi: Allez dans le menu Versioning|CVS.1. Or les outils de conception visuels manipulent des JavaBeans sans se soucier de leur origine. etc. car un composant Swingx est avant tout un JavaBean. Déposez ces icônes dans un répertoire baptisé par exemple 'ressources' et créé à la racine des sources de Swingx. Créez d'abord un projet de type Application Java qui vous servira à faire vos essais. Certaines Programmez n°87 68 juin 2006 . peut être accompagnée par une classe dérivant de SimpleBeanInfo et proposant une implémentation par défaut de l'interface BeanInfo. JXCollapsiblePane qui est un panneau escamotable. Finalement ? il semble que ce ne sera pas le cas. Soit.) Un bean peut encore implémenter l'interface java. Netbeans 5 sera disponible. Cette opération de compilation est naturelle car le projet Swingx est lui même écrit sous Netbeans.dev. Renseignez les champs ainsi : 1 Télécharger et compiler le projet Swingx Intégrer les composants Swingx à la palette Nom du champ Working Directory CVS Server Type CVS Server Name Port User Name Repository Path Use Built-In CVS Client Password Module(s) Information un-repertoire-de-votre-disque pserver cvs. elle devrait être baptisée LeBeanBeanInfo. localisée sous le projet Swingx comme nous l'avons dit. car c'est à partir de l'interface/classe BeanInfo qu'est obtenue l'icône qui servira de symbole au composant dans la palette de composants. par exemple. Certaines sont déjà accompagnées d'une classe de type BeanInfo. La réflexion seule. Vous devez commencer par créer un login (opération gratuite qui n'engage à rien) sur le site Java. Installez ANT sur votre machine (http://ant. mais nous allons d'abord faire mieux.beans. etc-etc/swingx/src/java/ressources Cliquez enfin sur le bouton Ok et patientez pendant que tout le projet est transféré sur votre disque dur. ouvrez le projet (Open Project) swingx que vous trouverez sous le répertoire précédemment donné à 'Working Directory'. c'est-à-dire des classes écrites en respectant des règles déterminées. Compilez le projet. vous vous devez d'aller visiter le site Java. Vous trouverez cette Rouvrons maintenant le projet Swingx et examinons ses classes. A ce stade. Nous allons montrer comment procéder sous Netbeans 4.org/) et compilez la cible projet du fichier build-impl. si vous utilisez un outil totalement différent comme JBuilder. allez dans les propriétés du projet.Net (http://www.net 2401 Votre nom de login Java. puis choisissez 'Check Out'. ne suffit pas.Net /cvs Coché Votre mot de passe de login Java. hormis peut être quelques points de détails.java. 2 3 Créer un projet utilisant Swingx Le projet est accessible en CVS. Après cela.java. ou du moins pas complètement. mentionnée plus haut. Enrichissez vos interfaces Java avec archive sous le répertoire dist du projet.xml. Ensuite.apache.P ratique java Niveau facile avancé expert Swingx sous Netbeans i vous êtes à la fois partisans de Java et de l'Open Source. afin de renseigner explicitement sur ses caractéristiques. Au moment où vous lirez ces lignes. Vous y trouverez une quantité innombrable de projets très intéressants. puis allez pointer l'archive Jar de Swingx. S Une seule condition est requise pour utiliser les composants Swingx : les classes doivent être pointées par le CLASSPATH. les composants Swingx sont des JavaBeans avant toute chose. Tout comme les composants Swing. Apprenons à faire de la conception visuelle sous Netbeans avec ces composants.Net. il ne devrait pas vous être difficile d'adapter les indications fournies. Cette dernière possibilité est utilisée par tous les outils comportant un concepteur visuel tels Netbeans ou JBuilder.net). Ce que nous disons dans cet article restera valable.Net Cliquer ensuite sur le bouton 'Login' Coché Donner swingx dans le champ de saisie en face. Ensuite. Si vous n'utilisez pas Netbeans. cela reste facile car les projets sont basés sur ANT. Dernière possibilité. comme il est d'usage sous Netbeans. La première chose à faire est de fournir des icônes couleur en format 16x16 et 32x32. c'est un jeu d'enfant d'utiliser ces composants de la même manière que les composants Swing. Swingx est un projet Open Source de composants de haut niveau basés sur Swing. Nous pourrions commencer à écrire du code. puis sélectionnez 'Libraries'. cliquez sur le bouton 'Add JAR/Folder'. indexées. Les outils qui manipulent les beans s'appuient sur ces règles et sur la réflexion de Java pour analyser les composants (propriétés contraintes. Nous devons donc traiter ce point pour bien intégrer les composants dans la palette. Quoi qu'il en soit.

setAction( jXCollapsiblePane1.CENTER). créez éventuellement une catégorie de composants Swingx.awt. afin que le ou les fichiers images soient intégrés au Jar. // Important! } private void initComponents() { jXCollapsiblePane1 = new org. setDefaultCloseOperation( javax. Un nouveau dialogue énumère tous les composants possibles.setFont( new java. Traitons d'abord ce cas.EXIT_ON_CLOSE). jLabel1. s Frédéric Mazué . Vous pouvez alors voir qu'une classe DatePickerBeanInfo a été intégrée au projet Swingx. Dans le JXCollapsiblePane ajoutez les composants Swing ou Swingx que vous voulez.getContentPane().com Programmez n°87 69 juin 2006 .JButton(). Cliquez sur la racine de l'arborescence comme illustré ci-dessous puis.Color(51.awt. Netbeans va générer un code semblable à celui-là : 4 Un panneau escamotable Dans le constructeur.CENTER). Netbeans analyse la structure du Bean par réflexion et vous donne le résultat dans une boîte de dialogue.swing. } if (type == BeanInfo.SwingConstants. JXDatePicker qui est un calendrier visuel.png"). get(JXCollapsiblePane.WindowConstants. Cliquez sur OK. dans la fenêtre du projet.ICON_COLOR_32x32) { return loadImage("/ressources/monicone32. ajoutez ceci : jButton1. 48)). Sélectionnez ceux que vous voulez. } Dans tous les cas. getContentPane(). java. vous modifierez la méthode getIcon que vous y trouverez ou. jLabel1. pack().setText("Programmez!").BorderLayout.add( jLabel1.BorderLayout. dans un JFrame. c'est terminé. setLayout(new java.add( jButton1. Voici une méthode minimum renvoyant une icône 16*16: public Image getIcon(int type) { if (type == BeanInfo.png"). Que faire si la classe BeanInfo existe déjà comme c'est le cas pour JXCollapsiblePane ? Dans ce cas.fmazue@programmez. 0. java.NORTH).awt. Allez pointer sur le Jar de Swingx. } return null.getActionMap().Font("Times New Roman". jButton1.setHorizontalAlignment( javax. à défaut. que vous pouvez transformer si vous voulez en JXFrame depuis le code.JLabel(). depuis le panneau de droite.JXCollapsiblePane().setForeground( new java. par exemple.awt.swing. sous l'appel à initComponents. faites pointer les propriétés corres- pondantes aux icônes sur vos images.getContentPane().TOGGLE_ACTION)). La localisation nord est importante. même ceux sans BeanInfo qui n'auront alors pas d'icône si vous les choisissez. jXCollapsiblePane1. jLabel1. 255)).java jusqu'à arriver à 'Bean Patterns'. java.setLabel("jButton1"). jLabel1.swing. vous créerez la méthode de toute pièce. Pour essayer.BorderLayout()). Pour cela. Et essayez :-) Dans des articles à venir nous étudierons le maniement de composants Swingx plus complexes.awt. jLabel1 = new javax. Allez dans 'Tools|Palette manager' Ensuite.awt.swing. vous devez recompiler le projet Swingx entièrement et non pas seulement les classes BeanInfo. déposez un bouton au sud d'un BorderLayout et un JXCollapsiblePane au nord. les composants sont intégrés à la palette.ICON_COLOR_16x16) { return loadImage("/ressources/monicone16. getContentPane(). Cliquez alors dessus avec le bouton droit de la souris et sélectionnez 'BeanInfo Editor'. puis cliquez sur 'Add From Jar'.SOUTH). 51.add( jXCollapsiblePane1. ouvrez l'arborescence de JXDatePicker.BorderLayout. jXCollapsiblePane1. Nous allons simplement demander à Netbeans de générer pour nous la classe de type BeanInfo. Il ne reste plus qu'à intégrer les composants que vous voulez à la palette. C'est terminé. jButton1 = new javax.jdesktop.swingx.P ratique java Niveau facile avancé expert ne sont pas accompagnées.

D'abord.Net.Net.h" using namespace System. alias C++/CLI. char* argv[]) { cout << "Hello World Standard" << endl. désormais complètement standardisé par l'ECMA. et point crucial pour un développeur C++. Ce code a un look . ce qui est extrêmement séduisant. voyons comment se passe la gestion de la mémoire. Que se passe-t-il si nous le réécrivons à l'ancienne ? #include "stdafx.Runtime. C Dans l'en-tête stdafx. Nous comprenons que si nous gardons le source C++. } 1 Pour se faire la main Nous voyons qu'il est possible d'appeler une API Win32 avec C++/CLI.P ratique C++ Niveau facile avancé expert Sur le CD ROM Introduction à C++ . } Lorsque Visual Studio génère une application console C++/CLI nous avons ceci : #include "stdafx. cout << argv[1] << " " << argv[2] << endl. } private: 2 Destruction déterministe Programmez n°87 70 juin 2006 . Cet en-tête est le lieu approprié pour accueillir l'inclusion de tous les en-têtes "natifs". A nouveau System. int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"). exactement comme on le ferait pour une application native pure. nous nous intéressons à C++/CLI qui présente des points forts étonnants.Net ensée accueillir divers langages. Heureusement. exactement comme nous l'aurions fait en C++. Par ailleurs.h.h est vide. Si vous avez la curiosité de désassembler l'exécutable avec ildasm. return 0. En effet. MB_OK). par sa nature. A priori il est donc bien possible de reprendre du C++ existant sans en changer une ligne. le code compile et s'exécute parfaitement. nous sommes impatients de voir la sortie de IronPython 1. Visual basic et C# sont deux jumeaux habillés différemment. Comment cela se passe-t-il en C++/CLI ? class nongeree { public: nongeree(int v) { valeur = v. int main(/*array<System::String ^> ^args*/ int argc. nous avons ajouté #include <iostream> using namespace std. Nous gardons la librairie STL. Il est recommandé que ces inclusions précèdent les directives using namespace. "Programmez!".lib. "Hello World!". nous avons bien sûr un C++ qui bénéficie de la gestion de la mémoire de . ce qui était somme toute prévisible. Première excursion dans un vaste monde. Le programmeur doit seulement veiller à assurer l'édition de lien de user32. Sur le site Web C++ .Net ou C# incontestable.Net n'implique pas pensée unique. permet de reprendre l'existant sans autre effort qu'une recompilation et que. En attendant. vous allez voir. regardons ce qu'il en est.Net.h> int main(array<System::String ^> ^args) { ::MessageBox(NULL. mérite d'être découvert car il se démarque de Visual Basic et de C# par une expressivité largement supérieure et par la facilité qu'il offre pour reprendre l'existant.ironpython. l'expérience commence à montrer que . dans la fonction main. ou de langages fonctionnels pour . nous perdons en performance à l'exécution.CompilerServices s'occupe de tout. L'en-tête stdafx.Net de l'espace de nom System. Console::WriteLine("{0} {1}".h" //using namespace System. args[0]. Ainsi selon nous. chacun peut télécharger gratuitement Visual C++ Express pour se familiariser avec C++/CLI. une savante cuisine relevée par un usage intensif des classes .CompilerServices. Nous aurions alors écrit: #include <windows.0 (www. Pour prendre contact avec ce langage. nous aurions pu choisir d'afficher notre message dans une boîte de dialogue Windows plutôt que sur la console. Nous avons ajouté une ligne pour montrer comment manipuler ces arguments (cf exemples sur le Cd-Rom). si notre source est du C++ à l'ancienne. La fonction main reçoit les arguments sous la forme d'un tableau de pointeurs managés sur des chaînes . ce qui est surprenant. return 0. Bien que nous ayons modifié le type des paramètres reçus.Net. cout << "nongeree construite" << endl. les templates et surtout. A défaut. } En C++ on sait quand une instance de classe est détruite.Net et de l'accès à toutes les classes du Framework. return 0. peut aussi avoir tendance à les uniformiser. A ce titre. code natif et code managé cohabitent au sein d'une même application. Au sortir de la portée courante ou consécutivement à l'appel de delete. Microsoft nous dit que C++/CLI. } ~nongeree() { cout << "nongeree detruite" << endl. Chaque médaille à son revers. args[1]). nous gardons le code que nous avons déjà écrit.com). nous gardons l'héritage multiple.Net et il faut bien interfacer les deux. mais nous avons toujours C++. la plate-forme .Runtime. l'exécutable tourne sur la plate-forme . Nous avons écrit nos exemples avec Visual Studio 2005.

}.ctor(int32) Destruction non déterministe ref class geree { public: geree(int v) { valeur = v. } int main(array<System::String ^> ^args) { RunPile(). qui assure cohabitation entre natif et managé. } void RunTas() { telle qu'on peut la voir avec Ildasm. ou de s'en remettre au ramasse-miettes. } int main(array<System::String ^> ^args) { RunPile(). Le premier est notre destructeur classique. dans RunTasGC nous avons "oublié" le delete. un mot clé qui remplace new pour les classes managées. car le pointeur managé n'est plus utilisé dans le programme. void RunPile() { Console::WriteLine("Sur la pile").Runtime. Bien sûr. nous instancions la classe avec gcnew. Nous remarquons que notre classe comporte maintenant deux destructeurs. tout se passe bien comme en C++. } !geree() { Console::WriteLine("geree finalisee"). qui est augmenté de fonctionnalités bienvenues (comme finally). Et notre destructeur classique n'est en fait qu'un alias de la méthode Dispose. } private: int valeur. en apparence du moins. } ~geree() { Console::WriteLine("geree detruite").P ratique Console::WriteLine("Sur le tas"). Toutefois. s Frédéric Mazué . car en fait. Dans RunTas. geree^ g = gcnew geree(1). Quant à notre classe. RunTas(). nous détruisons l'instance par delete.Net. D'abord sur la Pile (RunPile). Console::WriteLine("geree construite"). Nous disons illusion. notre classe implémente automatiquement IDispose et devient une vraie classe . On note la présence d'un mot clé contenant un espace: ref class.) De ce point de vue. Mais cette fois. Nous constatons que notre classe sera détruite à partir du moment où l'on quitte la portée. Le second !geree() est l'équivalent de la méthode C# Finalize. Autrement dit. la destruction n'est pas immédiate mais se produit selon le bon vouloir du ramasse-miettes et le destructeur appelé n'est plus ~geree mais !geree. delete g. A l'exécution tout se passe comme si nous étions en natif pur. } void RunTasGC() { Console::WriteLine("Sur le tas -. qui offre l'accès aux classes . si nous désassemblons RunPile et RunTas nous verrons à nouveau que les classes de System. } void RunTas() { cout << "sur le tas" << endl. avec constructeur et destructeur. elle dérive tout naturellement de Object. Cette première prise de contact nous montre que C++/CLI offre la possibilité de gérer la mémoire manuellement. tout en conservant ce qui était spécifique à C++.fmazue@programmez. de même que ^ signale un pointeur managé et remplace *. Notre destructeur est appelé comme il se doit et un désassemblage permet de retrouver la cuisine dont nous avons parlé pour la construction. return 0.Net bien que cela soit complètement transparent au programmeur qui a l'illusion d'avoir une classe sur la pile de façon traditionnelle. à volonté. Console::WriteLine("Retour de RunTasGC"). RunTas(). Dans ce dernier exemple nous instancions notre classe de trois manières différentes. Nous instancions notre classe sur la pile et sur le tas (fonction RunPile et RunTas respectivement. se présente comme un langage d'une puissance étonnante. Ainsi. C++/CLI est aussi vrai que le vrai C++ et nous voyons que la gestion automatique de la mémoire de . return 0.Net ne viendra pas interférer avec le vieux code. void RunPile() { cout << "Sur la pile" << endl. la destruction est déterministe lors de l'appel à delete qui aboutit à nouveau en sous main à un appel à Dispose. Enfin. nongeree* ng = new nongeree(1).CompilerServices servent d'intermédiaires à l'invocation des constructeurs et destructeurs natifs. ce qui est là aussi transparent. 3 Nous avons réécrit notre classe pour en faire une classe managée. l'instance est alloué sur le tas managé comme en témoigne l'instruction : newobj instance void geree::. } Notre classe baptisée nongeree est une classe C++ tout à fait classique. En revanche. } C++ Niveau facile avancé expert int valeur.destruction par gc --").com 4 En guise de conclusion Programmez n°87 71 juin 2006 . la destruction est différente car cette fois c'est une invocation à Dispose qui est générée. delete ng. nongeree ng(1). Ce C++. }. geree g(1). RunTasGC(). notre instance n'est jamais détruite et nous avons une bonne vieille fuite mémoire classique . Ici aussi. geree^ g = gcnew geree(1). A nouveau. si dans RunTas nous supprimons l'appel à delete.

Windows propose une implémentation par défaut. L exemple 'DemoEnum' montre comment parcourir l'arborescence complète du fichier composé et identifier le type des éléments rencontrés. Un mécanisme interne de comptage de références est utilisé. Nous avons écrit trois exemples que vous trouverez sur le Cd-Rom accompagnant le magazine ou sur notre site www.0. Nous allons donc travailler avec un pointeur intelligent écrit pour l'occasion. Nous allons travailler avec cette implémentation par défaut que Windows appelle les fichiers composés. Pour votre application. Le système ou le programmeur agissent sur le compteur au moyen des méthodes AddRef et Release de l'interface.P ratique C++ Niveau facile avancé expert Travailler avec le stockage structuré de Windows 'idée du stockage structuré est d'avoir une structure de données arborescentes dans un seul fichier. En revanche. DemoRead. Un autre de cas de figure où le stockage structuré s'avère intéressant est celui d'une application qui doit travailler avec un fichier très volumineux. l'expression stockage structuré désigne un jeu d'interfaces COM abstraites.vous. soit au moyen d'une API Windows ou d'une autre interface COM. Pour ce que nous avons à faire.0. Implémenter une interface COM n'est pas nécessairement facile. montre comment lire directement le fichier sous le répertoire Site. Le code a été écrit avec Visual studio 2005. comme vos contacts. Sous Windows. Si vous envisagez de développer une telle application. Magazine et Site respectivement. Par contre. Chacun peut implémenter ces interfaces COM selon ses besoins. permettant le travail avec une structure de données arborescentes comme nous l'avons dit. capable de couvrir les besoins les plus courants. l'interface est supprimée de la mémoire. L'application travaillerait avec différents types de données. Heureusement. Le stockage structuré. Cette structure est illustrée ci-contre. DemoCreate crée un fichier composé et y place deux répertoires. Lorsqu'on obtient un pointeur sur une interface. Voici le code (fichier moncomutils. nous pouvons nous contenter de voir une interface COM comme un pointeur sur une table de pointeurs de méthodes. le dernier exemple. vous pouvez souhaiter que votre application soit indépendante de toute autre. tous rangés dans des répertoires distincts pour chaque type de données. Ce travail est fastidieux et alourdit le code. Nous apprenons à manipuler avec C++ cette API Windows basée sur COM.programmez. Sur le CD ROM Sur le site Web Le stockage structuré permet d'avoir l'équivalent d'un système de fichiers arborescents dans un seul fichier. le stockage structuré de Windows peut être la solution. Enfin. Nous devons commencer par avoir une notion minimum de ce qu'est une interface COM. Le premier répertoire contiendra deux fichiers texte contenant chacun une phrase. répertoire ou fichiers. L'utilitaire qui a servi pour faire cette illustration est le Doc File Viewer de Notre fichier composé présenté par le Visual Studio 6. De plus. une interface COM n'est pas construite comme un objet C++ et surtout une interface COM n'a pas de destructeur. Le second Doc File Viewer de Visual Studio 6. 1 Notre but et les outils C'est un jeu d'interfaces COM qui permet de manipuler les fichiers composés. Une interface COM ressemble à la table des pointeurs des méthodes virtuelles d'une classe C++. Quand le compteur tombe à zéro. Le second répertoire contiendra un fichier texte contenant lui aussi une phrase. mais ne posera pas de problème avec n'importe quel autre compilateur C++.h) : #ifndef moncomutilH #define moncomutilH template <class T> class TSmartComPtr { public: TSmartComPtr() : p(NULL) {} virtual ~TSmartComPtr() { if(p) p->Release(). Nous ne manipulerons COM que du côté client. Vous ne souhaitez pas non plus éparpiller vos données dans un grand nombre de fichiers. vous jugerez probablement qu'elle est trop légère pour travailler avec un SGDBR. Le premier exemple.com. dont le chargement total en mémoire serait pénalisant. qui est une sorte de fichier indexé. } 2 Travailler avec COM T* operator*() Programmez n°87 72 juin 2006 . Quel est l'intérêt ? Imaginons une application du genre agenda ou assistant personnel. vous permettra d'accéder directement à la zone de données requise à un instant et à charger cette zone uniquement. vos rendez. AddRef est automatiquement invoquée. le programmeur doit appeler Release pour libérer l'interface lorsqu'elle n'est plus utilisée ou si une erreur est rencontrée.

si l'on peut dire.répertoires. Unicode est de rigueur. IStorage est l'interface qui encapsule. NULL. le code de la fonction Run de DemoCreate : void Run() throw(int) { HRESULT result. On remarque que le nom de fichiers est donné en Unicode (macro L).stg". ce qui dans notre cas se produit lors de la destruction de nos pointeurs intelligents. si l'on peut dire. result = ::StgCreateDocfile( L"MonStorage. évidemment. on remarque que répertoires et fichiers ne sont jamais fermés. InsertFile(magrep. &siterep). L"fichier1. Fort heureusement toutefois. Dans une vraie application il serait probablement pertinent de déclarer une classe d'exception. Programmez n°87 73 juin 2006 . Cette fermeture est automatique lorsque la méthode Release des interfaces est appelée. le fichier composé n'est vu que comme un répertoire racine. que l'API initialise notre pointeur intelligent racine. racine->CreateStorage( L"Site".asp?url=/library/enus/stg/stg/structured_storage_start_page. TSmartComPtr<IStorage> magrep. L'appel de l'API StgCreateFile crée le fichier composé sur le disque. nous obtenons un pointeur sur une interface IStorage. nous obtenons un pointeur sur une nouvelle interface de type IStorage. } T* operator->() throw(int) { if(!p) throw 1. Donc pas d'Unicode dans ce cas :). vous trouverez un sandwich dont les tranches de pain sont CoInitialize et CoUninitialize. Chaque interface IStorage gère donc un répertoire et un seul. #endif Nous nous limitons à fournir des opérateurs de déréférencement et d'accès aux membres. A chaque fois. } private: // affectation interdite TSmartComPtr& operator=(const TSmartComPtr<T>& param). L'intérêt est. La copie et l'affectation sont interdites.asp) en ce qui concerne les différent drapeaux passés à l'API pour la création du fichier.txt". d'avoir Release invoquée automatiquement à la destruction de l'objet au sortir de la portée. NULL. le fichier créé. Dans la fonction main de chaque exemple. même si le contenu est du texte. ainsi que pour la liste de toutes les méthodes proposées par les interfaces COM. Enfin. STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE.com/library/default. }. if(result != S_OK) throw 2.txt". "Programmez!"). On remarque. En effet. "Participez au forum"). TSmartComPtr<IStorage> racine. les répertoires de fichiers composés. // copie interdite TSmartComPtr(const TSmartComPtr<T>& param). return p. InsertFile(magrep. } racine->CreateStorage( L"Magazine". Les appels à ces APIS doivent précéder et clore toute activité COM. &racine). Cette exception n'est qu'un entier pour simplifier au maximum le code. &magrep). InsertFile(siterep. C++ Niveau facile avancé expert return p. Examinons. L"fichier2. nous appelons trois fois la fonction InsertFile pour y insérer des fichiers contenant une ligne de texte. STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE. Une fois les répertoires créés. Le lecteur voudra bien se reporter à la documentation MSDN de Microsoft (http://msdn. maintenant. TSmartComPtr<IStorage> siterep. en outre. nous créons les deux sous. NULL. STGM_WRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE. NULL.txt". Nous commençons par déclarer trois pointeurs intelligents de type IStorage. comme toujours avec COM. 3 Créer un fichier composé. le contenu des fichiers sous les répertoires n'est vu que comme un paquet d'octets bruts. L"fichier1. Le travail est tout à fait similaire à ce que nous venons de faire pour les répertoires. nous levons une exception.microsoft. A nouveau le nom du fichier est en Unicode. "Abonnez vous :-)"). T** operator&() { return &p.P { } ratique NULL. Si le pointeur est utilisé avant d'être initialisé. Autrement dit. T *p. A partir de cette interface racine et en invoquant sa méthode CreateStorage. ce qui signifie que pour le système. La méthode CreateStream de IStorage crée un fichier et donne un pointeur sur une interface IStream qui encapsule.

STATSTG statstg. Si l'on a bien compris les deux exemples précédents. sont des SGDBR. } } 4 Parcourir un fichier composé fonction s'appelle elle-même. s Frédéric Mazué . ". comme expliqué plus haut (cf. &ienum). il importe de remarquer que la structure STATSTG détient seulement un pointeur sur le nom de l'élément et non le nom lui même.wikipedia. NULL. wcout << "Nom: " << statstg. la place correspondante n'est pas libérée dans le fichier composé. Bien évidemment. . Ensuite. .pwcsName). Un dernier mot. default: wcout << L"Type: inconnu. on commence par ouvrir le fichier avec l'API StgOpenStorage. ". 0) == NOERROR) { switch(statstg. on commence par obtenir une interface d'énumération COM de type IEnumSTATSTG qui servira à parcourir le fichier. while(ienum->Next(1.COM (Component Object Model) : Technologie Microsoft de composants logiciels interopérables. TSmartComPtr<IStorage> subst. faute de quoi on aurait une fuite de mémoire. la Programmez n°87 74 juin 2006 .fmazue@programmez. Comme toujours dans un tel cas en programmation COM. Oracle. Cette méthode remplit elle aussi une structure STATSTG et selon les paramètres qu'elle reçoit. on doit savoir qu'un répertoire ne peut s'autodétruire et doit être supprimé depuis le répertoire immédiatement au-dessus de lui dans l'arborescence. bien évidemment. D'abord. Comme pour la création du fichier. ce qui est fait dans la fonction Run non reproduite ici.pwcsName << endl. NULL. Mais surtout. il faut passer par un fichier intermédiaire que l'on génèrera par racine->CopyTo. EnumStorage(subst). &statstg.org) Ce code comporte quelques subtilités. PySQL. Enfin. result = st->OpenStorage(statstg. tant que l'interface d'énumération COM signale la présence d'un élément. 0. une structure STATSTG est remplie A chaque fois. break.SGDBR : Système de gestion de base de données relationnelles. STGM_READ|STGM_SHARE_EXCLUSIVE. &subst).type) { case STGTY_STORAGE: wcout << L"Type: STGTY_STORAGE.pwcsName. 0. il faudra peut être veiller à libérer de la mémoire.P ratique C++ Niveau facile avancé expert Intéressons nous maintenant au code de DemoEnum qui montre comment parcourir le contenu d'un fichier composé. TestResult(result). Nous invoquons la méthode Stat de IStream pour connaître le nombre d'octets à lire. employons CoTaskMemFree. Nous passons alors cette interface à la fonction récursive EnumStorage que voici : void EnumStorage(TSmartComPtr<IStorage>& st) { HRESULT result. nous obtenons une interface de type IStorage sur la racine. Ce nom est en Unicode. } ::CoTaskMemFree(statstg. Pour récupérer cette place et réduire la taille du fichier. Nous bouclons.pwcsName << endl. nous testons le type de l'élément et si nous avons affaire à un répertoire. Ici nous Nous parcourons le contenu de fichier composé. ". break. Il n'est jamais garanti que les éléments soient parcourus dans l'ordre de leur création. est sans surprise. result = st->EnumElements(0. nous utilisons une interface COM IMalloc pour la libération de la mémoire. case STGTY_STREAM: wcout << L" Type: STGTY_STREAM. par exemple. L'illustration ci-dessus montre le résultat du parcours du fichier. PostgreSQL. les commentaires dans le source) Pour varier les plaisirs. Lorsqu'on efface un élément (IStorage->DestroyElement). (définition provenant de : fr. TestResult(result). nous affichons son type et son nom. DemoRead. nous ouvrons le fichier. TSmartComPtr<IEnumSTATSTG> ienum. il est du ressort du programmeur de libérer cette mémoire avec des APIs COM. Nous n'en reproduisons pas le code ici. quelle que soit la plate-forme informatique ou le logiciel. et ce de manière unifiée. mais le mécanisme global est exactement le même que précédemment. Nous partons de la racine et nous ouvrons le sous-répertoire.Unicode : Unicode est un standard informatique développé par le Consortium Unicode qui vise à donner à tout caractère. un identifiant numérique unique. Quel que soit l'élément. Ce pointeur pointe une zone de "mémoire COM" c'est-à-dire sur une zone qui a été allouée par des APIs COM sous le manteau. de n'importe quel système d'écriture de langue. lorsque la structure STATSTG a été remplie. Cette interface est obtenue avec la méthode EnumElements qui n'énumère en fait rien elle-même. Pour chaque élément. wcout << "Nom: " << statstg. break. ce dernier exemple.com 5 Lire dans un fichier composé Lexique . NULL.

Nous nous intéresserons aux noeuds de trois types : . SimpleXML gère le document XML dans sa globalité.P ratique PHP Niveau facile avancé expert XML puissance 5 avec XPath et PHP Les applications utilisant XML sont partout ! Que ce soit les fils d'actualités en RSS. on utilise la notation . Comme Xpath est une spécification du W3C vous pourriez également l'utiliser avec d'autres plates-formes. Notre objectif à travers cet article va être de découvrir ce qui est communément vu comme la cerise sur le gâteau XML : Xpath le moteur de recherche du XML. Arborescence des noeuds : Pour accéder au noeud racine. Il s’agit donc d’un moyen d’accéder aux données très simple dans l’univers XML. on utilise la notation . donc à tout document XML ou XHTML. des fonctionnalités de traitement des fichiers XML extrêmement puissantes et faciles d'accès. <c></c> <c></c> <c></c> </b> </a> Comment faire une recherche dans votre document XML ? Comment accéder aux données de façon aussi simple qu'avec SQL ? La solution existe : XPath ! C’est le nom d’une syntaxe permettant de faire des recherches ou sélections dans un document XML. les données du document Notez que simpleXML propose déjà des méthodes pour accéder aux éléments et attributs.les noeuds d'éléments.des fonctionnalités SimpleXML Si DOMDocument permettait déjà en PHP4 de parcourir l'arbre DOM nœud par nœud et d'utiliser de façon complexe XPath. on peut utiliser le signe / Pour désigner le noeud sur lequel on travaille. Je désigne tous les c contenus dans un élément b par b//c. qui garantit le moins d'erreurs possibles et le plus de précision. comme les répertoires Unix. Considérons les balises XML suivantes et cherchons à désigner l'élément " c ". On utilise l'étoile * comme caractère joker.des fonctionnalités DOM.les noeuds de texte. L'extension SimpleXML implémente une méthode xpath(). Le premier objectif d'XML est atteint : ouverture et interopérabilité. Soit le XML suivant : <a> <b> <c></c> <c></c> <c></c> </b> </a> <a> <b> <c></c> <c></c> <c></c> </b> </a> <a> <b> <c></c> <c></c> <c></c> </b> <c></c> <c></c> </a> Xpath voit un document XML comme un arbre de noeuds.les noeuds d'attributs. Cela nous permet d'utiliser cette méthode d'accès à des arbres DOM. Désigner plusieurs noeuds à la fois : Les caractères spéciaux permettent de choisir plusieurs éléments en une seule notation. je ferais //c Programmez n°87 75 juin 2006 . c'est-à-dire les balises XML ./ 2. . On sépare les mots-clés de désignation du nom de l'élément par :: 1..la méthode complète. qui ajoutent des informations aux balises . En utilisant la notation complète on aurait : a/child::b/child::c En utilisant la notation abrégée on aurait : a/b/c A retenir : on sépare les éléments imbriqués les uns dans les autres par un slash./ Pour désigner le noeud parent. 1 2 XML et XPath ? Comment l'utiliser ? Nous allons baser nos exemples sur la plate-forme principale d'applications Web : PHP. 3 4 Comment accéder aux éléments ? La syntaxe XPath appliquée à la recherche d'éléments Il existe deux syntaxes pour noter le chemin à travers les éléments du DOM XML : . avec SimpleXML. <a> <b> Je désigne tous les noeuds enfants de a par a/* (je récupère donc les noeuds b et c). les services web ou les formats de stockage (OpenDocument pour OpenOffice et OpenXML pour MsOffice) il est difficile d'y échapper.la méthode abrégée qui est plus rapide à écrire. Avec PHP il est possible d'utiliser Xpath au travers : . si je souhaite au contraire tous les éléments c quel que soit le noeud parent. . en tant qu'objet. Nous préférerons PHP 5 qui offre. et // pour outrepasser la désignation de l'arborescence.

$recherche = "/rss/channel/item[contains(title.net/index2.com/articles/rss/ s Sarah HAIM LUBCZANSKI & Cyril PIERRE de GEYER . $titre = utf8_decode($actu->title). et la notation abrégée par le caractère @. On peut examiner aussi bien les noeuds que leurs attributs.. <?php // Définition des sources $tablo_flux[] = 'http://www.google. On sait donc que tous les flux RSS 2. <personne> <yeux couleur ="bleu"> </yeux> <cheveux couleur="blond">longs</cheveux> </personne> <personne> <yeux couleur ="gris"> </yeux> <cheveux couleur="blond">en brosse</cheveux> </personne> <personne> <yeux couleur ="brun"> </yeux> <cheveux couleur="noir">courts</cheveux> </personne> 5 La syntaxe XPath appliquée à la recherche d'attributs // On récupère le mot clef recherché dans l'URL $mot = ['PHP']. $taille = count($tablo_flux). Syntaxe d'un flux RSS 2. 2000) et qu'on ne souhaite afficher que les nouvelles concernant PHP.simplexml.com</link> <description>Description du channel</description> items. On va donc n'être intéressé que par les titres contenant le mot clef "PHP ".0"> <channel> <title>Titre du channel</title> <link>http://www. feed=RSS0. Avec quelques lignes de plus vous obtenez un système de gestion plus complet (voir figure).monsite. </channel> </rss> 6 La syntaxe XPath appliquée à la recherche de texte Cet exemple simple permet de montrer comment faire une recherche simple dans des fluxs rss. $i < $taille .htm Former des flux RSS 2.0 http://ghostdogpr.'$mot')]".net/manual/fr/ref. que le texte contenu dans le noeud élément.afup. } } } ?> Pour désigner les attributs de couleurs d'yeux.org/TR/xpath Manuel PHP sur SimpleXML http://fr2.nexen. echo "<tr><td><a href='$lien'>$titre</a></td></tr>\n".wikipedia. $titres = $racine[$i]->xpath($recherche).91&no_html=1'.developpez.w3.P ratique PHP Niveau facile avancé expert Attention.fr/news?ned=fr&topic=t&output=rss'. motif ).php?option=com_rss& Programmez n°87 76 juin 2006 .php3'.php Les fonctions Xpath http://fr..php.org/xml/representation/fonctionsxpath.Anaska Formation Cas d'application : afficher les titres de flux RSS contenant le mot PHP Imaginons qu'on ait un grand nombre de flux RSS (par exemple. Rien ne vous empêche d'aller plus loin et de créer un système de veille sur un ou plusieurs sujets qui vous intéressent. En savoir plus Article de Wikipedia sur Xpath http://fr. $tablo_flux[] = 'http://news. if($titres){ foreach($titres as $actu){ $lien = htmlentities((string)$actu->link). $i++ ){ $racine[$i] = simplexml_load_file($tablo_flux[$i]). $tablo_flux[] = 'http://www. for( $i=0 .selfhtml. La notation longue des attributs se fait par le mot clef attribute. On peut également combiner les choix dans les fonctions par le caractère | (pipe).org/backend. Depuis PHP.0 auront la structure suivante : <rss version="2. notre chaîne sera le titre de la nouvelle qu'on souhaite examiner. on postule que la DTD autorise des éléments c qui ne seraient pas dans <b>. je note : /child::personne/child::yeux/attribute::couleur (complète) /personne/yeux/@couleur (abrégée) On utilise la fonction contains(chaine.0 dans du XML Un flux RSS est en XML et obéit à une norme.org/wiki/XPath Norme du W3C sur XPath http://www.

Cet article se propose de vous faire découvrir concrètement la spécification la plus attendue de Java EE 5 Platform.P ratique java Niveau facile avancé expert EJB 3.0 de déterminer dynamiquement quels sont les éléments rassemblés par une collection donnée. un framework. des informations qui pourront être exploitées par un mécanisme tiers.} } Comment installer cette classe en tant que service ? La première étape consiste à extraire de notre classe l’interface qui définit les fonctions attendues de ce service : public interface ComputerService { public double add(double a. Par exemple. les seconds réifient le contenu de la base de données. la tradition des EJB est respectée. les méthodes et les attributs. comme pour les entity beans. mais on trouve aussi beaucoup de gènes Hibernate et Spring. double b) {return a+b.0 : Le grand virage Cette nouvelle mouture des EJB est une synthèse rigoureuse des solutions les plus populaires en matière de composants métier en Java : dans l’ADN des EJB3. double b) {return a/b. Ce service met à disposition une bibliothèque de fonctions mathématiques élémentaires. double b).0 que sont les annotations et les " generics ". vous n’aurez probablement aucune difficulté pour comprendre les exemples de code illustrant cet article. Jusqu’à ce point. il existe deux grandes familles d’EJB 3. la méthode ou l’attribut sur lequel elle est posée. Il est possible avec le JDK 5. Elle s’appuie intensivement sur les deux apports majeurs du JDK 5. sans effort de programmation – la possibilité de l’invoquer à distance.). public double multiply(double a. Les " generics " sont un mécanisme additif au compilateur Java permettant de préciser le type des objets manipulés par une API. public double minus(double a. Il faut noter qu’une annotation n’apporte aucune modification du comportement per se à la classe. double b). on reconnaît une certaine paternité des EJB 2. } Définir un service à l’aide d’un Session bean Le composant EJB qui matérialise un service métier est l’EJB Session. quels rôles ils peuvent jouer dans une application d’entreprise. Mais les generics sont aussi connus de l’API d’introspection. Mais il en fait plus. etc. une unité transactionnelle et un contrôle d’accès sécurisé. Il n’est pas non plus nécessaire de déclarer les EJB3 Session dans un fichier de configuration de type " ejb-jar.x). l’annotation @Overrides indique que la méthode associée doit avoir une super implémentation.0 Annotation et generics se révèlent simples à assimiler et à utiliser. public double divide(double a.0 en entreprise Avant d’entrer dans l’intimité de ces nouveaux EJB. Et du framework Spring. Prenons comme exemple un service simpliste.} public double multiply(double a.xml ".0. Il est toujours nécessaire qu’un outil. Il s’agit des fameux " intercepteurs " qui ont popularisé la programmation par aspect dans le monde des serveurs d’application. Illustrons tout cela concrètement. double b) {return a-b. Il confère à une procédure de traitement - Il suffit maintenant de rajouter les annotations @Remote sur l’interface et @Stateless sur la classe d’implémentation … et le tour est joué ! @Remote Programmez n°87 77 juin 2006 . Même si vous n’êtes pas familier avec le JDK 5.X. omme pour les EJB 2. un serveur d’application. rappelons ce que sont les annotations et les " generics " et surtout. reconnaisse l’annotation et apporte à la classe le comportement demandé. ni encore de devoir définir d’interface de fabrique (les " Home " des EJB 2. Nous verrons que ce point est essentiel pour les EJB 3. Une annotation est passive. L’annotation @WebService posée sur une classe Java indique au serveur d’application qu’il doit installer cette classe comme service WEB. Ce qui change. il doit être installé au sein d’un serveur d’application. • " Plus " car il est possible désormais d’associer à ces procédures de traitement des comportements " transversaux ". Cette annotation est utilisée par le compilateur Java. Ce mécanisme est d’abord utilisé dans les collections JAVA. ni de définir d’obscures méthodes réflexes (ejbActivate. C Le JDK 5. double b).x. épargnant le développeur de trop nombreux " casting ". Elles permettent d’associer à ces composants. Elles ressemblent en cela au célèbre Xdoclet. etc. La version initiale de notre classe est celle-ci public class Computer { public double add(double a. c’est la manière dont ces EJB sont mis en œuvre. Comme son aïeul figurant dans la version 2.0 : les sessions beans et les entity beans. Pour les session beans. double b) {return a*b. car les annotations et les generics permettent de transformer des classes JAVA standard (POJO) en EJB Session. etc. elle s’est considérablement simplifiée. • " Différemment ". Les annotations forment un système de marquage des composants élémentaires d’un programme que sont les classes...x. ejbPassivate. double b). par l’éditeur Java d’Eclipse. et pas de la même manière.} public double divide(double a. Les premiers sont là pour matérialiser des services.} public double minus(double a. sans qu’il soit nécessaire de les faire hériter de classes (ou d’implémenter des interface) provenant de l’API des EJB. générer le WSDL correspondant. } et faire implémenter cette interface par notre classe initiale : public class Computer implements ComputerService { .

Définir un objet du domaine (objet métier) avec un Entity Bean La simplification est encore plus grande en ce qui concerne les beans entités.label = label .jar. String label. le serveur d’application devine tout seul la ligature à réaliser (lorsque ce n’est pas le cas. Ce programme peut être une application externe au serveur d’application (client riche) ou une servlet. Comment l’initialiser ? Avec les EJB 2.add(a. Programmez n°87 78 juin 2006 .0. public double computeGrid(int op.lookup(“ComputerService/remote”). à l’instar de ce que l’on faisait avec les EJB 2. } @Id public String getCode() {return code. Comme un unique service implémente cette interface. malgré le fait que cet appel puisse être réalisé à distance. try { InitialContext ctx = new InitialContext(). elle est " injectée " en son sein par le serveur d’application. qu’il n’est plus nécessaire de passer par une "fabrique" : le fameux " home " des EJB 2. Set<Vendor> vendors. L’appel à la méthode " add " n’est pas protégé par une clause try … catch.add(5. Au déploiement de l’application.xml. Computer cmp = (Computer) ctx. } La première ligne de cette snippet crée un accesseur vers JNDI. Les beans entités sont de simples classes Java. en effet..5 des servlets). } catch (NamingException exp) { … } cmp.P ratique java Niveau facile avancé expert public interface ComputerService { … } @Stateless public class Computer implements ComputerService { . l’utilisation d’un fichier de configuration redevient nécessaire).. } } } Ces deux classes sont alors placées dans une archive . La seconde ligne obtient le service. Injection de dépendance Développons maintenant un nouveau service qui a besoin d’utiliser notre service de calcul. Par défaut. il aurait fallu définir une référence dans le fichier de configuration ejb-jar. La recherche du service est directe.ADD: return comp.code = code. que nous aurions traduite en un nom JNDI dans un fichier de configuration spécifique au serveur d’application.x. La norme EJB 3. this.0 abandonne sur ce terrain l’essentiel des principes des EJB 2.. Aucun fichier de configuration n’est nécessaire ! Il nous reste maintenant à appeler notre service depuis un programme " client ".0. 5. le nom de l’EJB est le nom de l’interface du service auquel on ajoute " /remote " : Computer cmp. Pour les EJB 3. String label) { this. } case OperationType. rien de tout cela : il suffit d’associer à " comp " l’annotation @EJB pour que le serveur d’application détecte tout seul qu’il doit lier le service MiniGrid a une instance de Computer : @Stateless public class MiniGrid implements MiniGridService { @EJB ComputerService comp. il faut passer par l’annuaire du serveur l’application – c’est à dire JNDI – pour se connecter au service.code = code.x et adopte l’approche d’outils d’ORM comme Hibernate. Il semble. double a. L’attribut " comp " désigne le service de calcul que nous voulons exploiter. Cette référence devait ensuite être utilisée dans la méthode d’initialisation du bean via JNDI.x. etc. On retrouve ici le principe fondamental du framework Spring. ProductType type. détecte les annotations et installe automatiquement l’EJB. public Product() {} public Product(String code. Cette ligature n’est plus faite à l’initiative du bean (MiniGrid). Ce service est aussi un session bean EJB 3 dont voici le code partiel : @Stateless public class MiniGrid implements MiniGridService { ComputerService comp.} public void setCode(String code) { this.0).0. Home.. Notez cependant. que l’on installe sur un serveur d’application intégrant les EJB 3.REMOVE: . que les gens en charge de spécifier les nouvelles API de Java EE aient enfin admis que les exceptions explicites (" checked exceptions ") apportent une complexité et une lourdeur que ne justifie pas le gain attendu dans le contrôle du code. à l’instar de ce que présente la snippet suivante : @Entity public class Product implements Serializable { String code. La troisième ligne exploite le service. selon le Design Pattern IoC (Injection of control) ou DI (Dependency Injection). le serveur scrute les classes contenues dans l’archive. double b) { switch (op) { case OperationType.x. … Comment fait-il pour trouver le bon service ? Il s’appuie sur le type de la référence " comp ". Dans l’état actuel des choses (car tout cela va changer avec la version 2. b).

} } sait qu’il doit initialiser l’attribut associé par une instance de gestionnaire d’entités. List orders = em. C’est par introspection sur le type des éléments contenus dans la collection retournée par "getVendors" que le serveur d’application reconnaît la classe Vendor comme cible de la relation " vendors ". } @ManyToMany(mappedBy=”products”) public Set<Vendor> getVendors() {return vendor. C’est en reconnaissant cette annotation que le serveur. puis retournée vers le serveur et enfin. Bordeaux. Toulouse. interface. car il illustre le fait que les collections sont aussi gérées par les EJB 3. Having compris. pas d’interface EJB à implémenter.vendor = vendor. bean. Les méthodes de notre Session bean peuvent maintenant utiliser le gestionnaire d’entités pour retrouver une entité particulière.x. @Column.com .createQuery( ”select o from order o “+” where o. label. La conséquence de cet artifice est que les objets du domaine sont matérialisés par deux classes distinctes.com .objetdirect. L’utilisation des " generics " prend tout son sens. En revanche. Le serveur d’application utilise le nom de la classe comme nom de table.P ratique public String getLabel() {return label. Le cas de l’annotation @ManyToMany est intéressant.0 est mobile. Il n’est donc plus nécessaire de créer des DTO. etc.status = 1”). au démarrage de l’application. Cette limitation n’en est pas vraiment une : le modèle architectural d’une application d’entreprise impose.getResultList(). Grenoble et Rennes. La première invocation du gestionnaire d’entités recherche le produit de code “is2”. L’annotation @ManyToOne donnée en exemple dans la Snippet indique qu’il faut mapper la propriété " type " avec la clé étrangère de même nom dans la table qui contient la définition des produits.homsysgroup. filiale de Homsys Group A propos de Homsys Group : Créé en 1991. POJO signifie "Plain Ordinary (ou Old) Java Object". de masquer les beans entités par une série de Session beans façade.find(Product.type = type. L’annotation la plus importante est @Entity qui indique qu’il s’agit d’un bean entité. } java Niveau facile avancé expert @ManyToOne public ProductType getType() {return type. La dernière invocation insère un nouveau produit en base de données. les entités des EJB 3. modifier ou supprimer une entité.0 ne peuvent être accédées à distance. L’autre annotation obligatoire est @Id qui indique quelle est la clé primaire de l’entité. de définir des requêtes paramétrées et dynamiques. ”pencil F2”)). em. Il sert en quelque sorte de " Home " générique et général. Homsys Group est spécialisé autour de la Business Intelligence (Homsys) et les technologies Objet et Internet (Objet Direct). Marseille.0 à l’aide d’annotations simples. Les POJOs peuvent être sérialisables et un POJO peut parfaitement être utilisé en dehors d’un conteneur EJB. OrderBy.class. A l’exception bien sûr de quelques annotations qui vont transformer l’inoffensif POJO en un composant d’entreprise persistant en base de données. instance de la classe " EntityManager " est initialisé dans un Session bean par injection de dépendance : @Stateless public class MonImplementationDeDAO implements DAOService { @PersistentContext EntityManager em. Par exemple. dresser la liste des entités qui répondent à un critère donné. A l’instar des EJB Session. Ce gestionnaire est la fabrique pour toutes les entités. Il est bien sûr possible d’altérer ce comportement par défaut en utilisant des annotations comme @Table. dans la snippet suivante : Product prd = em. La seconde invocation retourne l’ensemble des commandes dont la facture n’a pas encore été réglée. GroupBy. d’utiliser un nouvel EJB QueryLanguage qui offre l’ensemble des possibilités de SQL.com En rencontrant l’annotation @PersistentContext. A la place. mais il ne permet pas d’en appréhender la puissance : sachez qu’il est possible d’utiliser l’héritage des entités. Cette classe ne présente rien de particulier : pas de classes à hériter. Il utilise les noms des propriétés (code. s Henri Darmet contact@objetdirect. le fait qu’un bean entité EJB 2. Ce sont des POJOs. L’entité EJB 3.} public void setProductType(Product type) { this. www. Une entité EJB 3 peut être détachée du gestionnaire d’entités. Aucun fichier de mapping n’est nécessaire. dans la pratique. permettant de définir un mapping fin avec le contenu de la base de données. Ce gestionnaire.www. Le concept du " mobile object " Contrairement aux Entités des EJB 2.label = label.persist(new Product(”pF2”. La simplification est d’importance : de quatre classes (home. modifiée dans ce contexte. DTO) on passe à une. créer.invoice. Beaucoup d’autres annotations sont disponibles. le serveur d’application Programmez n°87 79 juin 2006 . ”is2”).x ne puisse exister hors du conteneur EJB implique l’utilisation de DTO ou " Data Objects " pour faire migrer la description d’une entité vers une application cliente. Lyon. va installer cette classe en tant qu’Entity bean. Ce modèle rend donc inutile la faculté d’un bean d’être sollicité directement.} public void setVendors(Set<Vendor> vendor) { this. réinjectée dans le gestionnaire d’entités. que nous pourrions traduire par "des objets Java très ordinaires". … Voyons maintenant comment manipuler ces entités. transférée dans un contexte client. type) comme noms de champs. Rien de tout cela n’est désormais nécessaire. Homsys Group est implanté à Paris.Objet Direct. apparaît le gestionnaire d’entités. L’attribut d’annotation " mappedBy " indique au serveur que la propriété " vendors " de Product est la relation inverse de la relation " products " de la classe Vendor. Ce rapide survol des beans entités permet de comprendre la nouvelle philosophie des EJB. les " Home " ont disparu.} public void setLabel(String label) { this.

a pour devise " Games from the people who made them ". A Des jeux peuvent même être éliminés par excès de mauvaises notes : la sélection naturelle ! Le système est donc très séduisant. affiliés à un studio ou non.net). au besoin.gametrove. Mais aucune obligation : ce sont les notes des utilisateurs enregistrés qui font tout. Plateau de jeu interactif pour jeux de plateau virtuels Un nouveau concept ludique montre le bout de son nez. Le site entend clairement permettre à tous les développeurs indépendants. par USB ou carte-mémoire. ATI et Nokia viennent de conclure un partenariat à long terme pour créer communément des outils de développement ludique sur mobile. par la diversité de leur offre (jeu mais aussi musique. les deux compagnies organiseront alors mondialement des ateliers auprès des développeurs professionnels. BRÈVES Nouveau mariage mobile ATI-Nokia u cas où vous douteriez encore de l’essor des jeux sur mobiles. parfaitement indie. C’est tout à fait raisonnable. qui fait plateau de jeu. rien d’autre !) puis de soumettre son jeu en remplissant une fiche descriptive et technique complète. ATI doit donc fournir à l’automne prochain un kit de développement logiciel complet. quasi gratuit. mais aussi son intégration dans des tables de bars. il peut. En outre. Du côté des développeurs. classant les jeux par hit-parade sur des pages successives… cohérence à la communauté. communautaire. et annoncé pour la fin de l’année. à découvrir sur www. Chaque jeu est alors automatiquement téléchargeable en version démo.philips. avec plus de 100 jeux soumis et implantés en moins de trois semaines. son Entertaible. L’originalité du concept est que GameTrove est juste un intermédiaire passif : ce sont les utilisateurs qui décident des jeux qui restent accessibles. dans ce cas.research.L udique Les jeux indépendants ont leur portail E t c’est un portail dont la philosophie est vraiment " indie " ! GameTrove (www. le plateau s’affichant sur l’écran. faire une donation volontaire au portail. GameTrove prend 10% sur les ventes réalisées par le développeur.com/initiatives/entertaible. Reste à savoir quelles balises ont été mises en place pour réguler le processus d’annotation et éviter les abus… En tout cas. d’autant que l’investissement financier initial du développeur indie est nul. de clubs de jeux… On peut se demander cependant si les amateurs de jeux de société ne bouderont pas cette virtualisation. pour commencer la partie ! Philips prévoit pour l’Entertaible une utilisation domestique. c’est-àdire la même perte de contact avec la matière (carton du plateau. On y déplace des pions et. celui des jeux de plateau (vous voyez. de publier et même de vendre leurs jeux en ligne. des jeux de société différents ! Un menu propose. Reste à utiliser le set de pions spéciaux. s’il le souhaite. de cafés. le programme de gestion spécifique se chargeant en mémoire. une nouvelle direction de développement ludique s’ouvre avec l’Entertaible. C’est tout. le succès de GameTrove semble immédiat. la mise en place du jeu est absolument gratuite : il suffit de s’enregistrer (juste un login et un mot de passe. d’établir un véritable standard en matière de plate-forme et d’outils. si les tests sont favorables. et dans quel ordre d’accès. des liens vers les sites des développeurs et bientôt des forums de partage assurent une Programmez n°87 80 juin 2006 . ou achetable en version complète. vidéo). au fur et à mesure. les divers jeux disponibles. on fait alors son choix : le jeu s’installe. en les notant. Pour le promouvoir. Leur objectif avoué est. genre Monopoly) interactifs : une rencontre très innovante entre jeux de société et jeux vidéo ! L’invention est riche de promesses… Jugez plutôt : Philips Research a présenté en janvier dernier. Cependant. La perspective la plus étonnante de l’Entertaible est que ce plateau interactif est multi-jeux : on peut très bien y charger. ou acheter une bannière de pub tournante. électroniquement réactifs avec l’écran. lancé il y a un mois. Tout simplement un écran LCD tactile à plat. chez soi. plastique ou bois des pions) qui freine déjà le livre électronique ! Quoi qu’il en soit. et détaché de toute structure technique ou commerciale externe aux joueurs et développeurs. un programme gère les règles au fur et à mesure.

voir comptes-rendus sur Gamasutra. plus trois conférences. il entend former des professionnels aux technologies situées au carrefour de l'informatique. ce qui sousentend que la PS3 en sera donc dépourvue. en ligne. " Une L G PU-Tech. a finalement avoué préférer. société française. La PS3 apportera des performances bien plus élevées.gputech. les développeurs devraient vivre une expérience plus facile et confortable sur PS3 ". C’est vaste. www. Papyrus. qui est sortie début mai. s'associent pour proposer un Mastère sévèrement Multimédia! Dénommé " Mastère Spécialisé en Ingénierie des Médias Numériques " (MS IMN). et de l'audiovisuel. Ainsi. comme d’autres contenus. mais attention : peut-être un nouveau " concept-base ". c’est-à-dire que tous ses logiciels seraient mondialement utilisables. composé de vétérans prestigieux de tous bords (Walt Disney Interactive. est connu pour son franc-parler. etc.). écoles de la Chambre de Commerce et d'Industrie de Paris. Une formation qui durera 12 mois. des télécommunications. Le concept est unique : d’abord. et une autre en développement pour le grand concurrent Maya. et quand même flou… Bref. vient de s’adjoindre les services de Ken Fedesna et Andrew Miller pour lancer enfin son fameux " filmgame ". mais cette possibilité dépendra surtout du taux et de la qualité du réseau de chaque pays.com Programmez n°87 81 juin 2006 . Mastère en Haut Multimédia L MechCommander2 à la source e code source de Mech Commander 2 est librement téléchargeable sur le site de Microsoft et. avec des chips plus efficaces au niveau du développement. Pixar. la réussite de Battle of Middle Earth II sur Xbox 360 doit beaucoup à la qualité des contrôles de la manette. du multimédia par excellence ! Le Mastère sera accessible aux titulaires d’un diplôme scientifique à Bac+5 (ou Bac+4 avec conditions) et aux cadres en activité dans les secteurs concernés. " Young. il a clairement exprimé son scepticisme par rapport à certains choix de développement de la future console de Nintendo (qui ne s’appelle plus Révolution. Strange. entre autres. recherche " mechcommander ". Bref. le joueur joue essentiellement avec la psychologie des personnages pour monter de niveau en passant les épisodes de l’histoire. c’est un jeu pour salle d’arcades .esiee.microsoft. enfin. mais Wii). qui a aussi suggéré que la course à la puissance du hardware ne valait que si elle s’appuyait sur une bonne réflexion conceptuelle du développement logiciel ( !). Mieux encore. Il a enfin voulu rassurer les développeurs : " on a beaucoup critiqué la PS2 pour ses difficultés de programmation. A la dernière Game Developers Conference de San Jose en Californie. Ajoutez à cela une documentation en ligne intégrale et des tutoriaux spécifiques. Tous les outils que sont en train de créer de grandes entreprises nous le prouvent clairement. au cas où vous ne le sauriez pas. par l’intermédiaire de Phil Harrison. s’est déjà fait un nom dans l’industrie du jeu vidéo avec son logiciel de rendu 3D RTSquare. Renseignements : www. De quoi se faire un bon Pac Man en 2124… Cecropia passe à l’Acte e studio de développement indépendant et très alternatif Cecropia.cecropia. la conservation des jeux vidéo. Pour les autres. Téléchargement : www. www. lead programmeur de Mech Commander 2 (courant mai. The Act. pourront aussi être téléchargés dans la console.com). outil (toujours Microsoft) de gestion de complexité de contenu. la Nintendo DS. ensuite c’est un scénario de comédie romantique .fr RTSquare s’étend aux plug-ins La PS3 facile et sans zonage L a Games Developers Conference a apporté quelques éclaircissements sur la future PlayStation 3. www. d’explications de Frank Savage. directeur exécutif du développement jeux de Sony pour l’Europe.gamasutra. la différence est grande entre jouer sur un écran télé à distance et tout près d’un écran d’ordinateur. on le saura d’ici la fin de l’année. en outre.com/downloads. Dreamworks. On a ainsi appris que " tous les jeux de la PS3 seraient développés comme s’ils s’exécutaient depuis un disque dur ". Harrison a par ailleurs confirmé la rétro-compati- La Wii mal définie ? e manager général d’Electronic Arts. avec stage en entreprise de 6 mois et thèse à l’appui. sous cet angle.com L bilité avec les titres PS1 et PS2. Le programme s’appuie sur un appel d’offres aux entreprises de développement US et mondiales pour définir des procédures de stockage (soft) et des supports hard viables à une centaine d’années minimum. il peut être utilisé en conjonction avec la préversion du XNA Build de mars dernier. il est complet. Il a aussi révélé que la PS3 ne serait pas " zonée ". Pour les jeux de stratégie en temps réel. Sony continuera à s’accrocher à sa technologie Blu-Ray de " super DVD ". mais surtout à la HD : les éléments de jeu se visualisent sur la TV distinctement depuis votre fauteuil. L’étape suivante vient d’être franchie avec une version en plug-in pour l’incontournable 3DSMax. du moins en standard… Des jeux. Neil Young. " avec parfois quelques optimisations ". jusqu’alors uniquement en version standalone.L udique Pour l’Histoire Par Jean Michel Maman L a Bibliothèque du Congrès américain vient de lancer un " national digital preservation program " qui vise à assurer. tout sera pour le mieux dans le meilleur des mondes ! Réponse concrète en novembre… ou plus tard ! des difficultés que va poser cette console est que son affichage n’est pas HD (Haute Définition). L 'ESIEE et Gobelins.

Pour les plus accros. élément par élément. notamment avec la notion de pattern. l’usurpation. avant les premiers pas sur Ajax. en limitant les points théoriques. On pourra découvrir la sécurité par Kerberos. Une bonne manière de jauger ses connaissances Java. L’ouvrage tente d’aborder l’ensemble de l’outil. On apprend ainsi comment architecturer un bon code Ajax. Bref. par exemple). On débute le livre par ce qu’est une application web. son administration. On part des exigences avec la partie modélisation UML pour arriver au codage. Dommage qu’à 49 euros. à l’utilisation des différents outils. dépend de simples actions au quotidien. les scanner. On débute par la définition du nouveau web. mais il manque un véri- A Hacking interdit • Auteur : collectif • Editeur : Micro Application • Prix : 25. le livre propose plusieurs véritables applications avec le code et les explications nécessaires. les performances sont aussi abordés. . au risque de passer rapidement sur certaines fonctions (l’internationalisation.79 € n dit toujours que pour contrer le hacking. puis on touche à l’application en elle-même. chaque chapitre ayant son thème. comme la force brute. table guide de références et des cas concrets d’applications Ajax. les objectifs. Comme de vrais travaux dirigés. une partie se consacre à la conception de plug-ins.0. les virus et. la démonstration du développement J2EE Eclipse – Jboss s’appuie sur une étude de cas concrète. ou encore la réparation système. la journalisation. Cet ouvrage a l’ambition de les dévoiler aux utilisateurs (très) avertis. encore faut-il en connaître les bases. bien montrer… Les auteurs abordent aussi le spam. On débute par les outils de hacking et pour ce faire.Net 2e version. on passe à la protection des données et de la vie privée. sa bonne conduite. La gestion d’un projet informatique n’est jamais aisée et nécessite de nombreuses qualités. les pré requis nécessaires. un livre en forme d’aide-mémoire que l’on devrait avoir à portée de la main. L’auteur décide ici d’aborder le problème par le quotidien. De quoi passer de bonnes soirées ! C Java 5 Entraînez-vous et maîtrisez-le langage • Auteur : Alexandre Brillant • Editeur : Eni • Prix : 27 € ava 5 introduit de nombreuses nouveautés et un modèle de développement différent. D’autres techniques y passent comme la stéganographie et la manière d’effacer ses traces. une organisation solide.L ivres ASP . Un livre d’introduction qui permettra de débuter avec Ajax. Il s’agit d’une excellente base pour démarrer avec ASP. L’auteur n’hésite pas à avertir sur le méfait que peuvent avoir les méthodes utilisées et l’effet pervers que cela peut avoir sur le projet. les réseaux wifi. le stockage. Cette première étape passée permet de s’attaquer aux adresses IP pour les sniffer.Net 2. du développement des JSF et EJB. on peut développer des sites avec ASP. connues ou non. la technologie. tout en fouillant dans les entrailles du Tux ? O’Reilly vous propose une cinquantaine de nouvelles astuces. le client et le serveur. Chaque chapitre commence par la durée. Chaque fiche est indépendante et fonctionne selon le même principe. mais encore faut-il en trouver. La sécurité. les méthodes directes d’attaque. aucun CD-Rom n’accompagne l’ouvrage. que l’on soit développeur. Petit manque : pas de référence aux notions Web 2. même si les IDE Ajax ne sont pas présents. les aspects organisationnels. on dispose d’exercices et de QCM. il est temps de remplir sa bibliothèque d’ouvrages sur le sujet. L’auteur dissèque ensuite. On pose en quelques lignes le " problème " et ensuite on explique. Ce second tome se divise en 9 parties. Le propos reste toujours clair et est illustré de nombreux codes et copies d’écrans.Eclipse 3 pour les développeurs Java (Dunod) : Pour expliquer la programmation Eclipse. Dans la même collection : VBA Excel 2003 J Ajax en pratique • Auteur : collectif • Editeur : CampusPress • Prix : 49 € vec la folie Ajax. Un livre utile à tous ceux qui s’intéressent à la sécurité. présentant le modèle de développement de Javascript / Ajax. la collaboration Wiki. les auteurs mettent en garde : Javascript demande une réflexion.Net. bien entendu. puis au mail anonyme ou encore contre les caches que Google sait trop O Gestion de projet informatique • Auteur : Pascal Mangold • Editeur : Eyrolles • Prix : 12 € a collection "compact" d’Eyrolles permet en une centaine de pages d’acquérir l’essentiel du sujet.0 étape par étape • Auteur : George Shepherd • Editeur : Microsoft Press • Prix : 39 € i depuis la sortie de . et d’en aborder les divers aspects de développement. puis les concepts des applications ASP. Bien souvent. l’humain.Eclipse et JBoss (Eyrolles) : L’approche de l’auteur se veut avant tout pratique.Net. Ensuite. le tout accompagné d’indices. Programmez n°87 82 juin 2006 . Dès le début. Pour ce faire. Par François Tonic S Administration Linux à 200 % tome 2 • Auteur : collectif • Editeur : O’Reilly • Prix : 34 € omment maîtriser au mieux son système Linux. FreeNX. la réussite du projet. il faut connaître les techniques employées.Net 2. La fin de l’ouvrage se concentre sur les outils. dirigeant ou chef de projet ! L Ouvrages sur Eclipse . L’objectif est d’acquérir les fondamentaux de Java 5. les auteurs passent par un outil de virtualisation pour créer un environnement de test.

.

.

.L n mé o9 ( t b e e u r 0 Oc o r ) e t au s p r.

Ls zl n mé oa t e ( t b e ie e u r c u l Oc o r ) .

.

u l u o v t de s ) af q l t e 3 5 .A ONNE NT P F B ME D V ri é c o i es u ( g z ee fr t D ) es n l t n u e l ma a i n oma P F o er q e n ( r u i e q eeq es i or a rse t i n u .