JavaOne 2007

Christophe Jollivet

Grâce à Sun, j'ai eu la chance cette année de pouvoir assister à JavaOne, la plus grande réunion annuelle autour de Java.
Cette année JavaOne était du 8 au 11 mai à San Francisco. Cet événement était précédé le 7 par un CommunityOne, une journée consacrée aux communautés (Glassfish, Open JDK, OpenSolaris) et le NetBeans Day.

JavaOne c'est la plus grosse conférence mondiale sur Java. C'est à ce moment là que SUN fait les annonces importantes et que nous pouvons tenter de deviner ce que sera la tendance à venir.

- Titre : JavaOne 2007

- Auteur : Christophe Jollivet

- Parution : 12 juillet 2007

- Licence : Copyright ® 2007 Christophe Jollivet. 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

- I. Les préparatifs

- II. Dimanche - arrivée

- III. Lundi - Community One

- III-A. Keynote

- III-B. Creating Off-Line Web 2.0 Applications; Learn How Zimbra Did It S288592

- III-C. Web 2.0 Collaboration with Ajax Push S288060

- III-D. Ajax Applications Made Easy with jMaki and Scripting S288058

- III-E. Swing GUI Building With Matisse: Chapter II S288231

- III-F. JRuby : Understand the Fuss S288232

- III-G. Netbeans Day: Closing General Session S288238

- III-H. Community Reception

- IV. Mardi JavaOne jour 1

- IV-A. Keynote

- IV-B. Conférence de presse

- IV-C. Closure de Neal Gafter TS-2294

- IV-D. Diner de la presse

- V. Mercredi JavaOne J2

- V-A. Effective Java Reloaded: This Time It's for Real Joshua Bloch TS-2689

- V-B. Fast, Beautiful, Easy: Pick Three--Building Web User Interfaces in the Java Programming Language with Google Web Toolkit Bruce Johnson; Joel Webber TS-6475

- V-C. Testing Java Code: Beyond the IDE Ian Darwin TS-9667

- V-D. Effective Concurrency for the Java Platform Brian Goetz TS-2388

- V-E. Java Champions BOF: The Latest BuzZ, Update, and Panel Discussion BOF 1381

- V-F. JUG Leaders BOF with Sun Technology Outreach BOF 1382

- VI. Jeudi JavaOne J3

- VI-A. Java Persistence API: Portability Do's and Don'ts Michael Keith TS-4568

- VI-B. Why Spaghetti Is Not Tasty: Architecting Full-Scale Swing Apps Jasper Potts; Mikhail Lapshin TS-3316

- VI-C. Beans Binding Shannon Hickey; Hans Muller; Jan Stola TS-3569

- VI-D. After dark bash

- VII. Vendredi JavaOne J4

- VII-A. Keynote

- VIII. Pensées et autres

- VIII-A. Quelques réflexions

- VIII-SB. Quelques conseils

- VIII-C. Quelques liens

I - Les préparatifs

Parmi les préparatifs il y a le planning à faire. Il faut construire son planning à l'avance dans une application du site web accessible aux personnes enregistrées. Les sessions réservées sont enregistrées sur le pass donné le premier jour et contrôlé aux entrées des salles de conférence. Si vous n'êtes pas inscrit, vous êtes mis sur une file d'attente et autorisé à remplir les places vides 3 minutes avant le début de la conférence. Des postes sont à disposition pour permettre de modifier le planning jusqu'à une demi-heure avant le début des conférences. Le choix dans le programme est difficile. En dehors des Keynotes, il y a jusqu'à 13 conférences simultanées, on est donc obligé de faire des choix. Sans parler des mini-conférences se tenant sur les stands des exposants dans le pavillon. Le système de planification nous aide en indiquant les conférences données plusieurs fois et celles qui rentrent en conflit avec un de nos choix précédents. Malheureusement il ne recense pas les mini-conférences du pavillon des exposants et ne nous permet pas de nous dédoubler pour suivre plusieurs conférences simultanées...

II - Dimanche - arrivée

Après un long voyage en avion (11h30 de vol), j'ai rejoint l'hôtel pour déposer mes bagages. Puis je suis parti repérer le Moscone Center et récupérer mon package.

Le package contient un sac à dos, un programme, un CD de démo ou DVD et un crayon avec un petit calepin. Il y a aussi un badge permettant l'accès aux conférences.

J'étais logé au Sir Francis Drake Hotel, à 10 minutes à pied du Moscone Center, le long de Powell Street, une des rues en pentes où passe le Cable car. (carte google maps)

J'ai ensuite fait un peu de tourisme dans San Francisco (cable-car, les fameuses rues en pente, le quartier chinois, Port 39 et les lions de mer et Alcatraz).

La soirée s'est terminée par un diner avec quelques Français, organisé par SUN.

III - Lundi - Community One

III-A - Keynote

L'ouverture du Keynote a été faite par Rich Green, Exec VP for Software. Il a commencé par rappeler que SUN est le premier contributeur Open Source au monde. Il a contribué trois fois plus que le second, IBM. Il a ensuite indiqué que SUN souhaite continuer à soutenir les communautés open sources, notamment par l'embauche de contributeurs pour leur permettre de continuer cette activité tout en étant rémunérés.

