JavaOne 2006

Pierre Caboche

JavaOne 2006 est l'évènement Java le plus important de l'année. Il s'est déroulé du 16 au 19 Mai à San Francisco. J'ai eu la chance de m'y rendre pour vous en faire un compte-rendu.

- Titre : JavaOne 2006

- Auteur : Pierre Caboche

- Parution : 27 mai 2006

- Licence : Copyright ® 2006 pcaboche. 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.

Sommaire

- Introduction

- L'organisation de JavaOne

- Le Moscone Center

- Les nouveautés de JavaOne 2006

- Préparer son emploi du temps

- Les ressources en ligne

- A propos de cet article

- Day 1 - Tuesday, May 16

- 8:30-10:30 AM : Sun General Session

- 12:15-01:45 PM : Sun Technical General Session

- Les technical sessions que j'ai choisies

- TS-1913. Eight ways to be more productive developping Swing applications

- TS-4915. Simpler, Faster, Better: Concurrency Utilities in JDK Software version 5.0

- TS-4489. Introduction to AJAX

- TS-3361. Java EE 5 Platform: Even easier with tools

- Day 2 - Wednesday, May 17

- 8:30-10:30 AM : Oracle General Session

- Les technical sessions que j'ai choisies

- TS-4916. Creating Professionnal Swing UIs using Matisse GUI Builder

- TS-4743. XML: The evolution of JAXP

- TS-1580. JUnit 4 and Java SE 5: Better Testing by Design

- 5:15-6:00 PM : BEA General Session

- Day 3 - Thursday, May 18

- 8:30-10:30 AM : IBM General Session

- Les technical sessions que j'ai choisies

- TS-5672. PHP vs Java EE for web development (*)

- Les stands

- Tibco

- Change Vision

- Altova

- Blackberry

- Caché

- Les autres stands

- Day 4 - Friday, May 19

- 8:30-10:30 AM : Sun General Session (innovation)

- Les bonus de JavaOne

- Les goodies

- La bouffe gratos

- Les avantages du badge "presse"

- Conclusion: que faut-il retenir de ce JavaOne ?

- Remerciements

Introduction

Lorsque Marc Lussac (le rédac chef de developpez) a annoncé que Sun Microsystems offrait un séjour à San Francisco pour couvrir JavaOne (le salon Java le plus important de l'année), je me suis immédiatement porté volontaire, d'autant qu'il leur fallait une réponse rapide (pour le lendemain). Cela tombait bien: j'étais disponible et je disposais d'un passeport valide pour me rendre aux USA. Seul handicap: contrairement à certains membres de la rédaction de developpez (qui ne pouvaient malheureusement pas effectuer le déplacement), je n'ai pas une expérience significative de Java.

Cela importait peu: j'étais intimement persuadé que cela me permettrait d'apprendre de nombreuses choses concernant Java. J'ai donc saisi cette chance qui m'était offerte et me suis rendu à JavaOne, avec pour mission d'en faire un compte-rendu dès mon retour en France.

Voici donc un compte-rendu de JavaOne comme si vous y étiez.

L'organisation de JavaOne

Le Moscone Center

L'édition 2006 de JavaOne s'est déroulée au Moscone Center :

Le Moscone Center, vu depuis ma chambre d'hôtel

Le Moscone Center se divise en 2 parties, reliées entre elles par les salles de conférences, en sous-sol.

Et voici, vus du ciel, le Moscone Center ainsi que l'Argent Hotel, où je résidais (images Google Map) :

Cette année, la conférence JavaOne a réuni plus de 16'000 personnes !

Les nouveautés de JavaOne 2006

Je n'étais pas là lors des éditions précédentes de JavaOne, mais voici ce qui, d'après ce que j'ai pu comprendre, est nouveau pour cette année:

- Il faut préparer son emploi du temps à l'avance, le tout en ligne

- Les PDF des présentations techniques sont disponibles en ligne dès le début de JavaOne

Un autre changement important: dorénavant, on ne dit plus "J2SE, J2EE, J2ME", mais "Java SE, Java EE, Java ME". De nombreux intervenants ont eu un peu de mal avec ce changement et dans certaines présentations, on voit encore que les anciennes notations sont utilisées. Certains ont glissé intentionnellement quelques clins d'oeils à ce sujet, comme Rich Green, qui avait quitté Sun durant ce changement...

Préparer son emploi du temps

La grande nouveauté de ce JavaOne est la nécessité de préparer son emploi du temps à l'avance. Concrètement, il suffisait de se connecter à un site web pour avoir la liste des diférentes sessions (il s'agit du même site qui permet maintenant de télécharger le contenu des présentations, voir "Ressources en ligne").

A partir de ce site, on avait la possibilité de sélectionner les sessions qui nous intéressaient afin de construire (et sauvegarder) son emploi du temps. L'interface indiquait également les conflits qui existaient entre les différentes sessions sélectionées et les sessions déjà présentes dans l'emploi du temps, afin qu'on choisisse l'une ou l'autre (choix pas toujours facile à faire).

Il y avait différents types de sessions :

- Tutorials : Sortes de cours magistraux parlant d'un sujet bien particulier, avec souvent quelques démos.

- Advanced How-Tos : Pareil que pour les tutorials, mais en plus avancé

- Leading Edge : Sessions durant lesquelles on présente les dernières avancées de la technologie Java.

- Technical Case Studies : Des études de cas sur une implémentation réussie de Java

- Hand-on Labs : Des travaux pratiques pour améliorer ses compétences dans un sujet précis.

- Birds Of a Feather : Des sessions beaucoup moins formelles, se déroulant le soir, parfois en retrait du Moscone Center où se déroulait la conférence (dans des hôtels par exemple) avec des professionnels de l'industrie, et portant sur un sujet ciblé.

Désirant profiter au maximum de ce JavaOne pour en apprendre plus sur la technologie Java, j'ai pris principalement des Tutorials.

Certaines sessions se remplissant très vite, il était vivement conseillé de préparer son emploi du temps à l'avance. C'est ce que j'ai fait (au moins une semaine à l'avance). Pour les retardataires, des ordinateurs étaient mis à la disposition des visiteurs pour, entre autres, pouvoir modifier leur emploi du temps.

