1. Présentation▲
1-1. Généralités▲
La conférence JAX en est à sa dixième édition (en comptant
la WJAX à München) et représente un événement
incontournable outre-Rhin dans le monde Java.
Preuve de son succès, l'existence du JAX Magazine qui
satisfait la soif de connaissance des visiteurs qui
trouvent le temps trop long entre 2 éditions de la conférence.
La conférence EAKon est plus jeune et se déroulait
auparavant en automne. Elle a rejoint le JAX cette année,
vraisemblablement pour offrir aux visiteurs un choix plus
vaste de sessions.
L'EAKon traite des problématiques d'architecture mais
également du management et de la gestion de projets
informatiques d'entreprise.
Enfin, la nouvelle venue, la conférence Eclipse Forum Europe, se déroule également en parallèle et traite de tout ce qui touche à l'Environnement de Développement du monde Java.
Tout ce petit monde agrémente donc les journées
(et les nuits ...) des chefs de projet, ingénieurs,
développeurs, décideurs qui profitent de Keynotes,
Workshops, Sessions et BOF (Birds-of-a-Feather-Sessions).
Au bas mot, et pour donner quelques chiffres, il ne
s'agit ni plus ni moins de 146 sessions/BOF, 9 keynotes,
13 workshops d'une journée ou demi-journée, Spring Day,
Management Day, 5 déjeuners, 2 diners, des cadeaux, des
surprises, ... sans oublier les 162 speakers ainsi que les
55 exposants et sponsors.
1-2. Le site des conférences▲
Wiesbaden s'étend sur une superficie de 204 km2
pour environ 250 000 habitants. Cette ville semble
prédestinée pour accueillir ces conférences puisque pas
moins de 46 entreprises informatiques
(au sens Softwarefirm) y sont implantées.
Pour la petite histoire, le livret Agenda des
conférences nous apprend que le célèbre joueur de tennis
John McEnroe a vu le jour dans cette charmante ville
réputée pour ses thermes.
Les conférences ont eu lieu dans le centre de la ville, aux Rhein-Main-Hallen.
Les conférences ont eu lieu dans le centre de la ville,
aux Rhein-Main-Hallen.
Rien de spectaculaire comme locaux, mais les
organisateurs ont su apporter la touche nécessaire à
rendre le lieu convivial et attrayant. Jugez par vous même :
- Des salles pour certaines équipées en multiprises et disposant de tables, favorisant les travaux pratiques notamment dans le cadre de workshops
- Un bar, certes payant, vous proposant toute sorte de nourriture pour les petites soifs et les petites faims
- Un réseau WIFI (W-LAN) couvrant les lieux et permettant aux participants équipés d'un portable de se connecter à la grande toile
- Des PCs mis à disposition de ceux qui n'ont pas le privilège de disposer d'un portable et qui peuvent vaquer à leurs occupations/obligations entre les sessions
- Des espaces de détente (JAX Lounge, Eclipse Lounge) où les participants peuvent se détendre dans des sièges confortables, jouer au babyfoot, se faire masser, ...
- Les repas de midi pris en charge, ainsi que ceux du soir lors de journées à rallonge, sans oublier les collations à chaque pause.
Les locaux sont donc occupés sur 2 étages, ce qui représente 12 salles de taille variable pour les différentes sessions, ainsi que l'espace nécessaire aux exposants, à la restauration, etc...
1-3. Divers▲
Le regroupement des 3 conférences n'a pas pour effet de
restreindre les participants à l'une ou l'autre des
conférences. La souscription à l'une des conférences
entraine automatiquement l'accès aux autres !
Diverses formules cumulables ont été proposées dont la
réservation anticipée, les réductions de groupe pour les
entreprises. La semaine a été décomposée en 3 :
les Workshops du lundi, les conférences de mardi à jeudi
(tarifs pour 2 ou 3 jours), et les Workshops de vendredi.
Découpage | Réservation anticipée (+ groupe) | Réservation anticipée | Standard (+ groupe) | Standard |
---|---|---|---|---|
Workshops du lundi | 319 € | 349 € | 359 € | 399 € |
Conférences sur 3 jours | 859 € | 949 € | 949 € | 1049 € |
Conférences sur 2 jours au choix du mardi au jeudi | 629 € | 699 € | 719 € | 799 € |
Workshops du vendredi | 319 € | 349 € | 359 € | 399 € |
Histoire d'avoir une idée de ce que la semaine complète peut coûter :
Réservation anticipée (+ groupe) | Réservation anticipée | Standard (+ groupe) | Standard |
---|---|---|---|
1497 € | 1647 € | 1667 € | 1847 € |
Les tarifs peuvent paraître excessifs (surtout s'il faut
compter un déplacement/hébergement qui pour ma part m'aura
coûté un peu moins de 400 euros), mais les participants en
ont vraiment pour leur argent.
Un somptueux sac à dos à l'effigie des 3 conférences, un
stylo "Eclipse Forum Europe", un joli badge nominatif à
attacher autour du cou à l'aide d'un bandeau à l'effigie
de l'EAKon. Enfin un agenda complet ainsi qu'un bloc pour
la prise de notes.
Mais ce n'est pas tout, dans le sac à dos on trouve
également un exemplaire du Java Magazin édité par
Software&Support Verlag, un autre exemplaire de
Eclipse Magazin également édité par S&S Verlag,
sans oublier un CD de Netbeans 5.0 !
Quelques surprises également lors de la session de
clôture : plusieurs lots ont été attribués par tirage au
sort (cela allait d'un simple livre à une entrée pour
JAX20007, en passant par des licences logicielles,
sans oublier un iPod Nano.
De quoi regretter de ne pas avoir suivi ces événements, tous les participants deviennent automatiquement membres pendant 1 an du JAX Club. Les privilèges liés à cette appartenance sont les suivants :
- 10% de réduction pour une participation aux W-JAX 2006
- 10% de réduction pour une participation au Forum Eclipse Europe 2007
- 1 an d'abonnement à l'un de ses magazines publiés par S&S Verlag
2. Le programme▲
2-1. Les thèmes▲
Une première décomposition pourrait être faite selon les conférences. Ceci-dit, un découpage plus fin permet aux participants d'apprécier le contenu d'une session.
Code | Descriptif |
---|---|
E | Java Enterprise |
WA | Java Web Apps |
WS | Java Web Services |
EC | Eclipse (JAX) |
PAF | Patterns, Architectures, Frameworks |
MDD | Model Driven Development |
TO | Testing, Optimization |
JD | Java Desktop |
JB | Java Basics |
W | Web 2.0 |
X | XML |
OS | Open Source |
BOF | Birds-of-a-Feather |
SAR | Software Architecture |
SOA | SOA |
TPM | Teams, Process, Methods |
ALM | Application Lifecycle Management |
BI | Business Integration |
MDA | Model Driven Architecture |
ES | Enterprise Security |
DM | Data Management |
OM | IT Operations + Management |
EC | Eclipse Core |
RCP | Eclipse RCP |
DEV | Eclipse Development |
KNH | Eclipse Know-how |
PRP | Eclipse Project Parade |
Enfin, chaque session se voit affecter d'un niveau sur une échelle de 3.
2-2. Le caractère européen/international des conférences▲
La couleur était clairement annoncée pour les sessions du
Forum Eclipse Europe : l'anglais est de rigueur.
Même les conférenciers allemands ont joué le jeu et se
sont forcés à faire leur présentation en anglais.
En dehors des conférences du Forum Eclipse Europe, selon
la nationalité du conférencier (nous y reviendrons plus loin),
la session/keynote se déroulait en anglais et pouvait donc
permettre à un public non germanophone de profiter des
conférences (je pense là aux membres espagnols, suédois,
français, (...), des différents projets nominés pour
les JAX Award.
Certaines sessions avaient également cela de
particulier que le support était rédigé en anglais, mais le
propos était en allemand (avec ou sans accent).
Tout cela prouve la volonté d'élargir l'événement à toute
l'Europe et de ne pas se restreindre à l'Allemagne.
Mais il suffit de donner une liste non exhaustive
des personnalités présentes pour animer une keynote / session.
- Daniel Adelhardt : Sun Java Ambassador
- Adam Bien : consultant, directeur technique de BEA, membre des JCP
- Ralph Müller : représentant européen de l'Eclipse Foundation, ancien architecte IBM
- Eberhard Wolff : rédacteur pour de nombreux journaux, auteur de nombreux ouvrages, speaker lors de plusieurs conférences (dont JAOO), Java Champion, consultant chez Interface21 sur les systèmes répartis, les applications d'entreprise et Spring
- Mike Milinkovich : directeur exécutif de la Fondation Eclipse, ancien d'Oracle
- Craig R. McClanahan : Senior Staff Engineer chez Sun, inspirateur de Struts et de JSF
- Rod Johnson : grand inspirateur du framework Spring, expert reconnu de la plateforme Java EE, auteur, consultant, speaker, participe au JCP, Java Champion
- Ivo Totev : Vice President crossvision Product Marketing chez Software AG, ancien de SAP, ancien technology evangelist chez Sun
- Doug Clarke : Principal Product Manager - Oracle Toplink, ancien consultant sur les problématiques de mapping O/R en environnement J2EE, speaker et membre actif sur la toile
- Jason Weathersby : BIRT evangelist, membre du comité de management du projet BIRT, auteur de "Integrating and Extending BIRT", spécialiste en Business Intelligence
- ...
2-3. Les conférenciers / animateurs▲
Les conférenciers sont tous des professionels connus et
reconnus, pour une grande partie à l'échelle internationale,
habitués pour certains du JAX.
On y trouve un panel assez varié : cadres dirigeants de
grandes multinationales, acteurs majeurs de la communauté
(JCP, Eclipse, Spring, Apache, ...), consultants,
universitaires, indépendants, ...
2-4. Les sponsors, partenaires et exposants▲
La médiatisation du JAX est en partie le résultat de
partenariats avec des grands éditeurs tels que IBM,
CA, Microsoft, Oracle, SAP, Software AG,
Sun Microsystems, ...
mais également au travail de Software&Support Verlag
pour communiquer autour des événements (magazines,ObjectWeb,
annonces par des sites partenaires comme Developpez.com).
On retrouve les sponsors et partenaires parmi les exposants,
mais également d'autres sociétés allemandes / européennes
présentant leurs produits / services.
Nous pouvons notamment citer (le programme était
tellement chargé que les photos ont parfois été prises à
des heures extrêmes ;-) ) :
2-4-1. IBM▲
2-4-2. SUN▲
2-4-3. Oracle▲
2-4-4. Microsoft▲
2-4-5. Compuware▲
2-4-6. Interface21▲
2-4-7. Mathema▲
2-4-8. Et j'en oublie ...▲
Je m'excuse auprès des stands que je n'ai pas (pu) photographié (par manque de temps ou éléments perturbateurs), voici les quelques stands qui ont retenu mon attention :
- Wily Technology (CA) : leader sur le marché des applications de management d'entreprise (Introscope)
- xcentric GmbH : société suisse qui édite JAXFront, un générateur de GUI reposant sur XML
- Sofware AG pour la démarche SOA et CentraSite
- Quest Software GmbH mettait en avant sa solution d'Application-Performance-Management avec une démo
- SAP pour présenter NetWeaver
- Perforce Software pour sa solution de gestion de configuration
- ILOG , du classique (JRules, composants graphiques pour Eclipse, JSF)
- Realobjects pour PDFreactor qui est un moteur de génération de PDF reposant sur XML/XSLT, HTML et CSS
2-4-9. ainsi que la presse▲
On trouvait les stands de l'organisateur (entwickler.press), O'Reilly (qui faisait la promotion de la seconde édition de l'EuroOSCON qui se déroulera du 18 au 21 septembre à Bruxelles), Pearson Education.
2-5. Les JAX Innovation Award▲
Les JAX Innovation Award (1ère édition) avaient pour but
de promouvoir l'innovation en Europe et de récompenser les
projets faisant preuve d'innovation, de créativité,
d'élégance, et porteurs.
L'ensemble des dotations représente la somme de
20 000 euros (dont 10 000 euros pour le vainqueur).
Les projets retenus étaient les suivants (parmi 48 soumissions) :
- Bioclipse - an open source visual platform for chemo- and bioinformatics
- E-Chalk
- FrUiT - Research on Framework Understanding Tools
- JamaicaVM 3.0
- jLibrary
- push2you
- Rich Ajax Platform (RAP)
- Service-oriented Pipeline Architecture (SOPA)
- Spring Framework
- World Of Java
Le jury était composé des personnes suivantes :
- Daniel Adelhardt (Sun Java Ambassador, Speaker JAX)
- Adam Bien (IT-Consultant, Java Magazin-Autor, Speaker JAX)
- Erich Gamma (IBM Distinguished Engineer, Eclipse Java Development Tools Project Lead)
- Sebastian Meyen (Chefredakteur Java Magazin, Program Chair JAX)
- Bola Rotibi (Analyste chez Ovum)
- Spring Framework
- E-Chalk
- Bioclipse - an open source visual platform for chemo- and bioinformatics
- Rich Ajax Platform (RAP)
- World Of Java
Le prix du public (vote à main levée) a récompensé l'initiative Bioclipse - an open source visual platform for chemo- and bioinformatics.
2-6. Le JAX Jogging▲
Il y a des traditions qui perdurent et qui réunissent les gens. On a donc pu voir un regroupement de t-shirts noirs mardi et mercredi en fin d'après-midi parcourant les rues de Wiesbaden.
2-7. JAX Party▲
Lorsque la bière coule à flot et que les speakers se transforment en DJ !
3. Les sessions▲
Le programme était très chargé et le choix des sessions parfois
cornélien. Il y a eu l'une ou l'autre défection pour cause de
maladie, mais dans l'ensemble (du moins pour les sessions que
j'ai suivies) je suis rarement sorti déçu.
Si j'avais à établir un top 3 ainsi qu'un flop 3 (bien qu'il
soit difficile de parler de flop) des sessions (hors keynote
et workshops) que j'ai suivies, voici ce que j'y mettrais :
- BIRT
- Best Practices for Apache Cocoon
- Construction d'un framework autour d'Eclipse RCP mettant en place la stratégie orientée service
- Web Tools 1.5
- Tests unitaires avec FIT et FitNesse
- SSO Java avec Kerberos
Voici donc les keynotes/sessions/workshops auxquels j'ai pris part :
3-1. Lundi 8 mai▲
Première journée organisée autour de Workshops, du Spring Day et du Management Day.
3-1-1. Workshop Hibernate 3 et la persistence avec Java▲
Les workshop ont cela d'intéressant que les animateurs
font leur possible pour favoriser la mise en pratique.
Comme les organisateurs ont tout prévu (multiprises
en masse dans chaque rangée, tables), ce workshop sur
Hibernate 3 n'a pas échappé à la règle et a vraiment
été très plaisant à suivre.
- Fichier de configuration, utilisation dans le code, configuration des stratégies d'obtention des identifiants
- Gestion des relations entre objets
- Problématique d'héritage
- HQL
- API Criteria
- La session
Chaque thème a donné lieu à un petit TP basé sur les projets Eclipse que les animateurs avaient préparés !
Après avoir sondé l'assistance sur les thèmes que nous souhaitions approndir, les animateurs (ils étaient au nombre de 3) ont chacun traité l'un ou l'autre des sujets parmi les suivants :
- Les proxy et le lazy loading
- Les bonnes pratiques en architecture Client/Serveur
- La problématique de mapping de types utilisateurs
Seul reproche qu'on pourrait faire, ne pas avoir abordé l'aspect annotations, mais ce n'est pas forcement très gênant dans la mesure où l'utilisation d'un fichier xml est compatible avec JPA.
J'ai vraiment été impressionné par la qualité de la présentation et notamment des interventions d'Arno Haase qui déborde de passion et de dynamisme.
3-1-2. Managing Complex Enterprise Environments (Keynote)▲
Le but de cette première Keynote était de présenter,
dans le cadre du Management Day, à travers les solutions
proposées par Wiley Technology, une stratégie de gestion
d'un système d'information complexe.
La démarche et les outils présentés se focalisent sur
la surveillance de l'ensemble du SI. A l'aide d'un
tableau de bord temps réel, il est possible de détecter
très rapidement les interfaces rencontrant des problèmes,
mais aussi l'utilisateur ou le partenaire lambda qui
semble rencontrer un problème et anticiper.
Très intéressante comme présentation, quoiqu'un peu trop orienté management.
3-1-3. Fin du Spring Day▲
Ayant du choisir entre plusieurs Workshop, et étant donné que le Spring Day finissait plus tard, j'en ai profité pour passer voir ce qui s'y disait.
J'ai pu prendre la présentation de Christian Dupuis sur
le cas pratique d'un changement d'architecture J2EE
vers une architecture légère reposant sur Spring,
puis à un ensemble de questions/réponses que j'ai
malheureusement eu du mal à suivre étant donné que
je n'avais pas suivi les sessions précédentes.
Mais le rendez-vous avec Spring n'était que partie remise !
3-2. Mardi 9 mai▲
Le véritable lancement des conférences !
3-2-1. Session d'accueil▲
Sebastian Meyen, JAX Program Chairman, nous a chaleureusement accueilli et présenté les différents thèmes abordés par les conférences (jusqu'à 12 sessions en parallèle) en insistant sur Spring, SOA qui doit être vu comme un concept d'architecture et non rattaché à l'orienté objet, le Web 2.0 qui est finalement un joli coup marketing et une formidable opportunité de faire de l'argent, l'actualité de l'open source avec les différents rachats, ...
Côté IDE, Sebastian s'est tenté à sonder l'assistance
et Eclipse a sans surprise remporté l'unanimité.
Par contre, il a avoué être agréablement surpris
du nombre élevé de participants utilisant Netbeans.
Enfin, cela a également été l'occasion de
constater la chute inexorable de JBuilder
(très peu de mains levées).
3-2-2. Buy AND build ... (Keynote)▲
... A strategy for building applications that spans both packaged applications and custom development.
Christopher Hearn de chez SAP a traité de la
problématique des 2 courants actuels que sont
l'achat de solutions clés en main et le développement
de solutions spécifiques.
Selon lui, dans un métier comme le notre qui
nécessite de bonnes capacités intellectuelles et dans
un contexte de réduction des coûts et d'externalisation,
il est important de rassembler ces 2 mondes afin de
tirer le meileur parti d'un tel compromis.
Il a fait le rapprochement avec le modèle de travail
chez SAP qui doit également faire face à cette
problématique, et j'ai relevé quelques citations
intéressantes : "Plumbing is not enough.", "SOA is
essential for flexibility, but not enough.".
Tout ca bien entendu pour mettre en avant le
produit SAP NetWeaver qui se positionne comme une
Business Process Platform, ainsi que
SAP Netweaver Visual Composer.
En conclusion, il a insisté sur la nécessité de revenir à des valeurs de qualité et de créativité dans le travail quotidien des responsables informatiques qui bien trop souvent de nos jours se focalisent sur la réduction des coûts et se contentent de l'existant.
Petite anecdote, Christopher a rencontré sa femme dans la région ;-)
3-2-3. Java EE : toutes les nouveautés (E, WA, WS, PAF, JB)▲
Daniel Adelhardt a commencé son intervention par un
constat important : le temps nécessaire à
construire/spécifier les plateformes
(Java SE, Java EE, ...) augmente constamment.
C'est un vrai problème pour l'avenir et la réactivité.
Il ne faut bien évidemment pas oublier que l'un
des soucis majeurs de la spécification des nouvelles
versions des plateformes est la compatibilité
descendante. Un autre problème du marché est la
concurrence qui pousse les éditeurs à se distinguer et
à proposer des services allant au delà des
spécifications, au risque d'être intrusif par rapport
au standard.
A ce sujet, les tendances du moment pour le futur
concernent le scripting, ainsi que l'intégration
d'initiatives/frameworks.
Revenons en à Java EE 5 dont le mot d'ordre est la simplification.
- Simplifier le développement de WebServices
- IOC
- Simplifier la persistence
- Simplifier le développement web
- Disposer d'une compatibilité descendante avec J2EE 1.4
- Exploiter Java 5
Pour arriver au résultat que nous commençons à découvrir, la recette est la suivante : annotations + POJO + configuration par défaut.
Parmi les modifications fondamentales, il faut souligner
l'harmonisation des politiques de sécurité (Web/EJB)
qui par le passé étaient différentes.
La gestion du packaging a également été améliorée
par l'introduction des Bundled Libraries (répertoire /lib)
et Shared Libraries (extension du MANIFEST.MF).
Quant aux descripteurs de déploiement, après la
mode du tout xml, on s'est petit à petit rendu compte
que les descripteurs ont augmenté la complexité qui
finalement ne pouvait plus être maîtrisée sans des
outils comme XDoclet et les éditeurs. Désormais, seuls
les .rar nécessiteront encore un descripteur, même les
webapps pourront fonctionner sans web.xml !
Cependant, le support des fichiers de configuration
type xml est conservé et si l'option
"metadata-complete=true" n'est pas déclarée au niveau
annotations, le conteneur procédera à un merge entre
les informations issues des annotations et celles
définies par les fichiers xml (détails du merge
définis dans les specifications).
Le thème Dependency Injection s'accorde bien avec les
annotations et permet de simplifier sensiblement le
code. Plus d'appels JNDI, plus d'appels RMI explicites, ...
Bien entendu, là aussi il existe des alternatives
à l'infection avec un lookup simplifié.
La spécifications défini une dizaines
d'annotations communes appelées "Common Annotation".
Au rayon des nouveautés, on peut mentionner les éléments suivants :
- Servlet 2.5 / JSP 2.1 (peu de modifications, intégration des nouveaux concepts, ajout de wildcards pour les filtres, patterns multiples pour le mapping)
- JAX-WS 2.0 pour un support de nouvelles normes en remplacement de JAX-RPC (JAX-B 2..0, StAX, JAXP 1.3)
- EJB 3.0 : le gros chantier
Le but de la partie EJB 3.0 était la simplification du
code, des tests, la gestion du paramétrage des
transactions et de la sécurité, la compatibilité EJB 2.1,
mais surtout ... proposer une API qui ne se limite pas
aux conteneurs Java EE !
Ce qui donne au final de simples POJO, plus
d'exceptions farfelues. Les méthodes spécifiques
(du style ejbCreate, ...) se transforment en méthodes
annotées.
Daniel Adelhardt a également mentionné les
intercepteurs de méthodes, problématique que les
utilisateurs de Spring connaissent sûrement.
Il a également été question de Glassfish : le serveur
d'application Open Source de référence pour Java EE 5.
Cette initiative témoigne de la volonté d'impliquer la
communauté afin de faire avancer plus rapidement les
choses.
Pour l'anecdote, le qualificatif d'aquarium a été
retenu pour mettre en avant les différents tutoriels,
blogs, et autres ressources mis à disposition de la
communauté.
Pour finir, il a été question du futur : il y a bien
évidemment des JSR en cours, les thèmes pour le futurs
correspondent aux portails, aux applications composites
/ JBI (Java Business Integration).
En réponse au constat émis en début de session,
Daniel Adelhardt a évoqué la notion de Java EE Profile
qui correspond à la réflexion menée autour d'une
sectorisation permettant de réduire le temps nécessaire
à sortir une nouvelle plateforme (dans la continuité,
la sortie d'une nouvelle version de Java EE serait
estimée à 2009-2010). Actuellement, les travaux en
sont au stade de brainstorming.
3-2-4. Netbeans 5.0 : une IDE complet (E, WA, WS, PAF, TO, JD, JM)▲
Netbeans a été adopté par Sun voilà maintenant 6 ans 1/2. Pour la petite histoire, il a vu le jour en 1996 dans le cadre d'un projet étudiant à Prague, qui a donné lieu à la création d'une startup.
Après des débuts difficiles, la première version
sérieuse (version 4) fixe les bases et se repose sur ANT.
Aujourd'hui, tout comme Eclipse, Netbeans est
plus qu'un simple IDE (au passage gratuit, OpenSource) :
c'est une plateforme (donnant lieu à des initiatives
telles que le Rich Client).
Les points fort de la version actuelle (5.0)
sont Matisse (éditeur puissant WYSIWYG),
le plugin collaboratif, le PDT, le profiler.
La version 5.5, imminente, apporte son lot de nouveautés : notamment la prise en charge de Java SE 6, de Java EE 5, UML, BPEL.
Quant au futur, il a été question de l'intégration du projet Jackpot (Gosling & Tom Ball) pour un refactoring programmable qui pourrait par exemple donner lieu à des refactorings de code du type SWT <-> SWING.
Jens Trapp (Sun) a ensuite présenté Java Studio Creator et notamment ses fonctionnalités visuelles de construction d'applications web :
- Drag and Drop
- Data-binding visuel
- Modélisation graphique de la navigation
3-2-5. Apache iBatis : simplifier la persistance (E, PAF)▲
iBatis est finalement assez peu connu et cette session a été l'occasion pour moi de comprendre un peu mieu dans quel cas iBatis peut s'avérer intéressant à utiliser.
Tout d'abord, l'intervenant a précisé que iBatis n'était
pas comparable à des ORM comme Hibernate ou TopLink,
il recommande de ne pas utiliser iBatis seul, mais par
exemple de remplacer la partie DAO par Spring DAO
qui, associé au framework SQL Maps constitue une bonne
base de travail. Enfin, chose davantage connue,
iBatis prend beaucoup plus de sens pour des applications
où les opérations de lecture prédominent.
Il est également à noter qu'il existe une
déclinaison .NET de iBatis.
iBatis est un framework intéressant lorsqu'on n'a pas
la main sur le modèle physique (MPD) et s'avère très
flexible face aux changements de MPD.
La présentation reposait sur 4 thèmes :
- La définition des objets
- Le mapping
- La configuration
- L'utilisation
Pour ceux qui s'intéresseraient à iBatis, sachez que
c'est un framework très riche qui supporte également
le chargement de grappe, le lazy loading (pour l'instant
la stratégie ne peut pas être définie localement),
les batchs, les procédures stockées, l'utilisation de
caches, la correspondance entre des types utilisateur
et une table (TypeHandlerCallback) comme par exemple
pour le type boolean, les clés autoincrémentées et
autres séquences, ...
iBatis est finalement une belle encapsulation
de JDBC, notamment pour la construction de requêtes
dynamiques (balisage plus élégant que les if/else en
Java, ainsi que la distinction entre les paramètres
identiques à ceux utilisés dans les PreparedStatement
(notation #param#) et la construction dynamique de
clauses (notation $whereClause$).
J'ai énormément apprécié la présentation faite par Guido Schmutz, sa rigueur dans le code SQL conforme à la norme, et son bel accent suisse ;-) Notons également que c'est bel et bien l'implémentation iBatis du PetStore qui est la plus performante !
3-2-6. Struts and JavaServer Faces (WA, PAF, W, OS)▲
Si on m'avait dit en début d'année que j'assisterai
à une session donnée par Craig R. McClanahan (Sun)
qui n'est plus à présenter, j'aurais signé tout de suite !
C'est désormais fait grâce à cette session sur le
futur de Struts et la présentation de JSF. Craig étant
à l'initiative des deux framework, sa présentation
reposait sur une comparaison.
Craig a notamment annoncé la release de Struts 1.3 comme imminente, version majeure qui met en place le pattern Chain of Responsability pour le RequestProcessor afin de solutionner le problème de l'extension/personnalisation (utilisation des Commons Chain).
Concernant JSF, et ce afin de fixer plus clairement les
choses, JSF ne se limite pas au HTML : il repose sur
des "render" qui ont été introduits afin de gérer
l'abstraction du support.
Autre notion majeure chez JSF, les listeners
qu'il est possible des placer sur les composants
(ValueChanged, Click, listeners perso).
Contrairement à Struts, JSF ne se limite pas à
des form-beans, il permet d'associer n'importe quel
bean à n'importe quelle portée.
La partie navigation s'inspire fortement de Struts,
à quelques détails près : l'information sur l'action
qui a déclenché l'appel, la particularité du retour
"null" (cf. ActionForward) qui pour Struts est
interprété comme l'ordre de ne pas envoyer le flux,
alors que pour JSF il donne l'ordre de réafficher
la page.
De la même manière, JSF s'inspire de la JSTL pour
introduire son propre Expression Language et supporte
la notation pointée.
Pour illustrer, deux petits exemples :
<
h:outputText value=
"#{foo.bar.baz}"
/>
<
h:commandButton action=
"#{logon.authenticate}"
/>
Parlons également de Shale qui est une implémentation de JSF reposant sur Struts 1.x, Tiles (en mode standalone), Jakarta Commons Validator, des composants supportant AJAX (non liés à Shale, donc réutilisables), supportant l'utilisation (optionnelle) des annotations. Shale n'est pas à confondre avec Struts (dénomination exacte : Struts Action Framework) qui se focalise sur la technologie JSP et qui devrait être fusionné avec WebWorks pour donner dans le futur Struts Action Framework 2.0. En effet, Struts Shale est une implémentation de JSF et ne se limite donc pas aux JSPs.
3-2-7. The State of Web Frameworks (Keynote)▲
Craig, encore lui, a repris lors de cette keynote
l'historique des frameworks java orientés web, en
partant de l'API Servlet pour aller jusqu'à des
frameworks tels Struts et JSF.
Entre temps, il affirme que pas moins de 50
frameworks Java pour le web ont vu le jour ...
difficile de faire un choix.
Il a également insisté sur l'importance en terme
d'architecture de l'indépendance de tels framework par
rapport aux objets dits métier, mais aussi par rapport
à la stratégie de persistence.
Afin d'illustrer les deux courants en matière de
conception, il nous a présenté les 2 stratégies que
sont le Front Controller Pattern (cf. Struts) et le
View Helper Pattern (cf. JSF) pour finalement conclure
qu'elles ne sont pas si éloignées que ça l'une de
l'autre.
Enfin, il a terminé en parlant de l'incontournable sujet du moment : AJAX qui en soit n'apporte rien de nouveau mais qui s'intègre de plus en plus aux frameworks.
3-2-8. Introducing Eclipse Callisto (Keynote)▲
Mike Milinkovich était présent pour communiquer autour
de l'initiative Callisto.
Bien loin du pari de l'an passé sur le nombre de
téléchargements de la release d'Eclipse, cette
initiative a un véritable but : regrouper 10 projets
majeurs afin de stabiliser l'ensemble dans la plateforme
de développement qu'est Eclipse et éliminer pour les
utilisateurs un certain nombre de problèmes de versions.
- Business Intelligence and Reporting Tools (BIRT) Project
- C/C++ IDE
- Data Tools Platform
- EMF
- GEF - Graphical Editor Framework
- Graphical Modeling Framework
- Eclipse Project
- Eclipse Test and Performance Tools Platform Project
- Eclipse Web Tools Platform Project
- VE - Visual Editor
Le but était aussi de nous sensibiliser à la complexité
de ce projet (synchroniser 10 projets n'est pas chose
facile, encaisser la charge de téléchargement doit
également se préparer) et de nous encourager à
participer en testant les releases intermédiaires et
en rapportant les bugs identifiés.
Quant à savoir si ce projet aboutira à un produit
de qualité, rendez-vous le 30 juin pour le savoir ...
Mike n'est pas avare d'anecdotes et de citations, en voila quelques unes pour votre plus grand plaisir :
- "This is not a single product, this is not Windows Vista. How can I prove it ? We will sell it !"
- "2 day late is not too bad, ask Microsoft." (en référence à la release de Callisto prévue pour le 30 juin au lieu du traditionnel 28 juin)
- Traduit par mes soins : "Vous auriez vu la tête de notre webmaster lorsque nous lui avons raconté que nous avions l'intention de faire une release simultanée de 10 projets." (selon Mike, la charge se situe constamment à 97%, jour et nuit, en semaine et en week-end)
- Traduit par mes soins : "Pourquoi toujours faire une release fin juin ? Parce que en tant que canadien, tout comme la majorité des développeurs d'Eclipse, nous avons tous bien mieux à faire en été que de développer Eclipse."
3-2-9. Tout ce que vous avez toujours voulu savoir sur les certifications (TPM)▲
Le but de cette "Night school" sur les certifications était de comprendre l'intérêt des certifications, d'analyser ce marché et la vision qu'en ont les visiteurs du JAX (échantillon représentatif) sondés par les animateurs. Actuellement, la marché de la certification représente environ 120 entreprises délivrant des certifications pour plus de 500 différents "diplômes". Prometric est l'acteur majeur de ce marché en tant qu'organisateur d'examens.
- Suivre des cours
- Lire un livre
- Lire les spécifications (si adapté et si elles existent)
Les animateurs se sont focalisés sur les 3 certifications suivantes et nous ont distillé des informations intéressantes et des liens fort sympathiques.
- OCUP : OMG Certified UML Professional (3 niveaux pour UML 2.0, un timing serré : 80 questions en 90 minutes pour le premier niveau, disponible en anglais ou en japonais)
- JAVA : 8 certifications orientés technologie, liées à la version de la technologie, garantie à vie, des prérequis entre les certifications (mais non liés à la version)
- PMI/PMP : Project Management Institute / Project Management Professionnal (certification de haut niveau, demande comme prérequis 35h de formation ainsi qu'un certain nombre d'heures d'expérience, 200 questions en 4 heures, une durée de vie limitée pouvant être entretenue par le suivi régulier de cours)
3-3. Mercredi 10 mai▲
Une journée très chargée avec notamment la consécration de Spring lors des JAX Award.
3-3-1. Single-Sign-On avec Java et Kerberos (E, PAF, ES)▲
L'introduction d'un SSO a des effets bénéfiques.
L'utilisateur perd moins de temps à s'identifier
constamment, il augmente donc sa productivité.
L'administration est rendue plus facile et centrale.
Il y a cependant des inconvénients de taille :
si le serveur sur lequel repose le SSO est hacké,
l'impact est fort.
Le schéma directeur d'une solution de SSO se décompose de la manière suivante :
- un stockage local d'informations de manière cryptée (ex. : cookie)
- une centralisation
- un système de ticket : serveur d'authentification qui délivre un ticket
Kerberos est un système d'authentification distribué
qui implémente la RFC 1510, indépendant de la plateforme,
il est le seul à implémenter le protocole GSSAPI
(Generic Security Services API) et s'appuie sur une
base de "Principal" (ex. LDAP ou Active Directory) pour
délivrer un ticket.
Les inconvénients d'un tel système se situent
notamment au niveau du déploiement d'applications
(les clés doivent être déployées au moins une fois vers
les services), au niveau de la synchronisation des
heures (un écart de plus de 10' donnera lieu à des
dysfonctionnements), et enfin au niveau du paramètrage
nécessaire dans le cas d'architectures mettant en
jeu des firewalls.
En pratique, la mise en place d'un SSO en environnement Java basé sur Kerberos peut se décliner de deux façons et ne concerne actuellement que les applications standalones.
- JAAS + Kerberos
- Java GSS-API (RFC 2853) implémenté par Kerberos + JAAS
Mustang (Java 6) donnera lieu à quelques avancées en matière de SSO puisqu'il existe une JSR destinée à proposer une implémentation native de GSS/Kerberos, ainsi que l'authentification Http via SPNEGO (Simple & Protected GSSAPI Negotiation Mechanism).
Enfin, pour ceux que Kerberos intéresserait, O'Reilly propose un livre sur le sujet. Sachez cependant qu'il est 100% Kerberos et n'est donc pas spécifique à la plateforme Java.
3-3-2. BIRT : The Eclipse Reporting Framework (PRP)▲
Session remportant un grand succès (plus de 150 personnes
dans une salle qui pouvait en accueillir un peu moins)
avec beaucoup de novices dans l'assistance, cette
session a été sacrément bien menée par Jason Weathersby.
Jason nous a littéralement innondé de démos et a
insisté sur le caractère Open Source de ce projet.
Parmi les fonctionnalités abordées, la possibilité de
définir un DataSet sur plusieurs bases de données, la
vue Library Explorer qui permet la
réutilisation/centralisation (par exemple dans le cas
d'une css commune).
Il nous a également parlé des différents formats
supportés (HTML avec gestion de pagination, PDF reposant
sur iText, exports CSV), du support des TOC et des
favoris, de RCP, de liens entre les états avec passage
de paramètres notamment.
BIRT repose sur 2 modes de scripting : un scripting
Javascript (Mozilla Rhino), et un scripting Java
(support du debug au passage).
Le scripting Javascript permet par exemple de
mettre en place très facilement une condition sur la
base d'un paramètre et de basculer dynamiquement d
'environnement (développement, production, ...).
Le scripting Java permet de traiter des événements
au rendering comme par exemple des événements sur les
tables (calcul d'une moyenne de valeurs) et sur les
lignes (mise en forme de la ligne en fonction de la
comparaison entre la valeur représentée et la moyenne
calculée).
Jason nous a également rapidement présenté le support d'Hibernate et notamment le développement d'états en utilisant le langage HQL.
En conclusion, il a insisté sur le fait que BIRT n'est pas un simple outil, c'est avant tout un framework que vous pouvez étendre !
3-3-3. Aligning IT with Business Goals through SOA Using IBM Eclipse Based Tools (Keynote)▲
Robin Bater nous a présenté sa réflexion sur les liens
intimes entre la flexibilité d'un business et celle de
l'infrastructure technique.
SOA doit selon lui impulser un changement dans la
relation entre le métier et l'informatique : avant, les
contraintes étaient dictées par les IT; désormais, la
technologie est en mesure de répondre aux exigences des
gens du métier et les IT ne peuvent plus se dérober.
Il a également tenu à insister sur la distinction nécessaire entre les Web Services et SOA car SOA est un concept d'architecture contrairement aux Web Services qui sont une technologie.
En tant que leader sur la marché (44%), IBM matérialise
sa stratégie sous la dénomination de "IBM SOA Foundation"
et Robin souhaite profondemment que SOA soit désormais
adopté en masse.
Comme arguments, il a parlé de stabilité et de
bests practices qui témoignent que la route est
désormais dégagée.
3-3-4. Tests de performance et de montée en charge avec JMeter (E, WA, TO, JB, X, OS)▲
Les compétences requises pour mettre en place des tests de performance et de montée en charge ne sont pas à prendre à la légère :
- pouvoir comprendre le besoin fonctionnel
- connaître l'architecture en place
- avoir un minimum de connaissance du langage de programmation
- connaître la théorie des tests et ses outils
- disposer de solides capacités de communication
JMeter est un outil éprouvé (version 1.0 en 1999,
actuellement en 2.1.1) qui se destinait initialement
à Apache JServ.
JMeter est un outil ouvert et extensible, ce que
se sont efforcé de nous montrer les intervenants,
simple et intuitif, supportant de nombreux protocoles.
Une alternative sérieuse à JMeter est Grinder.
Les inconvénients de ce produit mentionnés par les intervenants sont les suivants :
- recquiert beaucoup de ressources
- pas de tests possibles en HTTPS
- pas de gestion fine de plusieurs plans de test
3-3-5. Eclipse Web Tools 1.5 and AJAX (DEV, ALM, PRP)▲
Cette session a été l'occasion de faire un bilan sur WTP
qui avait pêché de robustesse dans sa première version
(beaucoup de corrections de bugs).
WTP, projet majeur intégré à la future release de
Callisto, a donc été revu dans sa version 1.5 en matière
d'utilisabilité et d'outillage, ainsi que mis à jour
avec les nouvelles versions des APIs supportées
(par exemple Axis 1.3).
Au rayon des fonctionnalités (dont certaines c onstituent des nouveautés) :
- un éditeur de structures (XML)
- la complétion dans le code CSS
- l'implémentation de QuickFixes pour les déclarations XML
- le support du debug (y compris des JSPs) pour tout serveur compatible avec la JSR 45
- la possibilité de définir soit même son serveur Java EE par xml (très utile en terme de mise à jour)
Un autre thème abordé était AJAX et ATF/ATP (Ajax
Toolkit Framework, Ajax Tools Platform) qui propose
différents outils permettant de développer des pages
DHTML, de l'AJAX, des plugins pour utiliser différents
outils AJAX et/ou différentes librairies.
En terme de vérification de syntaxe, cette
plateforme propose un Javascript Syntax Validator
basé sur Rhino et JSLInt.
La plateforme est structurée en "personalities"
(actuellement Rico, Zimbra) ce qui permet de l'étendre
à de nouvelles "personalities". Elle propose ainsi des
templates, des patterns de code, des wizards, ...
Enfin, il est à noter la présence d'un debugger Javascript ainsi qu'un navigateur Mozilla intégré.
WTP proposera également dans sa version 1.5 un outillage autour de JSF 1.1 et 1.2, avec notamment un éditeur avancé du faces-config et le support d'EL.
Dernier thème abordé, RAP (Rich AJAX Platform) qui est
un projet actuellement en incubation et qui repose sur
OSGI et W4T (ce dernier s'inspirant fortement de SWT)
avec la notion de rendering kits permettant une
indépendance vis à vis du navigateur et limitant
l'écriture de code JS/CSS/AJAX.
L'un des principaux problèmes de cette plateforme
est la gestion de la mémoire qui peut très vite devenir
chaotique.
Jochen Krause a également mentionné un projet en
cours d'étude : ESWT pour Embedded SWT.
3-3-6. Intégration de l'ALM (Keynote)▲
Microsoft n'était pas uniquement présent en simple
exposant/partenaire, il y a effectivement eu une
Keynote (ainsi qu'une session) par Microsoft.
Lothar Wieske de Microsoft Deutschland GmbH nous a
fait une présentation de Microsoft Visual Team System,
de la démarche et de l'architecture du produit.
J'avoue avoir été relativement surpris par le nombre de
participants à cette Keynote identifiés comme
utilisateurs de Visual Studio, à croire que le mythe
du professionnel maîtrisant à la fois les technos Java
et Dotnet n'en est pas un...
Concernant la présentation, le but du produit
présenté est la satisfaction des différents acteurs
d'un projet (chef de projet, architecte, développeur,
testeur, ...) en jouant sur l'intégration et le
regroupement des informations.
Le rapport avec le JAX ? Figurez vous qu'il existe un plugin eclipse proposant de gérer un projet Java avec Visual Team System.
3-3-7. JAX Award▲
Le déroulement des JAX Award a été le suivant :
- 2 à 3 minutes de présentation de chaque projet nominé
- remise des Award des places 5 à 1
- vote du public
Rod Johnson est arrivé à point nommé pour recueillir l'Award suprême remporté par le framework Spring : 10 000 euros en espèces (comprenez de l'argent et pas des prix).
3-3-8. Escaping the Technology Cycle (Keynote)▲
Rod Johnson n'est plus à présenter, son savoir faire non plus.
Le propos de cette Keynote était la maîtrise de
notre environnement technologique, la stabilisation
des concepts, l'indépendance, les enjeux pour
l'entreprise. Rod en a profité pour mentionner
SCA (Service Componed Architecture) qui ne se limite
pas uniquement au monde Java.
Pour une entreprise, la maîtrise et la stabilité des
technologies est souvent le frein à l'innovation et
à l'exploitation des technologies les plus récentes.
L'intérêt pour l'entreprise se situe à plusieurs
niveaux : premièrement l'importance de collaborer
avec les éditeurs (partenariats) afin de pouvoir
maîtriser le périmètre technologique, en second lieu
la standardisation des concepts donnant lieu à la
construction d'applications modulaires et évolutives.
Les travaux réalisés dans le cadre de Java EE 3.0
apportent une première réponse aux entreprises à
travers la simplification et le retour à des notions
originelles tel l'Objet avec un grand O.
Rod a souligné que le concept de POJO n'est pas
spécifique à Java, il se décline par exemple sous la
dénomination PONO pour Dotnet (cf. Spring.Net) et son
message a été clair : "Le POJO est mort, vive l'Objet".
Une citation intéressante à ce sujet : "JUnit is a
very good sniffer and if something smells good in a
unit test, it's certainly a POJO."
Le futur est donc aux concepts tels que Dependency
Injection, Aspect Oriented Programming.
Cependant attention à ne pas tout mélanger :
"Annotations should express concepts, not
implemented strategies."
3-4. Jeudi 11 mai▲
Les dernières sessions/keynote et la session de clôture.
3-4-1. Best Pratices for Apache Cocoon (WA, PAF, W, X, OS)▲
Cocoon est un framework Web éprouvé, lancé en 1999
(XML publishing framework), l'un des projets Apache les
plus importants, suivi et supporté par de grandes
entreprises.
Cocoon a l'avantage d'être stable, il y a néanmoins
un pauvreté au niveau de la documentation et la mise en
place de ce framework est plutôt adaptée à des gros
projets impliquant notamment différents spécialistes :
cf. SoC (Separation of Concerns, aboutir à une séparation
permettant d'identifier des rôles et de favoriser la
parallélisation du travail).
En outre, Cocoon est orienté composants
(Apache Avalon/Excalibur) et intègre un certains nombre
de frameworks (Xalan, Xerces, FOP, Batik, POI, ...)
tout en facilitant l'intégration d'autres composants.
Un peu de vocabulaire : niveau flux, Cocoon repose sur
les JxTemplateGenerator et JxTemplateTransformer.
Côté formulaire, Cocoon repose sur le CForms framework
ainsi que sur Flow-Script (Javascript côté serveur)
ainsi qu'Avalon pour la configuration, le monitoring
et le logging.
Le framework CForms permet d'avoir une approche
composants par l'intermédiaire d'une définition de
composants typés (y compris les labels), une définition
de template (par exemple HTML), et un binding
DTO <-> formulaire.
En matière de développement, Coocon s'intègre à Eclipse (Run/Debug/Build) et se teste bien avec JUnit et AntEater.
Pour le futur (version majeure 2.2), sont prévus les éléments suivants (support Java 1.4 / Servlet 2.3 ou supérieurs) :
- hot-deployement
- résolution des dépendances (jars)
- reconfiguration
- remplacement d'Avalon par Spring avec compatibilité descendante
- mise en place de Maven 2
3-4-2. Mise en oeuvre d'une stratégie orientée service avec Eclipse RCP (RCP)▲
Cette session s'est révélée extrèmement intéressante
d'un point de vue démarche.
Les deux intervenants n'en sont pas à leur première
réalisation d'une abstraction orientée service et nous
ont donc présenté leur réflexion et leur travail
appliqué à la plateforme RCP d'Eclipse.
Après une courte introduction sur le client riche et sont utilité, ils nous ont présentés les différentes philosophies d'applications qu'ils ont rencontrés au cours de leur expérience :
- applications orientées transactions
- applications orientées document
- applications orientées processus
Le client riche répond aux besoins exprimés par la
dernière philosophie, notamment en terme d'utilisation
dans le cas d'applications fortement utilisées (pour
ne pas dire à longueur de journée).
En terme d'architecture, il leur a donc semblé
intéressant d'identifier les composants issus d'Eclispe
sur lesquels de telles applications pourraient se reposer :
- Une fenêtre type éditeur correspond bien à un cas d'utilisation (micro flow)
- Une vue correspond à un regroupement logique de cas d'utilisatiosn (macro flow) et favorise la navigation, l'affichage d'informations complémentaires par rapport à l'éditeur en cours, ou encore une liste de processus en cours (permettant de fermer des éditeurs sans perdre la saisie pour autant)
- Une perspective a également une fonctionnalité de navigation, mais à un niveau plus élevé (sélection d'applications), elle peut également permettre de basculer l'organisation générale de l'interface, et peut à la fois être piloté par l'application et par l'utilisateur
- Les assistants ne sont pas vraiment utiles, si ce n'est pour des besoins ponctuels
- Le multi-page editor (onglets) permet une navigation fine au sein d'un cas d'utilisation (cependant il en résulte une faiblesse de contrôles dans la navigation)
- Enfin, la consultation de divers documents (Word, images, ...) est également intéressante
Tout ce travail leur a permis d'aboutir à une
RCBP (Rich Client Business Platform) actuellement au
stade de maquette avec une abstraction s'inspirant
fortement de Struts (configuration xml au niveau
Macro/Micro pour la navigation).
Tout cela repose bien entendu sur les concepts de
plugin et leur architecture laisse apparaître un
"Plug-in-Flow-Registry" (un seul point d'extension)
qui centralise les informations et qui est capable de
communiquer avec les différents plugins représentant
les macro/micro flows.
Vraiment très intéressante et enrichissante comme session !
3-4-3. Maîtriser SOA (Keynote)▲
Encore une session sur SOA, cette fois plutôt orientée
technique et BPEL (Business Process Execution Language).
Ivo Totev de Software AG (The XML Company) a
présenté BPEL comme un standard de communication entre
les Business Analysts et les architectes/développeurs.
Sans écrire la moindre ligne de côté, et à l'aide d'un
éditeur BPEL intégré à Eclipse, il nous a montré comment
réaliser un mapping BPEL sur un bouton afin d'appeler
un service de récupération d'informations et d'afficher
ces informations dans une liste.
La démo repose sur un repository (CentraSite) qui
centralise les informations concernant les différents
webservices. A partir d'Eclipse, il lui a été possible
de communiquer à CentraSite l'utilisation d'un service,
ce qui a eu pour effet d'empêcher au niveau du
repository la suppression du service.
Ivo Totev a profité de sa Keynote pour faire le constat
suivant : l'Europe tend à devenir de plus en plus
consommatrice, passive (notamment en raison de
contraintes d'exportation telles la langue ou les lois),
ce qui n'est pas bon pour notre écosystème.
On a donc lancé un appel aux décideurs européens
pour examiner profondemment les opportunités de
business qui leur sont mises à disposition par les
sociétés européennes innovatrices et actives.
3-4-4. Essential EJB 3.0 Persistence in Practice (Keynote)▲
Doug Clarke nous a fait une présentation complète
de JPA lors de cette Keynote.
On y apprend donc les principes/alternatives de
configuration (annotations et/ou xml), le JPQL,
les stratégies de transaction (JTA ou RESOURCE_LOCAL).
- cible les bases de données et est optimisé pour cette cible
- pour Java EE, mais pas seulement !
- pouvant être étendu par les éditeurs
En matière de requêtage (querying), il existe 3 stratégies : les finders (par id ou idClass), le JPQL, et le SQL.
Doug nous a également parlé du projet Eclipse DALI
(outil simplifiant le développement JPA) et démontré
son utilité lors d'une démo.
Enfin, il nous a parlé de Glassfish pour lequel
l'implémentation retenue est Toplink Essentials
(qui repose sur le même Core Engine Toplink que la
version commercialle Oracle Toplink).
3-4-5. Continuous Performance Management (E, TO, ALM)▲
Qu'est ce qui se cache derrière un tel nom ?
En général, les tests de montée en charge ne
passent que très rarement la théorie et au mieux sont
réalisés quelques jours avant la mise en production
(avec les conséquences qu'on peut imaginer). Le but de
cette session était de sensibiliser les participants à
cette problématique de management continu de la
performance qui repose sur les concepts suivants :
- une automatisation en "no touch" des tests de charge et profiling
- une comparaison rapide de l'impact sur la performance entre différents builds successifs
- une documentation et un reporting
- l'établissement de benchmarks
Tout cela n'est évidemment pas aisé à mettre en place,
demande du temps et des compétences, mais une fois en
place, il n'y a plus grand chose à faire à part tirer
bénéfices de l'outillage.
Au rayon des outils s'inscrivant dans cette
démarche, citons Ant, Maven, JUnit, TestNG, HttpUnit,
Cactus, JUnitPerf, Subversion, CVS, CruiseControl,
JMeter, JProbe, PerformaSure.
Après nous avoir rapidement présenté ces différents
outils, et notamment JMeter, CruiseControl, JProbe et
PerformaSure, Mirko Novakovic nous a montré comment
cela se passait en pratique et sa démo fût relativement
impressionnante et encourageante pour mettre de telles
choses en place.
En pratique, la démarche consiste à :
- établir des scénaris réalistes
- identifier les interfaces critiques pour les mesurer (base de données, webservices internes/externes, SAP, ...)
- construire sa solution CPM
- "no touch" quotidien pour détecter le plus rapidement possible les problèmes de performances et les localiser
3-4-6. Tests unitaires avec FIT et FitNesse (E, PAF, TO)▲
Dernière session de ce JAX 2006, les tests unitaires.
Ce fût pour moi l'occasion de découvrir une
approche simple des tests unitaires basée sur FIT et sa
déclinaison FitNesse basé sur Wiki.
L'avantage de FIT se situe à plusieurs niveaux :
- encourage la rédaction de documentation utile à la fois pour les tests et pour les spécifications
- permet à des gens fonctionnels de rédiger des tests exploitables par le framework
- framework se laissant aisément étendre
La présentation était moins interactive que les autres sessions auxquelles j'ai pu assister, je n'ai donc pas retenu tout ce qui s'est dit mais je ne tarderai pas à m'intéresser de plus près à ce framework, d'autant plus qu'il existe une intégration à Spring.
3-4-7. Cérémonie de clôture▲
La cérémonie de clôture a donné lieu à un tonnerre d'applaudissements, de chaleureux remerciements, une satisfaction générale côté organisateurs et participants, ainsi que la distibution de nombreux lots/cadeaux (livres, logiciels, places pour le WJAX, places pour le JAX 2007, ainsi qu'un iPod Nano).
3-5. Vendredi 12 mai▲
Journée orientée Workshops, les lieux paraissaient vraiment déserte par rapport aux précédents jours et les organisateurs étaient déjà bien occupés à ranger.
3-5-1. Workshop Spring Framework : simplifier Java Enterprise▲
Nous y voila, la dernière journée, et encore un Workshop
orienté pratique (certes un peu moins que celui de lundi,
la faute à un sujet si vaste).
Eberhardt Wolff avait préparé une série de DVD
(pas suffisamment compte tenu de l'affluence) avec
l'installation d'une VMware (Suse) permettant de
travailler directement sur différents projets Eclipse
avec une base de données MySQL.
En pratique, voici les sujets qu'il a eu le temps
d'aborder :
- Dependency Injection
- AOP
- Transaction et accès aux données
- RMI et autres protocoles
L'éditeur de fichier xml de configuration Spring intégré à Eclipse est vraiment une pure merveille, il détecte un grande partie des erreurs, et les erreurs qu'il n'est pas capable de détecter vous sont signifiées de manière très explicite à l'exécution. Le message est tellement clair qu'il est impossible de ne pas comprendre où l'erreur se trouve.
Le triplet Spring DAO 2.0, Generics, varags simplifie également énormement l'écriture de la couche d'accès aux données !
On en redemanderait (si l'épuisement dû à une semaine bien remplie ne l'emportait pas sur les organismes) !
4. L'avenir▲
L'ApacheCon Europe 06 aura lieu du 26 au 30 juin à Dublin.
Le W-JAX 2006 aura lieu du 6 au 9 novembre 2006 à Munich.
Le JAX 2007 / EAKon 2007 / Eclipse Forum Europe 2007 aura lieu du 7 au 11 mai 2007 à Wiesbaden, rendez vous est pris !
5. Remerciements▲
Je tiens à remercier l'équipe de Software & Support Verlag pour la qualité de leur travail, en particulier Sebastian Meyen, Carole Mueller, Daniela Piesch, et Frank Stepan.
Mes remerciements vont également à Developpez.com et en particulier à Vincent Brabant, JohnDoeBrother, Christophe Jollivet, et Marc Lussac.
Merci encore à JohnDoeBrother ainsi que Matthieu Brouillard et Xavier Hanin de la société Jayasoft pour la soirée passée ensemble autour de quelques bières.
Mais surtout, un grand merci aux différents intervenants lors de ces conférences !
6. Liens▲
- Le site de Struts
- Le site de Struts Shale
- Ressources Sun sur JSF
- Le site de l'implémentation Myfaces de JSF
- Le site de Cocoon
- Le site de JUnit
- Le site de HttpUnit
- Le site de Cactus
- Le site de TestNG
- Le site de FIT
- Le site de FITNESSE
- Le site de JMeter
- Le site de Grinder
- Le site de JProbe
- Le site de PerformaSure
- Le site d'Eclipse
- Le site sur Callisto
- Le site sur BIRT
- Le site de WTP
- Le site d'Eclipse RCP
- Le site de DALI
- Le site d'AspectJ
- Ressources sur les certifications Java
- Ressources sur les certifications UML
- Site de la certification PMI