Il a ensuite passé la parole à Tim O'Reilly, founder and CEO of O'Reilly. Celui ci a commencé par nous rappeler que nous utilisons tous les logiciels open source et Linux puisque nous utilisons tous Google. Il a ensuite traité de l'évolution des logiciels. Dans les "killer apps" d'Internet, la valeur n'est pas le logiciel en lui même mais la base de connaissances qui va avec. Des applications comme Google, Wikipedia, Craiglist ou Ebay trouvent leurs valeurs par la quantité de données qu'elles regroupent et ces données sont générées par la communauté d'utilisateurs. Ce sont des agrégateurs de données et services, non plus des logiciels. C'est aussi le verrou de l'utilisateur de demain. Si l'utilisateur actuel est lié à une application par le format des données qu'elle utilise, celui de demain sera lié à ces applications web par la quantité de données qu'elles contiennent. Qui est capable aujourd'hui de concurrencer une de ces applications? Il a ensuite fait référence à la loi de Clayton Christensen sur la conservation des bénéfices attrayants : si le logiciel n'est plus la partie propriétaire, alors l'agrégation de données le devient.

L'autre point marquant de ces applications est aussi le nouveau modèle de développement apporté. Le point le plus visible est celui de l'application en perpétuel Béta. L'apport principal de ces nouvelles applications est la vitesse de mise sur le marché. Vous programmez cette nuit et c'est sur le web demain matin alors que des applications distribuées sur CD nécessitent jusqu'à 3 mois de packaging et mise en distribution.

En résumé de sa présentation, je vous recommande la lecture de cet excellent article.

Tim O'Reilly a posé trois questions aux personnes représentant SUN (Rich Green, Tim Bray, Ian Murdock) :

- Comment aidez-vous les développeurs à renforcer l'intelligence collective?

- Comment aidez-vous les développeurs à créer des logiciels vivants?

- Comment gérez-vous le "data lock-in"?

Tim Bray a répondu qu'il n'aime pas le terme de contenu généré par l'utilisateur ("user generated content"). Il ne se considère pas comme un utilisateur et ne génère pas, mais comme une personne qui écrit. Le terme est un problème d'attitude. Le problème est que les entrepreneurs veulent avoir le contenu gratuitement et ne pas payer pour cela. Rich Green s'est alors demandé si un appel téléphonique est un "contenu généré par l'utilisateur" ou une communication. Il pense que les frontières entre les deux concepts sont floues.

Sont venues ensuite quelques questions que la salle pouvait envoyer par Mail ou SMS à une adresse et numéro affichés à l'écran.

Y-a-t-il une limite à ce que Sun va mettre en Open Source? Rich Green : Seulement des conditions marginales. Presque tout devrait être mis en Open Source.

A quoi va ressembler le web 3.0 ? Tom O'Reilly a suggéré qu'il n'y aura plus de texte écrit. Cela signifie de la voix et des gestes, mais principalement cela signifie récupérer des comportements d'utilisateurs plutôt que fournir explicitement des données. Les sites web 2.0 avec le plus de succès analysent ce que les utilisateurs font pour leur propres raisons et intérêts plutôt que demander aux utilisateurs de soumettre explicitement au site.

Est ce que Sun va embrasser d'autres langages que Java? Où se positionne Java dans l'écosystème d'Eclipse? Rich Green a indiqué que déjà cent langages fonctionnent sur la machine virtuelle. Ian Murdock s'est demandé pourquoi le système d'exploitation est toujours un souci.

Qu'est ce qui empêche les bases de données générées par les utilisateurs d'être en compétition avec les bases de données propriétaires? Tim O'Reilly pense que cela peut être fait pour les bases de données ancien modèle, non créées par l'utilisateurs (par exemple Navteq). Mais il existe une masse critique qui va emprisonner les gens à Ebay ou autres par exemple qui occupent tellement le segment de marché qu'ils tuent instantanément une concurrence naissante... Tim Bray a ajouté que toutefois les marchés peuvent évoluer, ainsi Wikipedia prend des parts à Google. Il va chez Wikipedia en premier pour trouver une biographie.