Arrivé sur le lieu de la conférence, il était nécessaire de s'enregistrer pour que nous soient remis un badge ainsi que d'autres "goodies" (sac JavaOne, programme de la conférence, etc.). C'est ce badge qui permettrait aux organisateurs de pouvoir nous identifier et de contrôler l'accès à certaines parties de la conférences. Muni d'un badge "presse", je jouissais d'une assez grande liberté.

Le badge était également équipé d'une JavaCard. Cette carte était requise avant chaque session pour vérifier qu'on s'était bien inscrit. Si on n'avait pas eu le temps de s'inscrire, il était toujours possible d'accéder à la session à condition qu'il reste des places disponibles.

Les ressources en ligne

Je sais ce que vous vous dites: que j'en ai eu de la chance d'assister à JavaOne et que vous auriez bien aimé être à ma place pour assister à toutes les conférences ainsi qu'aux sessions techniques.

Si cela peut vous rassurer, j'ai fait un résumé des informations importantes lors de ces sessions (c'est d'ailleurs pour cela qu'on m'a envoyé). Si l'une d'elle vous intéresse particulièrement, vous pouvez retrouver les vidéos des présentations générale ici : vidéos des conférences

Vous trouverez également les slides des sessions techniques ici : Les tutos en ligne (login: contentbuilder, mdp: doc789)

Pour une recherche plus rapide, j'ai précisé les références des sessions techniques que j'ai choisies.

A propos de cet article

Cet article se présente à la manière d'un journal de bord journalier, avec les moments clefs de la conférence (les "keynotes", ou "general sessions"), un résumé des différentes annonces qui y sont faites, etc.

J'ai décidé de garder certaines citations en Anglais pour ne pas en altérer le sens ou le contexte.

J'ai fait un résumé des sessions techniques auxquelles j'ai assistées, et j'ai livré mes impressions par rapport à leur contenu. J'ai également précisé les références pour que vous puissiez télécharger les présentations qui vous intéressent à partir du site de Sun.

Day 1 - Tuesday, May 16

8:30-10:30 AM : Sun General Session

Cette session (la première de JavaOne) était à ne surtout pas manquer. En effet, c'est lors de celle-ci que la plupart des annonces importantes ont été faites.

La session est introduite par John Gage (Chief Researcher and Vice President, Science Office, Sun Microsystems Inc.) qui nous souhaite la bienvenue à JavaOne, nous invite à nous inscrire électroniquement aux différentes sessions, à construire notre emploi du temps personalisé parmi les plus de 180 sessions disponibles et nous donne d'autres conseils afin de profiter au maximum de JavaOne2006.

John Gage passe ensuite la parole, ou plus exactement "the pickle" (le "pickle" étant le petit boitier servant à contrôler l'affichage sur l'écran géant) à Jonathan Schwartz, récemment nommé président et CEO de Sun Microsystems. John Schwartz animera le reste de la session, introduisant les différents intervenant qui se succèderont.

Premier intervenant: Ed Zander, chairman and CEO de Motorola. Il s'agissait là de montrer l'importance du marché du mobile pour Sun. En effet, à lui seul, Motorola vend chaque année plus de 100 millions de téléphones avec une machine virtuelle Java, ce qui dépasse largement le nombre de PC vendus sur la planète dans le même laps de temps. Le ton est donné: Sun vise le marché du mobile.

Deuxième intervenant: Mark Shuttleworth de la société Canonical (la société qui développe la distribution linux Ubuntu) qui annonça qu'un accord entre Sun et Canonical permettra l'intégration de Java dans la distribution Ubuntu. Concrètement, cela signifie qu'il suffira de tapper apt-get install sun-java5-jre pour installer Java sur Ubuntu. Jusqu'alors, il fallait télécharger Java séparément après avoir accepté les conditions d'utilisation de Java. L'intégration de Java dans d'autres distributions sans démarche particulière concernant la licence est en cours d'étude. Par ailleurs, Sun Microsystems apportera son aide à la distribution Ubuntu.

Ceci montre la volonté de Sun Microsystems de s'ouvrir à la communauté open-source, deuxième annonce importante faite lors de ce JavaOne.

Jonathan Schwartz invite alors Rich Green à monter sur scène. Après deux ans passé loin de Sun, Rich Green est revenu en tant qu'executive vice president of Sun Software. Jonathan Schwartz lui posa alors cette question: "est-ce que Java va devenir open source?". Léger rire avant de répondre sur un ton plus sérieux: "this is not a question of 'whether', but 'how'...". Ceci constitue l'annonce du projet OpenJava EE, qui est pour l'instant à l'étude sur les moyens de mise en oeuvre mais qui devrait aboutir d'une manière ou d'une autre.

Selon Jonathan Schwartz, la communauté Java et la communauté open-source ont beaucoup de valeurs en commun, à savoir qu'elles ont toutes deux pour objectif l'innovation, la croissance, la compatibilité, etc. En rendant les solutions compatibles, celles-ci deviennent interchangeables entre les différents acteurs du marché, qui doivent alors se différencier par rapport à la qualité de leurs solutions, ce qui a pour effet de stimuler la concurrence. Ceci montre bien la différence de statégie entre une société comme Sun et une société comme Microsoft: "Compatibility leads to choices, choices lead to competition. Some companies don't like competition. (...) Open source doesn't mean less revenues, open source means less barriers to revenues.", dit Jonathan Schwartz.

S'ensuivent plusieurs démos pour montrer les différentes innovations de Java.

Première démo: réalisation d'un blog avec NetBeans et GlassFish montre combien il est devenu plus facile de déployer une application Java EE. Plus besoin de fichiers XML complexes, la tâche a été simplifiée grâce aux annotations. Cette démo montre également comment il est possible d'ajouter certaines fonctionalités intéressantes par simple "drag-and-drop" de portions de code.

