Compte rendu de JAX 2006 - EAKon 2006 - Eclipse Forum Europe 2006Date de publication : 16/05/2006
Le JAX2006 s'est déroulé du 8 au 12 mai 2006 à Wiesbaden en Allemagne,
à l'ouest de Francfort, à quelques 160 km au Nord de l'Alsace dont je
suis parti lundi matin, et à quelques 100 km au Nord Est du Luxembourg.
La dixième édition de cette conférence a été l'occasion d'un
regroupement avec 2 autres séries de conférences :
l'EAKon et l'Eclipse Forum Europe.
Ces conférences traitent du monde Java, XML, WebServices,
du management de projet, du monde Eclipse,
et de bien d'autres thèmes transversaux.
Un total de 1600 participants a été communiqué par les
organisateurs, ce qui correspond à une augmentation de 30% par
rapport à l'année précédente.
Les organisateurs ont bien fait de changer de site
(à Francfort l'an passé) pour contenir autant de monde.
1. Présentation 1.1. Généralités 1.2. Le site des conférences 1.3. Divers 2. Le programme 2.1. Les thèmes 2.2. Le caractère européen/international des conférences 2.3. Les conférenciers / animateurs 2.4. Les sponsors, partenaires et exposants 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 ... 2.4.9. ainsi que la presse 2.5. Les JAX Innovation Award 2.6. Le JAX Jogging 2.7. JAX Party 3. Les sessions 3.1. Lundi 8 mai 3.1.1. Workshop Hibernate 3 et la persistence avec Java 3.1.2. Managing Complex Enterprise Environments (Keynote) 3.1.3. Fin du Spring Day 3.2. Mardi 9 mai 3.2.1. Session d'accueil 3.2.2. Buy AND build ... (Keynote) 3.2.3. Java EE : toutes les nouveautés (E, WA, WS, PAF, JB) 3.2.4. Netbeans 5.0 : une IDE complet (E, WA, WS, PAF, TO, JD, JM) 3.2.5. Apache iBatis : simplifier la persistance (E, PAF) 3.2.6. Struts and JavaServer Faces (WA, PAF, W, OS) 3.2.7. The State of Web Frameworks (Keynote) 3.2.8. Introducing Eclipse Callisto (Keynote) 3.2.9. Tout ce que vous avez toujours voulu savoir sur les certifications (TPM) 3.3. Mercredi 10 mai 3.3.1. Single-Sign-On avec Java et Kerberos (E, PAF, ES) 3.3.2. BIRT : The Eclipse Reporting Framework (PRP) 3.3.3. Aligning IT with Business Goals through SOA Using IBM Eclipse Based Tools (Keynote) 3.3.4. Tests de performance et de montée en charge avec JMeter (E, WA, TO, JB, X, OS) 3.3.5. Eclipse Web Tools 1.5 and AJAX (DEV, ALM, PRP) 3.3.6. Intégration de l'ALM (Keynote) 3.3.7. JAX Award 3.3.8. Escaping the Technology Cycle (Keynote) 3.4. Jeudi 11 mai 3.4.1. Best Pratices for Apache Cocoon (WA, PAF, W, X, OS) 3.4.2. Mise en oeuvre d'une stratégie orientée service avec Eclipse RCP (RCP) 3.4.3. Maîtriser SOA (Keynote) 3.4.4. Essential EJB 3.0 Persistence in Practice (Keynote) 3.4.5. Continuous Performance Management (E, TO, ALM) 3.4.6. Tests unitaires avec FIT et FitNesse (E, PAF, TO) 3.4.7. Cérémonie de clôture 3.5. Vendredi 12 mai 3.5.1. Workshop Spring Framework : simplifier Java Enterprise 4. L'avenir 5. Remerciements 6. Liens 1. Présentation1.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 : Jugez par vous même
![]() Aire de détente ![]() Un peu de sport ![]() Quelques massages pour se détendre
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.
Histoire d'avoir une idée de ce que la semaine complète
peut coûter :
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. ![]() Les cadeaux
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 :
au choix
2. Le programme2.1. Les thèmesUne 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.
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. Attention les yeux
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![]() Très bien placé, IBM soigne son image de marque. 2.4.2. SUN![]() La cible de Sun était le partenariat : Sun Partner Advantage Program. 2.4.3. Oracle![]() Au programme, Oracle Database 10g Express Edition DVD, SOA Starter Kit, promotion de Toplink, ... 2.4.4. Microsoft![]() Microsoft était mine de rien Gold Sponsor et sa présence m'a semblé plutôt liée à l'EAKon. 2.4.5. Compuware![]() OptimalJ : son atelier de dévelopement logiciel MDA compatible avec UML. 2.4.6. Interface21![]() Société poussant l'initiative Spring et dispensant formations et consulting autour de ce framework ainsi que Java EE. 2.4.7. Mathema![]() Spécialiste allemand dans le domaine des systèmes orientés objets et systèmes répartis (Java SE, Java EE, Corba, .Net). 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 :
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) :
Projets retenus
![]()
Le jury était composé des personnes suivantes :
Jury
Verdict
![]() Un des représentants de la société française Jayasoft (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.
![]() Point de rencontre avant le départ. 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 : TOP 3
FLOP 3
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. Au programme
![]()
Chaque thème a donné lieu à un petit TP basé sur les
projets Eclipse que les animateurs avaient préparés !
![]() Exercices terminés ou pas
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 :
Sujets approfondis
![]() Vote à main levée pour les sujets préférés
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.
![]() Le tableau de bord de l'Introscope.
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![]() La Halle 1, lieu des différentes Keynotes
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, ...
![]() Présentation des chiffres par Sebastian Meyen.
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. ![]() Petit effet sur grand écran
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.
Principales caractéristiques
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 :
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. ![]() Les common annotation
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. ![]() Le plugin collaboratif en action (à gauche les participants, au centre la zone de discussion et le code, à droite la liste des contacts)
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 :
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 :
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$).
![]() L'exemple du typeHandler pour le type Boolean
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 :
![]() Configuration de la navigation
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. Les 10 projets en question
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 :
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.
Comment se préparer pour une certification (durée croissante)
Les animateurs se sont focalisés sur les 3 certifications
suivantes et nous ont distillé des informations
intéressantes et des liens fort sympathiques.
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 :
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.
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.
![]() Les différents graphiques
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). ![]() Prévisualisation de l'état
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. ![]() Le mot de la fin 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 :
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. ![]() L'extension pour manager : la couleur change selon le taux de réussite et les bornes configurées ;-)
Les inconvénients de ce produit mentionnés par les
intervenants sont les suivants :
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) :
![]() Ce que WTP prend en charge ... ou pas
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 :
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. ![]() La réflexion de Rod
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. ![]() Le framework CForms
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) :
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 :
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 :
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. ![]() Les fondements de l'architecture de RCBP
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). Les clés de JPA
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 :
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 à :
![]() Répartition de la consommation entre la couche Java et la base de données 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 :
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).
![]() Les participants quittent les lieux après 3 journées bien remplies 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 :
![]()
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. LiensCatégorie JAX
Catégorie Java EE
Catégorie accès aux données
Catégorie web
Catégorie tests et performance
Catégorie build
Catégorie Netbeans
Catégorie Eclipse
Catégorie certifications
Catégorie divers
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Ricky81. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée.
Copyright © 2000-2012 - www.developpez.com