Pourquoi Flash et Ajax battent les Applets? Rich Green a répondu "Wait 23 hours". (on aura le lendemain l'annonce de JavaFX et du Consumer JRE).

Il y a eu aussi une discussion sur la monétisation de l'Open Source sans compensation pour les développeurs. Sun monétise principalement le code qu'il développe lui même donc ils n'ont pas trop de problème à ce niveau. Toutefois Rich Green ne pense pas que le modèle courant de monétisation du code des autres avec mise en off shore des emplois sera viable sur le long terme.

III-B - Creating Off-Line Web 2.0 Applications; Learn How Zimbra Did It S288592

Le web déconnecté ou web offline sera-t-il le web 2.0+ ?
François Orsini a commencé par nous présenter Derby ou JavaDB. C'est une base de données Java avec une faible empreinte mémoire (2 MB) implémentant les standards JDBC et SQL 92/99 et 2003. Elle est embedabble c'est à dire capable de fonctionner dans la même JVM que l'application, les appels peuvent donc se faire directement au sein de la JVM, améliorant les performances. Cette base présente toutes les fonctionnalités : ACID, niveau d'isolation des transactions, détection des deadlocks, vues, triggers, procédures stockées, fonctions, mise en cache de Statement, write ahead, log et group commit.

François a présenté son application de démonstration qui est téléchargeable à l'adresse : http://developers.sun.com/javadb/overview/product_tour/readme.jsp JavaDB est utilisée dans une Applet masquée dans la page et appelée par du Javascript dans la page afin d'utiliser la base comme un cache local pour les données de l'application web.

La deuxième partie de la conférence a été faite par Kevin Henrickson de Zimbra pour présenter leur solution de client mail. L'interface est la même pour la version online et offline. La version offline utilise un "micro serveur" reposant sur Derby, Lucene et Jetty et dispose de fonctionnalités de sychronisation avec la version online. C'est enfin la possibilité d'avoir un client de mail qui marche offline et qui soit accessible online de n'importe quel navigateur et avec une seule et même interface.

III-C - Web 2.0 Collaboration with Ajax Push S288060

Ted Goddard de ICEsoft Technologies a commencé par présenter les intérêts et solutions pour faire du Push en Ajax. Le principe du Push est de permettre au serveur d'être à l'initiative de la communication et donc d'une éventuelle mise à jour de la page par Ajax. Le principe, bien que non explicitement recommandé par la norme HTTP, n'est pas interdit. Il se déroule en trois étapes :

- le navigateur demande un rafraîchissement

- le serveur suspend la réponse pour ne la donner que lors de l'arrivé d'un événement

- le navigateur répète la demande de rafraîchissement.

Il a ensuite parlé brièvement de solutions alternatives comme Comet ou Reverse Ajax.
Des applications des techniques de push peuvent être la mise à jour d'un résultat de recherche pour refléter les liens cassés, des applications collaboratives (enseignements à distance, enchères, calendrier partagé, jeux...) Ensuite il a présenté la solution ICEFaces d'ICEsoft pour faire du push Ajax.

III-D - Ajax Applications Made Easy with jMaki and Scripting S288058

Ludovic Champenois, Roberto Chinnici, Craig McClanahan, Gregory Murray, tous de chez SUN, nous ont fait une présentation sur JMaki, J comme Javascript et Maki comme emballé en Japonais. JMaki est une interface commune pour toutes les librairies Javascript, permettant un support multitechnologies (JSP, JSF, Facelet, Portlet ou PHP (par Phobos)). L'utilisation de JMaki passe par celle de widgets créés ex-nihilo ou comme des wrappers autour de widgets existant dans d'autres librairies. Le runtime du serveur va fournir les dépendances et le binding des données. JMaki est aussi composé d'un ensemble de services clients pour gérer les widgets, des layouts et thèmes, ainsi qu'un système de publication-souscription pour assembler les widgets. JMaki fourni aussi un HTMLHTTPProxy permettant l'accès aux web services RESTful, aux flux RSS, la conversion de données au format JSON. Les widgets sont composées de 3 fichiers : HTML, CSS et Javascript, permettant une gestion fine des thèmes en suivant les règles des CSS. Le système de publication-souscription est basé sur le javascript et chargé au niveau de la page ou de l'application. Il utilise un système de Handlers mappés sur les noms des topics.
JMaki apporte donc un système très intéressant pour rendre homogène les différents widgets existants et les faire communiquer ensemble.

La seconde partie de la présentation a traité de Phobos permettant l'utilisation du Javascript coté serveur pour construire des applications web 2.0.
Phobos supporte plusieurs langages de script, mais l'accent est actuellement mis sur Javascript. Le développement est vraiment interactif avec NetBeans (des plugins sont disponibles) et centré sur l'URL. La génération du war ne se fait que lorsque le développement est fini. Le déploiement de l'application ne prend donc qu'une seconde pendant le développement.
Les frameworks légers sont vraiment complémentaires des gros framework actuels. De plus, Gartner en novembre 2006 voit javascript sur le serveur émerger comme une technologie majeure en 2009 avec une probabilité de 0,7.

Cette présentation a aussi été l'occasion d'avoir une preview de l'intégration de Ruby on Rails dans JMaki.

III-E - Swing GUI Building With Matisse: Chapter II S288231

Cette session nous a présenté les nouveautés de matisse ainsi que les implémentation actuelles des JSR 295 (Beans Binding) et JSR 296 (Swing Application Framework).
Le Swing Application Framework permet de simplifier le développement des applications à l'aide de template. Il apporte aussi un système de gestion de timer. Le Beans Binding permet de lier deux propriétés de deux Beans (plus d'infos dans la partie sur la session de jeudi).

Les explications de ces deux JSR ont été accompagnées du développement en live de deux applications. La première permettait de faire des recherches sur FlickR et afficher la première photo. La seconde était une simulation de bandeau lumineux de LED affichant des messages défilant et dont on pouvait changer les propriétés par des contrôles dans le bas de l'interface.
Ces démonstrations ont aussi été l'occasion de montrer les nouvelles fonctionnalités de Matisse : support de l'internationalisation, gestion des Look&Feel, réorganisation de la palette, drag and drop des composants depuis la vue projet (plus besoin de les ajouter à la palette), la refonte de l'éditeur de code, l'intégration du Java Webstart dans les propriétés, l'amélioration du copier-coller et duplicate de composants multiples....

La session s'est terminée par la création en 5 minutes d'un mashup permettant la localisation et l'affichage de photos.

III-F - JRuby : Understand the Fuss S288232