Deuxième démo: une application web utilisant Google map pour localiser les pubs où l'on boit de la bonne bière autour du Moscone Center. Troisième demo: the online Pet Store utilisant AJAX, des composants JSF, etc. Quatrième démo: projet Tango: interopérabilité entre Java et .Net grâce au Web Services Interoperability Technology (WSIT). Cinquième démo: NetBeans et BPEL, la manipulation de Schemas (création de schemas par "drag-and-drop", navigation, représentation graphique de Schemas complexes, refactorisation de Schemas...)

La dernière démo a vraiment impressioné beaucoup de monde. Il s'agit d'une application graphique entièrement écrite à l'aide de Mustang et de composants Swing ! La démo en action et en musique (sur fond du Guillaume Tell de Rossini), se trouve à la 36ème minute de la quatrième vidéo de cette session (disponible à l'adresse http://java.sun.com/javaone/sf/sessions/general/index.jsp )
Voir aussi: le blog de Romain Guy

'Aerith' (image extraite du blog de Romain Guy)

En résumé, de nombreuses annonces ont été faites lors de cette session de 2 heures :

- Sun vise le marché des mobiles, qui représente plusieurs centaines de millions d'utilisateurs (plus que le marché du PC)

- Sun désire s'investir plus activement auprès de la communauté open-source, avec une meilleure intégration de Java dans des distributions comme Ubuntu et avec le projet OpenJavaEE, et ce en vue d'étendre son marché d'attirer des développeurs de talents aux technologies Java en vue de voir émerger de nouveaux produits intéressants

- D'un point de vue technique, de nombreuses améliorations qui justifient que les développeurs Java téléchargent les dernières versions stables, voire les versions en développement, car proposant plus de fonctionalités. Je reviendrai sur ce point un peu plus loin.

A de nombreuses reprises, certaines recommendations ont été faites aux développeurs Java :

- Java EE 5 est là !
Java EE 5 vous simplifie la vie. Téléchargez-le. Utilisez-le en production.

- Téléchargez le dernier NetBeans !
NetBeans propose plein de fonctionnalités intéressantes pour améliorer la productivité, comme par exemple le GUI-builder (qui contient également le projet "Matisse")

- Téléchargez la version beta de Java SE 6 !
Essayez-là, elle est assez stable et mise à jour régulièrement. Envoyez vos feedbacks.

- Rejoignez des communautés Java telles que JCP ou la communauté NetBeans !

Bref, une session extrêmement intéressante avec plein d'annonces importantes.

12:15-01:45 PM : Sun Technical General Session

Une session technique extrêmement intéressante. En voici les idées importantes:

- Java SE 5 est globalement plus performant

- Swing est amélioré

- Java EE est plus simple à apprendre et à déployer

Lors de cette session, on commence par découvrir la roadmap de Java SE avec :

- Java SE 5 (Tiger) sorti en automne 2004

- Java SE 6 (Mustang) prévu pour Octobre 2006

- Java SE 7 (Dolphin) prévu pour 2008

On y apprend également qu'un gros effort a été consacré à l'amélioration des performances. Ainsi, le simple fait de passer à Java SE 5, sans modification dans le code, permet une amélioration des performances.

Les applications Swing, par exemple, bénéficient d'un rendu matériel et non plus d'un rendu logiciel. Ainsi sur des machines récentes, le gain de performance peut aller jusqu'à 60%; sur des machines anciennes (aux cartes graphiques peu performantes) ce gain est de 12% environ. En moyenne, on observe un gain de 30%.

Voici par exemple les temps mis par Java pour redessiner un composant graphique, suivant les versions :

Un gain de performances impressionnant

Ceci renforce l'idée qu' il est utile d'effectuer la mise à jour vers Java SE 5, d'autant qu'un grand effort à été consacré à la résolution des problèmes de rétrocompatibilité.

Autre innovation: faire en sorte que les applications Swing adoptent le même "Look & Feel" que l'OS sur lequel elles tournent, comme le montre les deux images suivantes (sous Windows, avec un thème différent) :

Dans cet exemple, lorsque l'on met à jour le thème de l'OS, cette mise à jour se répercute automatiquement sur l'application.

Java EE n'est pas en reste, Ludovic Champenois ayant fait une démo de déploiement d'une application web. Cette démo montrait le mapping qu'il est possible de réaliser entre les objets Java et les objets en base de données.

L'accent a été également mis sur le fait que les applications Java EE 5 sont plus faciles à mettre en place. En effet, plus besoin de fichiers XML complexes, une simple annotation permet de définir une classe comme étant un web service. Cela montre la puissance des annotations, dont l'utilisation n'en est qu'à ses débuts.

Le but de ces avancées techniques est de rendre Java EE plus simple à apprendre pour le débutant et plus facile à déployer pour le professionnel.

Les technical sessions que j'ai choisies

TS-1913 - Eight ways to be more productive developping Swing applications

Cette présentation expose 8 trucs et astuces pour concevoir une application graphique de manière productive, en évitant d'avoir à réécrire les même choses. Parmis les conseils prodigués, on trouve:

- Utiliser des GUI builders tels que NetBeans, JForm Designer, JetBrain IDEA...

- Séparer la partie applicative de la partie affichage. Externaliser le style de l'affichage (penser à l'usage de CSS pour la mise en forme)