La session a été menée par Tor Norbye qui a commencé par nous présenter Ruby avec tous ses avantages par rapport à Java (closures, litterals for arrays, duck typing, gestion des librairies....). Il a ensuite parlé de Ruby on Rails en nous montrant la qualité du support dans NetBeans : support de la documentation dans les popups, complétion du code, complétion des expressions régulières et caractères spéciaux dans les chaînes, débuggage des applications...

Il a conclu la session en nous montrant la simplicité de développement pour une application de type Blog.

III-G - Netbeans Day: Closing General Session S288238

La session de conclusion a été menée par James Gosling. Il a commencé par préciser qu'il est toujours autant enthousiaste devant l'évolution de Java qu'il a laissé tomber emacs il y a quelques années pour NetBeans et tente de convaincre ses anciens camarades de laisser tomber emacs et vi. Il confirme également que l'accent sera mis sur le client cette année.

Ensuite il y a eu une série de petites présentations avec le magazine NetBeans et NetBeans TV. Ensuite Henry Story et Tim Boudreau de SUN nous ont parlé du web sémantique, de REST et du projet de support dans NetBeans.

Puis Geertjan Wielienga nous a fait une présentation du NetBeans Movie Player (un lecteur vidéo basé sur NetBeans platform) sur Ubuntu.

Enfin nous avons eu un excellent moment avec la présentation de Bob Beasley et son D.O.R.K: Dog Oral Reward Kit. Il s'agit d'une boite de voyage pour petit chien équipé d'un système de libération de croquette et gestion de la porte, piloté avec des SunSpots. Le système est piloté par une webapp développée avec le Visual Web Pack de NetBeans. La connexion à l'application permet de voir l'image de la webcam, de déclencher des fichiers audio pour appeler le chien et de piloter le système sur la boite. A noter que cela ne fait que 7 mois que Bob fait du Java.

Bruno Souza a conclu en nous présentant la NetBeans Dream Team.

III-H - Community Reception

Le hall principal avait été rempli de tables couvertes de nourriture et les serveurs faisaient couler la bière à flot. Cela a été l'occasion pour moi de rencontrer les JUG Leaders que je ne connaissais pas encore. Nous avons pu discuter des différentes organisations, les discussions se sont poursuivies dans un restaurant à proximité du Moscone center.

IV - Mardi JavaOne jour 1

IV-A - Keynote

Le keynote du premier jour est le moment des annonces. C'est un grand show à l'américaine avec une scène immense, dans une salle immense. Le temps que la salle se remplisse, un DJ fait l'animation pendant que défilent des images de différents sites web (à noter que toutes les captures ont été faites sur un mac avec safari ou firefox).

John Gage a ouvert la session en indiquant que SUN a essayé de faire que la conférence soit neutre au niveau du carbone. Ils ont échoué cette année en raison de la difficulté à mesurer toutes les sources de carbone associées avec les conférences. Ils réessaieront l'année prochaine.

Il a ensuite indiqué que pour lui l'avenir est du coté des appareils mobiles connectés sur Internet. Toutefois deux problèmes demeurent. Le premier est le prix de ces appareils qu'il serait possible de faire baisser en ouvrant tous les composants pour en augmenter la diffusion. Le second est celui de l'énergie qui reste problématique. Effectivement, un chargeur solaire de type Solio donne 10 minutes de conversation pour une heure de chargement solaire, mais il manque toujours un standard de connectique.

Il a aussi engagé les gens à ne pas être timide. Il nous a demandé de tous être "Brésiliens" (les Brésiliens se sont alors levés en criant). Il veut que nous allions vers les gens pour nous présenter, que nous ne restions pas avec les gens que nous connaissons, nous sommes ici pour rencontrer des gens, il faut de la convivialité.
Il a conclu en nous demandant de tous nous lever. Ensuite il a demandé aux gens de se remettre assis par nombre de fois croissante que l'on venait à JavaOne. Il a incité tous ceux dont c'est la première fois à aller à la rencontre des "anciens".

Il a ensuite passé la parole à Rich Green qui a fait la suite du Keynote et les annonces. Rich a commencé par indiquer que la communauté est une propriété fondamentale des humains mais qu'il existe des barrières à cette communauté (la langue, la distance...) mais aussi que la technologie permet de faire tomber ces barrières.

Il a ensuite donné quelques chiffres sur la technologie Java avant d'accueillir Martin Harriman, vp sales, marketing and business development at Ericsson Enterprise, qui a annoncé la mise en open source d'une partie de leur technologie multimédia coté serveur pour permettre la communication avec les appareils mobiles. Ces technologies seront dans GlassFish.

Rich a ensuite annoncé que Java Real Time (Java RT) est enfin prédictible grâce à la version 2 de la spécification. Il accueille alors Anna Ewing, Executive Vice President of Operations and Technology and Chief Information Officer du Nasdaq, qui a annoncé que le Nasdaq prototype actuellement un passage à Java RT (le Nasdaq traite plus de 150 000 transactions par seconde).

Rich a ensuite parlé de Java du coté du divertissement numérique (la PS3, les DVD Blue Ray, les set top box). Tom Hallman, P of production operations/digital authoring center for Sony, qui est venu nous présenter un exemple avec le menu d'un DVD Blue-Ray dont le contenu est modifié en temps réel (par exemple le vol d'un papillon qui varie selon les éléments du menu).

Puis Rich Green a parlé de NetBeans dont les utilisateurs ont augmenté de 92% l'année passée. Il a aussi indiqué aussi la disponibilité des pré-release avec le support pour JRuby.

L'annonce suivante a été celle de la fin du processus de mise en open source du JDK. Le projet OpenJDK est dorénavant complet. Il a aussi annoncé la création d'une gouvernance provisoire pour OpenJDK qui sera chargée de rédiger une constitution et d'organiser des élections. Les membres de cette gouvernance provisoire sont : Doug Lea, Fabiane Nardon, Simon Phipps, Mark Reinhold, et Dalibor Topic. En complément Rich a annoncé la mise en open source du TCK pour permettre d'assurer la compatibilité à travers toutes les communautés Open Source. Il a conclu pour cette partie en envoyant un mail sur la mailing liste de OpenJDK pour indiquer la fin du processus de mise en open source.

Rich a ensuite indiqué que les prochaines releases du JDK seront orientées vers le client. Il fallait voir dans cette annonce qui est passée relativement discrètement celle du consumer JRE (voir nos blogs ici et là) ainsi que de l'amélioration des performances.

L'annonce suivante qui a aussi été la principale de JavaOne etait celle de JavaFX composé de Java FX script, un langage de script pour faire du RIA et sa version mobile avec JavaFX mobile. Le positionnement de JavaFX est clairement en concurrent de Flash ou Silverlight. James Gosling est monté sur scène pour la démonstration de Java FX avec Chris Oliver. Ils ont présenté des applications web pleines d'effets type fade in fade out et roll over, ainsi que quelques morceaux de code.
Pour la présentation de la version mobile Rich Green a présenté un téléphone qui semble un concurrent du IPhone de Apple et qui vaudrait le surnom de Steve Job de SUN à Rich Green.

Marco Boerries, Yahoo! senior vice president, est ensuite monté sur scène pour présenter Yahoo Go Mobile portal pour accéder à un ensemble de ressources depuis un téléphone mobile Java.

Jonathan Schwartz, Sun Microsystems CEO, est alors remonté sur scène pour la partie business de la conférence. Il a expliqué que le travail de SUN est de servir les sociétés qui veulent construire des relations entre les gens par l'intermédiaire des réseaux. Il a ajouté que les gouvernements et ces entreprises veulent de la franchise, de l'ouverture.
Ensuite Jonathan Schwartz, Rich Green, et Scott McNealy ont accueilli le docteur Djibril Diallo des Nations Unies, qui a annoncé que SUN travaillera avec d'autre pour la création d'une initiative "ingénieurs sans frontières" pour la mise en place d'une infrastructure permettant aux entreprises et leaders de communautés de produire une solution de connexion des gens autour de la planète -- et changer le monde.

Scott McNealy a aussi présenté le projet curriki.org comme un outils d'éducation libre et ouvert, et a ajouté qu'il voulait que les gens s'inscrivent, évangélisent, donnent et construisent une communauté. "All the people of the planet have the potential to learn".

Rich Green a alors fait la conclusion du Keynote, il a rappelé la croissance instoppable de Java, que Java a rejoint la communauté des logiciels Open Source, que les Rich Internet Applications Java arrivent avec Java Fx, et enfin que le réseau est dans notre main. Il a ensuite lancé une invitation à participer, contribuer et innover.

Pour finir James Gosling a lancé quelques t-shirt en édition limitée dans la foule avant de préciser que à JavaOne, le sommeil est optionnel voir indésirable.

IV-B - Conférence de presse

Le keynote était suivi par une conférence de presse réunissant Jonathan Schwartz, Rich Green, le docteur Djibril Diallo et quelques journalistes.
Les questions ont naturellement abordé Java Fx et notamment s'il n'arrive pas trop tard par rapport à Flash. Jonathan Schwartz indique que le problème n'est pas la technologie mais le changement que la technologie peut apporter aux gens. D'ailleurs Rich Green insiste sur l'utilisation du terme "people" à la place du terme "consumers". Il a aussi été précisé que des outils sont prévus pour rendre Java Fx aussi facile que Flash et que ces outils seront gratuits. De même Java Fx Mobile sera sous forme de binaires licenciés aux opérateurs de réseau.
Un journaliste soulève aussi une question concernant l'initiative de corriki. Il demande à quoi cela sert si les gens n'ont pas accès au réseau. Le docteur Diallo explique alors qu'en République du Congo (un des pays les plus riches d'Afrique), il y a quelques centaines de lignes de téléphone mais une des plus fortes concentrations en téléphone portable, rejoignant ainsi ce que disait Rich Green au début du Keynote : que l'avenir est aux appareils mobiles connectés au réseau.

IV-C - Closure de Neal Gafter TS-2294

Neal Gafter a ouvert sa conférence en citant Mark Jason Dominus : "dans 30 ans, nous rirons des gens faisant des langages sans closures comme on rit de ceux faisant des langages sans récursivité".

Il a commencé par repréciser les buts des closures : des fonctions littérales concises sans les problèmes des instances anonymes. Il a ensuite enchaîné avec une série d'exemples soulevant des problèmes liés aux classes anonymes. Il en a déduit les besoins pour les closures et ensuite les spécifications. Il a ensuite donné quelques exemples de syntaxe des closures.