- Utiliser un look & feel multi-plateforme (pour ne pas à avoir à adapter l'interface selon la plateforme utilisée)

- etc.

Pour plus de détails, téléchargez la présentation, qui fournit des exemples pour chaque point abordé.

Téléchargez cette présentation

TS-4915 - Simpler, Faster, Better: Concurrency Utilities in JDK Software version 5.0

Il s'agit ici de présenter les différents objets disponibles dans la Java SE 5 pour la gestion concurrentes des threads, lorsque la synchronisation ne suffit pas à garantir la cohérence des données. En effet, pourquoi réinventer la roue en implémentant soi-même des sémaphores lorsque l'on dispose d'objets tels que ConcurrentHashMap, CopyOnWriteArrayList, Queue, BlockingQueue ou des Patterns tels que Producer-Consumer ? Tous ces objets, ainsi que leurs utilisations sont décrits dans le PDF à télécharger.

Téléchargez cette présentation

TS-4489 - Introduction to AJAX

AJAX est un nom qui est revenu extrêmement souvent lors de ce JavaOne 2006, à croire que tous les éditeurs s'étaient donné le mot pour sortir leur propre batterie d'outils proposant des solutions en AJAX configurables et prêtes à l'emploi.

Dans cette présentation, il s'agissait de montrer ce qui se cache réellement derrière cette appellation qui était sur toutes les lèvres, sorte de révélation de l'année 2006: AJAX (pour ceux qui auraient échappé au phénomène, sans doute suite à un séjour prolongé dans un coin reculé de notre planète, voire de notre galaxie, AJAX est l'abréviation de Asynchronous Javascript And XML).

En gros, dans cette présentation, on nous explique qu'AJAX, ce n'est pas si compliqué que ça en a l'air, que tous les jolis effets graphiques obtenus sont supportés nativement par les navigateurs et qu'il a fallu seulement 2 heures aux 2 intervenants pour créer leur propre version de Google Map en AJAX. Partant de ce constat, imaginez ce qu'une équipe de développeurs pourrait coder en une semaine...

Téléchargez cette présentation

TS-3361 - Java EE 5 Platform: Even easier with tools

Une présentation intéressante classée comme étant "leading edge". Sujets abordés: NetBeans, les annotations, la Java Persistence API, les Web Applications et les Web Services...

Téléchargez cette présentation

Day 2 - Wednesday, May 17

8:30-10:30 AM : Oracle General Session

Thomas Kurian, Senior Vice President de Oracle Corporation, nous expose les qualités de la nouvelle plateforme Java pour entreprise (Java EE 5, SOA 2.0, Web 2.0) et nous promet que cette plateforme permet:

- d'être plus productif

- de développer des application plus flexibles

- de créer des applications au contenu plus riche

Cette architecture permet de créer un modèle en 3 couches:

- Business Logic Component Model permet de décrire le "métier" de l'entreprise et de définir les interactions avec les bases de données (EJB 3.0, Java Persistance API).

- Composition and Orchestration permet de définir avec une grande flexibilité la manière dont les différents services interagissent entre eux

- Interface Utilisateur

Pour chacune de ces couches, des composants réutilisables ont été développés de manière à rendre le développement d'applications plus productif.

Concernant le Business Logic, EJB 3.0 et la Java Persistance API facilitent le travail du programmeur. Grâce aux annotations (Java EE 5), il est très facile de créer des WebServices et de rendre des objets persistant en base de données. "N'importe qui pouvant créer des classes Java et utiliser des objets Java est maintenant un programmeur EJB. N'est-ce pas formidable?", dit Thomas Kurian.

Thomas Kurian annonce ensuite quelques contributions d'Oracle:

- l'implémentation de référence d'EJB 3.0 est intégrée au projet Glassfish (c'est le noyau TopLink, l'implémentation commerciale d'Oracle. Merci à vbrabant pour cette info)

- autre contribution faite à Eclipse pour l'intégration d'EJB 3.0 dans l'environnement de développement

S'ensuit une démonstration sous Eclipse montrant la manière d'utiliser la Java Persistance API et les annotations pour effectuer le mapping entre les objets Java et la base de données.

Au niveau Composition and Orchestration, une nouvelle génération de SOA voit le jour: SOA 2.0 composé de:

- Service Fabrics: infrastructure permettant de définir de manière déclarative la façon dont les services communiquent entre eux

- Service Orchestration: BPEL (Business Process Execution Langage) définit la coordination entre les services

- Service Monitoring: permet de déclencher des événements asynchrones divers: alertes, informations, etc.

- Service Security (WS-Security, WS-Trust)

- Service Management: définit les politiques en termes de disponibilité, de sécurity, de performance, etc.

Au niveau User Interface, la convergence des JSF (Java Server Faces) et d'AJAX facilite la mise en place d'interfaces utilisateur pour les WebServices définis dans les couches précédentes. Une démonstration montre qu'avec les JSF, on n'a pas besoin d'être un expert de Javascript pour créer des applications web de qualité basées sur AJAX.

La présentation se termine par un résumé des contributions faites par Oracle à la communauté open-source (Eclipse, Apache, etc.) et rappelle qu'une version gratuite d'Oracle 10 existe.

En résumé, il s'agit là d'une présentation certes très technique mais donnant une bonne idée des possibilités offertes par Java EE 5, d'EJB 3.0, des JSF, etc pour le développement de WebServices et d'applications web.

Les technical sessions que j'ai choisies

TS-4916 - Creating Professionnal Swing UIs using Matisse GUI Builder

Une formidable démo de ce qu'il est possible de faire avec le GUI Builder intégré dans NetBeans. C'est simple: vous ajoutez des composants graphiques (boutons, listes, etc.) par simple "drag-and-drop" avant d'en modifer la taille, l'alignement, etc. Par ailleurs, l'interface est suffisamment intelligente pour déterminer avec quels autres éléments de l'interface vous souhaitez aligner vos composants graphiques.

Cette présentation montre également les possibilités de "Matisse" en matière d'internationalisation (i18n), donne quelques conseils sur la réalisation d'interfaces graphiques avec cet outil et donne des exemples d'erreurs à ne pas commettre.

Parmis les conseils prodigués :

- suivre les indications de Matisse (ex: pour l'alignement)

- concevoir des éléments graphiques "resizable" (utile pour assurer une bonne visibilité sur toutes les plateformes et aussi en cas de changement de la taille des libellés d'une langue à l'autre)

En résumé, une démo qui sait nous convaincre que le GUI Builder de NetBeans est extrêmement productif et qu'il serait dommage de ne pas l'utiliser.

Téléchargez cette présentation

TS-4743 - XML: The evolution of JAXP

Voilà une présentation qui m'a vraiment donné l'impression de perdre mon temps. En effet, d'après le titre, je pensais apprendre quelque chose de nouveau sur le traitement de fichiers XML en Java, or il s'agissait ni plus ni moins que d'un cours assez rapide sur XML, DOM, SAX, XSLT, les DTD, les schemas. Bref rien que je ne connaisse pas déjà...

En plus, ce qui manque cruellement à ce genre de présentation pour débutants, c'est un récapitulatif des différences entre ces API en détaillant leurs avantages, leurs inconvénients et les cas où leur utilisation est justifiée.

Bref, j'ai été extrêmement déçu par cette présentation donnée par un employé d'Oracle, et je n'était pas le seul à en juger par la vitesse à laquelle la salle s'est vidée. J'ai essayé de tenir aussi longtemps que j'ai pu, dans l'espoir d'apprendre quelque chose d'intéressant. En vain...

Téléchargez cette présentation

TS-1580 - JUnit 4 and Java SE 5: Better Testing by Design

Cette présentation était donnée par Kent Beck, à l'origine de JUnit, l'outil de référence en matière de tests unitaires, souvent copié et adapté à d'autres langages, mais jamais égalé. Erich Gamma (voir page suivante) a également apporté sa contribution à JUnit.

Issus d'une formation en Génie Logiciel, je suis assez sensible à tout ce qui touche aux tests et à l'amélioration de la qualité logicielle en générale. C'est d'ailleurs pour cette raison que j'ai choisi cette présentation. J'ai été cependant assez déçu par cette présentation.

Cela commençait plutôt bien pourtant, avec une démonstration des améliorations apportées par JUnit 4 et Java SE 5. En effet, grâce aux annotations introduites par Java SE 5, il est maintenant plus facile de spécifier des tests unitaires. Cette partie là était intéressante.

Après, la présentation dérive sur les problèmes qu'il a rencontré avec le pattern Composite (pattern au demeurant extrêmement intéressant mais qui complexifiait l'API JUnit et forçait l'exécution des même batteries de tests) et sur le fait que JUnit est un outil très simple au demeurant et que n'importe qui aurait pu avoir l'idée de créer un tel outil.

Pour nous, développeurs, ces explications ne présentent malheureusement pas un grand intérêt (ce qui nous intéresse, c'est de savoir ce qu'apporte la nouvelle version de JUnit et en quoi elle facilite la mise en place des tests unitaires). Après, c'est sûr qu'il est difficile de tenir 1 heure juste en présentant les annotations de Java 5 appliquées aux tests.

Ce qu'il faut retenir de cette présentation, c'est que les annotations Java SE 5 facilitent la déclarations des tests unitaires. Plus d'infos à ce sujet sont disponibles dans les PDF de la présentation, ce qui peut justifier qu'on les télécharge.

Téléchargez cette présentation

5:15-6:00 PM : BEA General Session

Contrairement aux autres présentations, parfois très techniques, la présentation de BEA est vraiment orientée marketing. Cela commence dès la vidéo de présentation (au demeurant superbement réalisée) dont le discours tourne autour de la réussite, de la productivité, de l'innovation... "Qu'est-ce que ces entreprises ont en commun? Elles reçoivent l'aide d'un partenaire qui comprend mieux que quiconque que transformer votre entreprise, c'est changer votre façon de penser", suivi du logo BEA: "Think Liquid". Le ton est donné: nous allons assister à une présentation purement commerciale.

S'ensuit une série de mythes sous forme d'articles de presse aux titres du genre "Java est le prochain Cobol" (je ne sais pas si ce sont de vrais articles parus dans la presse, mais dans ce cas, c'était peut-être à prendre au second degré) que Bill Roth, BEA, se propose de dissiper lors de cette séance. Son conseil: "Ne croyez pas tout ce que vous lisez". A vrai dire, c'est exactement ce que j'ai fait tout au long de sa présentation...

La session continue avec une explication de ce qu'est un middleware, que les middleware apportent plus de liberté, de flexibilité, qu'ils permettent un déploiement plus facile ("develop one way, deploy in a different way"), etc. Durant cette session, on a aussi énormément parlé d'innovation avant d'aborder la question de la multiplication des langages. En effet, le programmeur Java devait connaître de nombreux autres langages comme PHP, Python, Ruby... "En moyenne, les développeurs Java utilisent plus de langages pour construire leur application que les développeurs Microsoft". Ceci permet d'introduire une démo de BEA Workshop qui permet la gestion des dépendances dans les projets complexes, faisant intervenir de nombreuses technologies (entre autres démos).

Contrairement aux autres sessions, pas beaucoup d'annonces ont été réalisées en dehors du fait que BEA mettait Kodo, leur moteur EJB 3, à disposition de la communauté open-source (annonce qui n'a d'ailleurs pas eu un impact important). C'est bien: cela a permis de se reposer de la veille, journée qui fut extrêmement riche en annonces et de récupérer un peu du décalage horaire...

Day 3 - Thursday, May 18

8:30-10:30 AM : IBM General Session

Erich Gamma et John Wiegand (Distinguished engineers, IBM Rational Software) nous présentent la manière dont Eclipse est développé, comment les délais sont respectés et la qualité maintenue.

L'assurance de la qualité se fonde sur 4 valeurs fondammentales:

- livraison du logiciel (shipping): le plus important, ce sont les échéances ("milestones first")

- prévisibilité (predictability): prévoir les échéances de chaque livraison

- transparence (transparency): ne pas faire de mystère sur les délais de livraison, faire la liste des nouvelles fonctionalités à chaque livraison, rendre les tests de performance publics

- retours utilisateurs (feedbacks): est-on prêt pour la livraison?

Nul doute que cette présentation intéressera à la fois les chefs de projets, ainsi que toute personne s'interessant à la conduite de projets.

Cette présentation fut aussi l'occasion de rencontrer Erich Gamma en personne :

Erich Gamma a eu la gentillesse de bien vouloir me dédicacer ce que je considère comme étant la "Bible" de la Programmation Orientée-Objets, à savoir son livre sur les Design Patterns :

'Design Patterns' dédicacé par Erich Gamma

Les technical sessions que j'ai choisies

Une seule session technique pour cette journée. J'en ai donc profité pour visiter quelques stands d'exposants en fin de journée.

TS-5672 - PHP vs Java EE for web development (*)

(*) titre simplifié, le titre original: "Developping a Commercial Web Site. Using the PHP scripting Language and J2EE Platform Web-TierTechnologies: Challenges, Benefits and Drawbacks".

Une société belge nous livre son expérience de la réalisation de sites web dynamiques, d'abord en PHP, ensuite en Java EE, avec des exemples concrets des sites de vente en ligne.

Plus que la technique, c'est la philosophie qui diffère entre ces deux langages. En PHP, le développeurs tendent immédiatement vers un développement dit "agile": on écrit du code que l'on teste immédiatement, sans déploiement complexe. En Java, un test nécessite un déploiement. Comme un déploiement est une opération plus lourde que la simple mise à jour de fichiers PHP sur le serveur, on teste moins souvent.

La grammaire du PHP est beaucoup moins stricte que celle de Java. Comme en PHP les variables sont faiblement typées et le script interprêté uniquement à l'exécution, cela peut être source d'erreurs.

Enfin, d'un point de vue technique, les variables PHP sont immédiatement détruites après exécution du script. En Java, il est possible de garder certaines variables en mémoire durant toute la durée de vie du serveur, ce qui évite de recharger ces données à chaque fois. Cela rend Java plus rapide et permet de mieux faire face aux problèmes de charge.

PHP permet donc un développement plus "agile", plus rapide à mettre en oeuvre et peut, dans une certaine mesure, accepter une charge de travail conséquente. Pour les sites web ayant potentiellement des montés en charges plus élevées (aux heures de pointes, par exemple), le cache de Java se révèle cependant très utile.

On peut alors se mettre à rêver de solutions hybrides: un serveur permettant de faire tourner PHP en lui ajoutant des variables persistantes. Après tout, il existe un projet ayant pour but d'exécuter du code Visual Basic dans un environnement Java afin d'attirer les développeurs VB à Java. Pourquoi alors ne pas faire la même chose avec PHP? C'est une idée qui se défend.

Téléchargez cette présentation

Les stands

Ma visite de JavaOne n'aurait pas été complète si je n'avais pas fait un tour aux stands des différents exposants. Aussi c'est ce que j'ai fait durant la dernière après-midi de JavaOne. Et tant pis si ça m'a fait louper la session de Motorola.

Dans un soucis d'équité, je me suis intéressé aux stands des sociétés relativement peu connues (voire pas connues du tout) plutôt qu'aux incontournables de l'informatique.

Tibco

Tibco fournit tout un tas de solutions pour les entreprises permettant par exemple le Business Application Monitoring, le Business Process Management, l'Application Integration, etc. Pour en savoir plus sur leur produits, je vous conseille de vous rendre sur leur site tibco.com.

J'ai eu droit à une démonstration de leur framework "General Interface" permettant de faire de l'AJAX (vous savez: la technologie à la mode de ce JavaOne 2006) en quelques "drag and drops". La démo est assez convaincante et l'outil pourrait bien faire concurrence à d'autres frameworks du genre.

Pour la photo du stand, ils avaient prévu une hôtesse déguisée "à la Matrix". Perso, Trinity, je la préfère en combinaison moulante mais bon, c'est une question de goûts... Ce genre de prestation, ça ne sert pas à grand chose, mais c'est marrant quand même...

le stand Tibco

Change Vision

le stand Change Vision

Change Vision est une société Japonaise qui fait du "Rational Rose, mais en moins cher" (et tout en Java). Leur logiciel phare (JUDE) permet de créer toutes sortes de diagrammes UML en ajoutant des couleurs par exemple (ce qui permet de mettre en évidence certains Design Patterns, par exemple).

Téléchargez la version gratuite (Community) de Jude

Sinon, Change Vision propose aussi un logiciel de collaboration et de suivi de développement, nommé TRICHORD. Ce logiciel permet de visualiser l'avancement de certaines tâches :

Logiciel Trichord

ainsi que de visualiser, même à distance, l'humeur des développeurs :

Logiciel Trichord

Ce type de logiciel est assez orginal. Il apporte une certaine fraîcheur par rapport aux solutions proposées par les autres exposants.

Altova

le stand Altova

Altova est connu pour son logiciel phare: XMLSpy, puissant éditeur de fichiers XML, XSL et Schema, qui offre pas mal de fonctionalités autour de ces outils. Personnellement, je n'ai jamais utilisé *directement* XMLSpy (un éditeur de texte me suffisait bien) mais mon confrère l'utilisait pour donner une représentation graphique des Schemas au patron, ce qui était bien utile...

Altova, c'est aussi toute une gamme de produits (la plupart tournant autour d'XML) comme Mapforce, Stylevision, Schemaagent, etc.

Umodel permet de créer toutes sortes de diagrammes UML tels que des diagrammes de classes, diagrammes de séquence, etc. ainsi que la génération de code en Java et C# (mais pas C++, grrr..). Quand je leur ai demandé: "que fait Umodel exactement?", ils m'ont répondu: "la même chose que Rational Rose, mais en moins cher..." C'est marrant, c'était la deuxième fois que j'entendais cette phrase. Ca doit être une mode de copier Rational, mais en moins cher...

A part ça, ils m'ont donné une jolie casquette ainsi qu'une clef USB publicitaire. J'étais un peu surpris, d'habitude c'est plutôt un CD qu'on distribue. L'explication est pourtant rationnelle: "à chaque mise à jour, il faut jeter les anciens CD et en presser de nouveaux. Les clefs USB coutent certes plus cher à l'achat, mais au moins on peut les mettre à jour plus facilement". Personnellement, ça me fait surtout une clef USB de 127 Mo avec le logo "Altova" dessus, donc ça reste un bon support publicitaire...

Blackberry

Blackberry est un fabricant d'agendas électroniques, transformés depuis en téléphones portables (alors que la plupart des constructeurs ont suivi le chemin inverse) et dont les produits apparaissent petit à petit en France.

Les téléphones Blackberry intègrent une machine virtuelle Java et ont leur propre API de développement pour leurs produits (avec des fonctionnalités additionnelles qui leurs sont propres). A ce titre, ils organisent un concours de développement d'application pour leur produits. Pour plus de renseignements, allez voir sur: http://www.blackberry.com/developers/

Caché

Intersystems est une entreprise américaine qui développe une base de données dite "post-relationnelle" (comprenez "base de données objets") du nom de Caché (avec un accent, même en Anglais, parce que là bas c'est le Français qui fait 'hype').

Voici le stand Caché... enfin pas si caché que ça vu qu'il était en plein milieu des exposants :

le stand Caché

Ce fut l'occasion de leur faire part de mon expérience de Caché. Car oui, j'ai eu la possibilité d'utiliser Caché durant mes études. Le problème, c'est que ça ne m'a pas laissé un très bon souvenir, loin de là...

Le fait de les trouver là, face à face, lors de JavaOne m'a permis de leur exposer les problèmes que j'ai rencontrés (ainsi que le reste de ma promo) avec Caché (et ce dans le but de comprendre d'où venaient les problèmes, voire de les aider à améliorer leurs produits).

Voici les griefs dont je leur ai fait part:

- En bon utilisateurs que nous étions (et sommes restés), nous consultions la documentation. Le problème, c'est que plusieurs exemples de la doc ne marchaient tout simplement pas...

- Sur les 3 manières d'effectuer une requête SQL en CSP (Caché Server Page), 2 ne marchaient pas... (bon, d'accord, on aurait pu optimiser la requête, mais il n'empêche qu'on a passé plusieurs heures à comprendre ce qui ne marchait pas)

- Un camarade avait voulu utiliser les sessions sous Caché. Ca a fait planter le serveur...

Vous trouvez que j'ai été dur en pointant du doigt les problèmes rencontrés avec Caché ? Peut-être, mais à l'époque on était en année de Maîtrise et on avait suffisamment de projets pour ne pas en plus perdre du temps à cause d'une base de données qui refusait d'exécuter correctement nos scripts (au point qu'on finissait par introduire des erreurs dans des scripts corrects, ce qui nous faisait perdre encore plus de temps...).

Cette année là, on avait déjà suffisamment de quoi faire avec notre projet de compilation, notre projet d'OpenGL, et même notre projet de Prolog (et à l'époque, il n'y avait pas les excellentes ressources sur Prolog que vous pouvez trouver sur developpez... bon d'accord, je ne suis pas forcément très objectif en disant cela ;D ), sans compter tout le reste... A l'époque, on aurait apprécié être un peu plus productif avec Caché, mais ce n'était pas le cas...

En tous cas, je n'aurais pas voulu me retrouver à la place du type qui a dû écouter patiemment que j'énumère tous les problèmes liés au produit qu'il commercialise... et encore, je lui ai fait grâce des jeux de mots qu'on se répétait à chaque TP de bases de données (ex: "elles sont où mes données? elles sont Caché?", "Tiens, y'a encore le serveur Cachié...") et je ne lui ai pas non plus raconté la blague des 3 petits steaks hachés qui revenait quasiment à chaque séance (de toutes façons, en Anglais ça ne rend pas...).

Au bout d'un moment (qui a dû leur paraître une éternité...) ils m'ont dit que depuis le temps (1 an et demi), des nouvelles versions de Caché étaient sorties et que les bugs avaient sans doute été corrigés (j'espère pour eux !). Ils m'ont même donné un CD contenant la dernière démo de leur BDD (mais bon, j'ai été tellement traumatisé par Caché durant mes études que j'ai pas trop envie d'essayer leur dernière version... à moins bien sûr qu'on me paye pour le faire :D ).

J'ai aussi parlé à un responsable marketing et je lui ai demandé s'il y avait beaucoup de projets qui tournaient avec Caché. Il m'a répondu que leurs clients (principalement des hopitaux) avaient parfois des besoins très spécifiques. Certains doivent stocker de grandes quantités de données, d'autres ont des données réparties/répliquées sur plusieurs sites, d'autres doivent faire face à des flux de données importants en heures de pointes et que Caché avait répondu à leurs attente. Pendant un moment, j'ai presque bien voulu le croire (en effet, à aucun moment il n'a parlé de la charge de travail pour le développeur). J'espère juste que les problèmes que nous avions rencontrés en utilisant Caché ont été résolus depuis...

Les autres stands

le stand Oracle

On ne voit pas très bien à cause des néons, mais il s'agit du stand BEA

le stand JBoss

le stand Eclipse Foundation

Day 4 - Friday, May 19

La journée la plus courte de JavaOne... et surtout la dernière ;-[

8:30-10:30 AM : Sun General Session (innovation)

Dans cette ultime session, il est surtout question de mettre en avant les applications innovantes réalisées en Java, avec en particulier:

- un logiciel d'imagerie médicale haute résolution

- un système embarqué avec une machine virtuelle complète à l'intérieur (pas besoin d'émulateur, on débugge directement à partir du système embarqué !)

- un véhicule motorisé grandeur nature entièrement autonome (avec de nombreux capteurs) qui montre que Java est un terrain fertile pour les applications d'Intelligence Artificielle

- une course de voitures miniatures

Durant toute la conférence, un concours de programmation avait été lancé. Il s'agissait de programmer des voitures miniatures (contrôle de l'accélération/freinage pour qu'elles effectuent la course sur un circuit). Parmis les concurrents, un groupe d'ados Allemands s'est particulièrement illustré et se sont qualifiés pour la finale, qui s'est déroulée sur scène, devant plusieurs milliers de personnes.

Le mot de la fin de John Gage: toutes ces innovations ne serviraient à rien si elles ne permettaient pas de rendre notre monde meilleur, à sauver des gens, à réduire les disparités qui existent entre les peuples ayant un accès continu aux technologies de l'information et le reste du monde. C'est à nous, développeurs, de contribuer à rendre ce monde meilleur. C'est sur ces paroles idéalistes et humanitaires que se termine JavaOne 2006... (pour tous ceux qui, comme moi, n'ont pas la possibilité d'assister aux sessions de l'après-midi parce qu'ils ont un avion à prendre).

Les bonus de JavaOne

Les goodies

Comme toujours pour ce genre d'évènement, on revient toujours plus chargé après qu'avant (penser à laisser de la place dans la valise avant de partir). Voici ce que cela donne concrètement (photo prise dans ma chambre d'hôtel) :

Sur la photo :

- en haut: un sac orange "JavaOne"

- au centre: un T-shirt vert avec un joli Duke dessus

- devant le sac: un bloc note "Java"

- un stylo (utile pour écrire sur le bloc note)

- une mini-souris "Sun"

- en bas: un badge "presse" pour accéder aux conférences

- à gauche du sac: l'édition quotidienne du "JavaOne Today" avec les news de la veille

- à droite du sac: le programme des festivités (descriptions des sessions)

- de part et d'autre du badge: des CD de démos

Il manque juste :

- ma casquette et ma clef USB "Altova XMLSpy"

- d'autres CD de démo

La bouffe gratos

Il y a une expression brittanique qui dit: "there is no such thing as a free meal"... et bien c'est pas vrai du tout! "There IS such thing as a free meal !"

En effet, quand vous venez à JavaOne, le petit déjeuner est offert et vous pouvez vous servir en patisseries (gâteaux, muffins...), en jus de fruits, en café, et même en yaourts (absolument délicieux). Bref, avec autant de sucre, mieux vaut ne pas être diabétique...

Voici à quoi ressemble le plateau des patisseries :

hmmm... donuts !

A midi, je crois qu'il faut prendre un ticket pour le "lunch", mais quand on a un badge "presse", on peut aller prendre directement un sandwich dans la salle qui nous est réservée, sans attendre. Il arrive cependant que l'on soit un peu pressé (ou que l'on ait une session à l'heure du déjeuner). Ce que je faisais pour éviter ça: tous les matins, j'allais m'acheter un sandwich au Subway pas loin de mon hôtel et je demandais le sandwich du jour à $2.49, juste au cas où. Aussi, quand je voyais un journaliste qui n'avais pas eu le temps de déjeuner, je lui filais un sandwich (vu que j'en avais un en plus). Ca permet de sympatiser.

Enfin, le soir, je n'ai jamais eu de problème pour manger. En effet, avec d'autres journalistes, on était souvent invités par Sun dans des restaurants gastronomiques où il fallait parfois une demi-heure rien que pour déchiffrer le menu. Bref, on n'était pas à plaindre... surtout que c'était parfois l'occasion de rencontrer des personnalités importantes de l'informatique.

Les avantages du badge "presse"

Hormis les repas gratuits, un accès à une salle pour se reposer et parfois des sièges réservés aux premiers rangs, le véritable avantage d'avoir un badge "presse" est de rencontrer certaines personnes influentes dans le monde de l'informatique, comme James Gosling, John Gage, Erich Gamma, le vice-président d'IBM Websphere et bien d'autres encore... Quand on a 26 ans et qu'on sort de l'école, ça impressionne quand même.

Ce fut aussi une expérience intéressante de partager le quotidien de véritables journalistes, qui couvrent ce genre d'évènements toute l'année et qui m'ont souvent éclairé de leurs lumières. Un grand merci à eux.

Le plus interessant fut de rencontrer des responsables de Sun basés en Suisse, dont l'un d'eux habite très près de chez moi. Comme quoi, le monde est vraiment petit...

Conclusion: que faut-il retenir de ce JavaOne ?

La plupart des annonces importantes ont été faites le premier jour, lors des présentations générales de Sun. Les voici résumé :

La politique de Sun :

- Le marché du mobile représente une cible privilégiée pour Sun (il se vend plus de téléphones portables que de PC à travers le monde)

- Sun affiche sa volonté de s'impliquer d'avantage auprès de la communauté open-source :

- Sun encourage les développeurs (en tant qu'entreprises ou individus) à rejoindre la communauté JCP afin de rentrer dans le processus de mise en place des JSR

Java SE :

- Java SE 5 est plus performant.
Le simple fait d'utiliser Java SE 5 améliorera la performance de vos applications

- Passez directement à Java SE 6 !
Java SE 6 (Mustang) est particulièrement stable pour une version beta. En adoptant Java SE 6, vous aurez accès aux toutes dernières fonctionnalités de Java.

- Les nouvelles fonctionnalités de Swing sont époustouflantes !
La démo de Romain Guy en a convaincu plus d'un. Il est par ailleurs relativement simple de créer des interfaces graphique de qualité grâce à Swing et des outils comme NetBeans.

Netbeans :

- NetBeans est en constante amélioration
De gros efforts ont été entrepris pour faire de NetBeans un concurrent sérieux pour son principal rival: Eclipse

- NetBeans simplifie la conception d'interfaces graphiques
Grâce à son GUI Builder (Matisse), la conception d'interfaces graphiques esthétiques et fonctionnelles est à portée de clics

- NetBeans simplifie la conception d'application Java EE
NetBeans intègre toutes les dernières nouveautés de Java EE et EJB 3.0

Java EE :

- Java EE 5 est disponible !

- Java EE 5 est plus simple
Les annotations simplifient grandement la création de WebServices

Et sinon :

- AJAX est très à la mode en ce moment...

En résumé, les produits Java se sont considérablement améliorés. Un effort considérable a été entrepris afin de faciliter la vie des développeurs. Il est donc tout à fait recommandé de télécharger les dernières versions de ces outils, de les utiliser, et de faire part de vos impressions.

JavaOne, c'est aussi l'occasion de faire des rencontres interessantes, inattendues, et de découvrir de nouvelles choses, de parfaire sa connaissance de Java.

Remerciements

Je tiens à remercier Sun Microsystems pour avoir rendu ce voyage possible ainsi que pour avoir su organiser de nombreuses rencontres de qualité avec certains de ses représentants.

Je souhaite également remercier les journalistes présents sur place, qui m'ont fait partager une partie de leur quotidien. J'ai ainsi pu en apprendre sur les réalités de leur métier.

J'aimerais exprimer ma gratitude envers Marc Lussac, rédacteur en chef de developpez.com, pour m'avoir mis en contact avec Sun Microsystems et pour m'avoir accordé sa confiance dans la réalisation de ce reportage.

Enfin, merci aux relecteurs de cet article : vbrabant, lunatix