Il a aussi profité de cette conférence pour présenter de nouvelles modifications ou API, notamment sur les Collections, la concurrence, la fermeture des flux, les agrégats d'opérations.

Lien vers la présentation

IV-D - Diner de la presse

La journée s'est finie par un dîner pour la presse internationale. J'étais à table avec d'autres journalistes et Ian Murdock et Mark Herring. Ce dernier nous a confirmé le positionnement de JavaFX comme un concurrent de Flex (d'ailleurs le choix du nom ne semble pas innocent...)
Nous avons aussi discuté des marchés informatiques dans les différents pays des journalistes présents (Hollande, Brésil, Allemagne), que ce soient les langages, les OS ou les modèles économiques.

V - Mercredi JavaOne J2

V-A - Effective Java Reloaded: This Time It's for Real Joshua Bloch TS-2689

Cette conférence, par l'auteur de Java Efficace, est le genre de conférence d'où l'on sort avec l'impression que finalement on ne sait pas bien programmer en Java.... Joshua Bloch nous a présenté quelques astuces parmi lesquelles des fabriques statiques et un pattern builder. Il a enchaîné sur la bonne utilisation des generics et surtout les pièges à éviter, ainsi qu'un "typesafe heterogeneous container pattern". On s'aperçoit alors que les generics sont beaucoup plus puissants que ce que l'on utilise tous les jours. Il a fini avec quelques conseils sur l'utilisation de l'annotation @override et du mot clé final.

Lien vers la présentation

V-B - Fast, Beautiful, Easy: Pick Three--Building Web User Interfaces in the Java Programming Language with Google Web Toolkit Bruce Johnson; Joel Webber TS-6475

Une présentation de GWT par les deux créateurs de cette boite à outils. Ils ont commencé par nous présenter Ajax et ce que cela peut apporter au web. Ils ont aussi montré que cela peut aussi être très compliqué. Ils ont alors introduit GWT, comme une solution à ce problème. Ils ont présenté les fonctionnalités de GWT ainsi que le travail fait pour améliorer l'expérience utilisateur et les performances tout en simplifiant le travail du développeur. Ils ont également fait quelques démonstrations des outils de développement du Kit GWT. Un tour complet de GWT qui a fait que depuis je me suis intéressé à cet outil.

Lien vers la présentation

V-C - Testing Java Code: Beyond the IDE Ian Darwin TS-9667

Cette présentation traitait des outils d'analyse de code comme PMD et FindBug que je connaissais déjà pour les utiliser régulièrement et en avoir parlé lors de ma présentation aux Sun TechDays à Paris. Ces outils font de l'analyse statique du code ou du bytecode pour trouver certains patterns susceptibles de correspondre à des bugs. Il a aussi présenté le JPF (Java Path Finder http://javapathfinder.sourceforge.net/ ) qui est un outil créé par la NASA pour faire de l'analyse dynamique du code. Cet outil est capable de détecter des ThreadLock et "races conditions". Il s'agit de l'implémentation d'une machine à état dans une JVM pour évaluer tous les parcours possibles du code. Le seul problème est que l'implémentation est actuellement incomplète et ne supporte pas certaines parties de l'API comme AWT ou les sockets.

Lien vers la présentation

V-D - Effective Concurrency for the Java Platform Brian Goetz TS-2388

Brian est l'auteur de référence dans le domaine de la concurrence sur la plateforme Java, il a d'ailleurs été embauché par Sun récemment.
Il a présenté sa conférence comme un ensemble de réflexions suite à l'écriture de son livre. Il a commencé par parler de la proposition d'annotations @ThreadSafe, @NotThreadSafe et @GuardedBy dans le cadre de la JSR 305. L'idée est de rendre plus visible le comportement face à la concurrence et de s'offrir la possibilité de détection de problème avec des outils de type Findbug. Il a ensuite rappelé l'intérêt d'un certain nombre de bonne pratique comme l'encapsulation, l'immutabilité (l'éventuelle nécessité d'une annotation @Immutable ?). Il a enfin parlé des problèmes de montées en charge et parallélisation des tâches.

Lien vers la présentation

V-E - Java Champions BOF: The Latest BuzZ, Update, and Panel Discussion BOF 1381

Après une rapide présentation du programme, les discussions se sont orientées vers les problèmes que certains Java Champions ont ou ont eu pour se faire entendre des bureaux locaux de SUN. Le problème des leaders de communautés qui n'ont pas le temps d'être visibles sur le web par l'intermédiaire d'un blog par exemple a aussi été soulevé. Cela est problématique car certains d'entre eux mériteraient le titre de Java Champions pour leurs actions mais ne se font pas repérer.

V-F - JUG Leaders BOF with Sun Technology Outreach BOF 1382

Une trentaine de JUG Leaders étaient présents, représentant presque autant de nationalités. Il a été sujet d'organisation d'événements dans les JUG et de la venue des speakers officiels de SUN avec la mise en place d'une organisation entre les JUG pour profiter des speakers lorsqu'ils sont présents dans une région du monde. Il a aussi été question des relations des JUG avec les bureaux locaux de SUN.

VI - Jeudi JavaOne J3

VI-A - Java Persistence API: Portability Do's and Don'ts Michael Keith TS-4568

La présentation a commencé par un rappel de ce qu'est JPA ainsi que des différentes implémentations disponibles. Il a ensuite parlé de la difficulté à concilier les fonctionnalités, la portabilité et la simplicité. Il a ainsi parlé de certains problèmes indirects liés à la spécification, notamment au niveau des Persistance Unit Properties. La spécification veut que les propriétés des autres implémentations soient ignorées. Une conséquence directe est que en cas de faute dans le fichier xml, il n'y a pas de message d'erreur, la propriété est tout simplement ignorée. Il en va de même pour les Query hints, les transactions pessimistes ou la génération du DDL. Le speaker a indiqué que la version 2 de la spécification JPA devrait corriger un certain nombre de ces problèmes.

Lien vers la présentation

VI-B - Why Spaghetti Is Not Tasty: Architecting Full-Scale Swing Apps Jasper Potts; Mikhail Lapshin TS-3316

Jasper Pott est un des auteurs de l'applet de démonstration du Keynote du vendredi : Iris. Il a commencé par nous parler des problèmes des applications Swing, avec le fait que les Actions et les Vues se voient. La première solution où chaque composant voit tous les autres devient vite inmaintenable. Généralement on créé alors un coeur d'application sous forme d'un singleton, mais cela devient compliqué s'il y a beaucoup de vues et d'actions. Il est alors possible de passer un référence du coeur de l'application dans les constructeurs de vues et actions, mais cela reste aussi compliqué. La solution est un découpage sous forme de module.
C'est alors qu'il introduit son framework SPAR sous license BSD. Ce framework utilise la base de Eclipse OSGi et ajoute une dose de Spring dedans pour faire de l'injection et système de bus d'événements pour la communication entre les différents modules de l'application. L'application de démonstration Imagery est impressionnante. C'est une preuve de plus qu'on peut faire des choses belles et performantes en Java. A noter pour ceux qui veulent tester qu'elle est "Windows Only" à cause de bibliothèques natives pour lire tous les formats d'image. Voir le blog de Jasper

Lien vers la présentation

VI-C - Beans Binding Shannon Hickey; Hans Muller; Jan Stola TS-3569

Le Bean Binding correspond à la JSR 295. La JSR n'est pas encore finale mais une pré-release est disponible sous licence LGPL pour avoir des retours par les développeurs. L'objectif de cette JSR est de permettre de mettre en relation deux propriétés de deux composants. L'utilisation de l'Expression Language (comme dans les JSP) pour décrire la propriété de la source impliquée dans le binding permet de faire des choses très puissantes. Par exemple vous pouvez lier le libellé d'un label à une JTable de personnes et pour afficher le nom et prénom séparés par une virgule de celui qui est sélectionné, vous utilisez l'expression :

${selectedItem.nom}, ${selectedItem.prénom}

Il est aussi possible de définir des convertisseurs, des validateurs, des stratégies de mises à jours ou des contextes de Binding permettant de manipuler plusieurs bindings d'un coup. La session a été cloturée par une démonstration dans NetBeans d'un bandeau d'affichage défilant qui a été très appréciée. A noter que j'ai aussi remarqué une des nouvelles fonctionnalités de l'éditeur puisque le speaker a simplement cliqué sur le fichier du composant graphique dans l'explorateur de projet pour ensuite faire un drag and drop sur l'éditeur d'interface, plus besoin de l'ajout dans la palette de composant...

Lien vers la présentation

VI-D - After dark bash

Cette soirée est organisée pour la dernière soirée de JavaOne. Il y avait de la nourriture à volonté, deux coupons de boissons par personne. Pour l'animation, il y a eu un groupe de Rock : MiniKiss suivi par un tournoi de BattleBot, un animation à l'entracte avec la GrinderGirl et enfin un groupe faisant des reprises des Rolling Stone. Il y avait aussi la possibilité de faire du trampoline à élastique, segway, et divers autres attractions.

VII - Vendredi JavaOne J4

VII-A - Keynote

James Gosling était le maître de cérémonie de ce dernier Keynote et le sujet était "Toy show". Une série de démonstration d'utilitaire ou gadget utilisant Java :

- DTrace pour Java : une version de l'outil de profiling, impressionnante par le nombre d'informations que l'on peut récupérer. Le projet est encore jeune et sera disponible à la fin du mois sous forme de plugin pour Sun Studio sur Solaris. Un plugin pour NetBeans est prévu.

- Sun Grid computing utility : un système de grille de calcul à distance. Dans la démo une macro OpenOffice est programmée pour envoyer le contenu du feuille de calcul par Web Service à la grille de calcul qui renvoie l'information.

- Java et Ruby on Rails : Une démonstration de Tor Norbye avec NetBeans 6. En 5 minutes, il a généré une classe Java utilisant JPA pour prendre les informations dans une base de données, écrit le test unitaire et enfin écrit une application Ruby on Rails qui utilisait cette classe Java et affichait le résultat de la sélection de toute la base. Impressionnant de facilité.

- Java Me et Ricoh : Petr Suchomel a refait la démonstration des Sun Tech Days de Paris, une photo de James Gosling avec son téléphone, l'upload vers un serveur. Puis depuis le copieur Ricoh, l'accès à la photo et son impression, le tout grâce à Java.

- Ubiquitech : qui est le gagnant du Duke Choice award de cette année. Nous a fait une démonstration de l'utilisation de la JSR 82 (Bluetooth API) pour une solution de management de document par l'intermédiaire d'un téléphone portable.

- Blu-Ray DVD : Une démonstration des apports de Java pour les DVD. Cela permet par exemple la recherche dans un glossaire comme pour un livre, l'incrustation d'une carte pour situer l'action, un quizz.... A noter que sur leur site vous pourrez télécharger un kit de développement pour vous permettre de participer au concours.

- Cineshot : une application impressionnante en Java qui permet d'analyser en temps réel l'image provenant d'une caméra sur port Firewire (histogramme de niveau, surexposition...) d'ajouter des informations sur l'image (zone surexposée) ou de réaliser des trucages comme l'incrustation grâce au fond vert

- Le projet Wonderland : qui est un "second life" open source utilisant LookingGlass et le serveur de jeu de SUN Darkstar. Par contre il fait plus puisqu'il permet de partager les écrans de vos application et donc d'organiser du travail collaboratif. Les téléconférences insipides avec une vidéo-projection de l'écran et un haut parleur de téléphone sont finies... Vous pouvez regrouper les avatars dans des salles, projeter au mur les applications, modeler des objets, les niveaux sonores des conversions varient selon la distance... Cela sera aussi intéressant pour l'enseignement à distance pour les enfants hospitalisés par exemple.

- Robosapien RSMedia : une version entièrement programmable du robot en Java. Nous avons eu le droit à une petite chorégraphie de 3 robots sur "I will survive".

- Une démonstration du robot industriel le plus rapide du monde (accélération jusqu'à 10g), programmé en Java pour refaire des dessins à partir de photo. La position du bras est calculée en permanence grâce à Java Real Time

- SONIA AUV project : un sous marin autonome et intelligent programmé en Java. C'est un projet des étudiants d'une école de technologie québecoise.

- Perrone robotics : un hélicoptère fonctionnant avec Solaris et JavaRT pour faire des mesures laser sur le terrain survolé et reconstruire le terrain en 3D.

Beaucoup de technologies, mais une grande place pour Java RT cette année. L'époque du garbage collector "stop the world" est donc bien révolue, Java RT est utilisable.

VIII - Pensées et autres

VIII-A - Quelques réflexions

Lors du Keynote James Gosling a dit quelque chose comme "à JavaOne, dormir est optionnel, voir dormir n'est pas préférable...."
Avec le problème du décalage horaire, je confirme que dormir est optionnel. J'ai mis trois nuit avant de ne plus me réveiller à 3 heures du matin (midi en France...). En plus les soirées se prolongent facilement.

Il y a énormément de gens. Pour assurer les places dans les conférences, il faut réserver et vos réservations sont enregistrées sur votre pass. Ces pass sont vérifiés à l'entrée des conférences... Ce qui fait qu'il y a souvent de grandes files d'attente à l'entrée des salles avec des temps d'attente parfois importants qui font que lorsque l'on rentre dans la salle, la session est déjà commencée....

La moyenne d'âge m'a semblé plus élevée que dans les événements en France et la parité n'est pas encore atteinte mais on croise quand même plus de femmes

J'ai vraiment trouvé dommage que les créneaux d'ouverture du pavillon soient si courts. Le pavillon a été ouvert le mardi de 11h30 à 20h30 et mercredi et jeudi de 11h30 à 16h30 seulement. Cela oblige a faire des choix entre assister à des conférences (où l'on est déjà obligé de faire des choix puisqu'il y a jusqu'à 13 conférences simultanées) et aller voir les exposants, prendre le temps de discuter sur les stand ou assister aux mini-conférences que font aussi les exposants....

Si vous êtes à une bonne place dans la salle et que la session suivante est dans la même salle, il y a de fortes chances que vous ayez une mauvaise place.... Ils font sortir tous le monde de la salle pour rebadger et si la session a duré jusqu'au bout du temps autorisé, vous vous retrouvez au bout de la queue, avec le risque d'être au fond et que la session suivante ait commencé quand vous rentrerez de nouveau....

VIII-SB - Quelques conseils

Concernant la préparation, il faut planifier votre agenda le plus tôt possible afin d'éviter de vous retrouver bloqué avec des sessions vous intéressant mais complètes.

Comme l'a recommandé John Gage, n'hésitez pas à aller vers les gens, à discuter. Les sessions techniques sont ensuite accessibles sur le site web du SDN, donc vous pouvez en raté quelques-unes au profit de discussions parfois plus intéressantes.

Reposez vous beaucoup avant de partir là-bas. Comme l'a aussi dit James Gosling, le sommeil est optionnel voir déconseillé. Entre le décalage horaire, les BOF jusqu'à presque 23h00 et les éventuelles discussions/party se prolongeant dans les bars environnants, les nuits sont courtes à San Francisco.

Concernant la météo, cette année a été exceptionnelle (environ 30 degrés les premiers jours). Par contre prévoyez de quoi vous couvrir, les soirées sont rapidement fraîches (10 degrés) à San Francisco.

Gardez de la place dans les valises pour ramener les lots (sac à dos, 3 t-shirt) plus les éventuellement souvenirs pour la famille.

VIII-C - Quelques liens

Pour voir les photos sur FlickR : suivre ce lien.