Compte-rendu de notre journée de mardi dernier aux SUN Tech Days 2007 à Paris. Allez-vous prendre la pilule bleu de SUN, le progrès et la lumière ou la pilule rouge, placébo qui vous ne donnera aucunes informations ? Aucunes nouveautés techniques ?
8h20… devant la FNAC au CNIT… personne. Pourtant la veille j’ai donné RDV à 3 de mes collègues pour aller passer notre journée ensemble aux SUN TechDays la conférence technique de SUN sur Java. Vérification faite (merci superman) il fallait aller à l’Esplanade de la Défense. Bref me voilà arrivé avec 2mn de retard s’il vous plait, score honorable lorsque l’on sait qu’en fait je suis arrivé le premier car les autres ont été retardés par les grèves dans le métro. Bref passons et parlons maintenant de ce qui vous intéresse plus: qu’y-avait-il à voir ou à écouter cette année au SUN Tech Days ?
La matinée commence par une introduction d’Eric Mahé, suivit d’une allocution de Bruno Houdel, le Mr Marketing de SUN et enfin, James Gosling himself. Clairement James a mal tourné. Je l’ai vu en 2000 à San-Francisco, ses présentations étaient bof mais le fond de ce qu’il dit est intéressant. Rebelote en 2003, mais là encore après une présentation pâlotte (franchement c’est un mauvais orateur) il nous avait finalement intéressé sur le fond. Ouf je suis rassuré, en 2007 il est toujours aussi soporifique mais le fond de ce qu’il dit est toujours aussi intéressant.
Que faut-il retenir ?
James Gosling a d’abord parlé de la situation de Java sur le marché et dans l’industrie aujourd’hui. Quelques exemples : Java est utilisé sur l’Airbus A380 pour l’embarqué, plus d’1.5 milliards de téléphone portable dans le monde avec une JVM. La déclaration d’impôt en 2006, encore du Java avec JBoss Application Server, aucuns problèmes de performances, n’en déplaise à certains détracteurs des solutions open-source. Java est partout.
Il a ensuite abordé le thème de « Java fonctionne partout » qui bien qu’encore d’actualité, se transforme pour les développeurs en « Learn once, develop anywhere » ce qui pourrait se traduire par « apprenez sur une plateforme et développez pour différentes plateformes ». Dans la série les petites phrases qui font sourire : Java 5.0 est sorti, les gens n’ont pas besoin d’attendre une hypothétique version 5.1 pour passer en production. La qualité et la puissance de Java fait qu’il n’y a jamais eu besoin de version 5.1 ni de service pack. Par ailleurs la sécurité dans Java a été abordée dès la phase d’architecture, ce qui fait qu’aujourd’hui il n’y a pas de virus sur java, il n’y a pas d’éditeurs d’anti-virus pour Java. Pour information Microsoft Vista est déjà attaqué de toute part, et non Microsoft n’a pas réussi à sortir un système infaillible. PatchGuard dans Vista semble déjà avoir quelques petits soucis, je vous propose des liens pour en savoir plus : http://www.eweek.com/article2/0,1895,2036585,00.asp et aussi http://www.eweek.com/article2/0,1895,2029031,00.asp .
Parlons performance. James Gosling commence un slide par « Java is slow because it’s interpreted« . Mais comme il l’explique ensuite une ligne en dessous, il est lent la première fois que le code est examiné (et encore) mais il faut comprendre ensuite que le bytecode n’est pas interprété à chaque fois. Le PHP, Perl ou Python sont interprétés à chaque fois, pas Java ! Ouvrez les yeux il est temps de changer de point de vue.
Pour revenir sur un plan plus neutre, des tests ont été fait pour quantifier les progrès entre Java 1.4 et Java 5 et aussi démontrer l’avancé en terme de performance de Java. Le code n’est pas seulement interpreté, il est en plus optimisé selon la plateforme et l’architecture. La loi de Moore montre que les fréquences des CPU augmentent tous les 18 mois. Cependant depuis fin 2003 elle tend à stagner et aujourd’hui ce n’est plus la fréquence CPU qui fait la différence mais le nombre de core. Or Java est plus facile à optimiser sur une architecture multi-core 32 bits ou 64 bits et surtout, surtout, la HotSpot de SUN optimise mieux que ce que pourrait faire un développeur très calé en C++ avec des paramètres de compilation.
Pourquoi ?
Tout simplement parce que la HotSpot a été testée sur un grand nombre d’architecture et elle-même optimisée par les meilleurs développeurs C++ et C.
La compilation dynamique optimisée est plus performante que la compilation statique. Et avec l’arrivée de multi-core cela va encore plus être visible de manière flagrante. C’est un message fort qu’il faut comprendre pour accepter l’idée que Java est finalement en 2007 un langage rapide.
Dur non à entendre ? Ca va vous lisez toujours ? On fait une pause ?
Allez on se regarde quelques benchmarks pour se rassurer un peu : http://www.shudo.net/jit/perf/ et plus particulièrement des résultats comme le SciMark 2004 où la SUN Hotspot Java 1.5 bat le langage C (gcc 3.2.4) ce qui me laisse penser que finalement, on arrive enfin en 2007 à faire quelque chose qui tourne.
James présente ensuite un étude qui montre que le garbage collector optimisé d’HotSpot est plus rapide que des opérations de malloc/free programmées par un développeur. Ceci s’explique car le GC est optimisé et surtout s’adapte au programme dynamiquement. La question que l’on se pose est: comment peut-on envisager d’atteindre le même type d optimisation avec un langage statique si la structure ou les paramètres de compilation n’ont pas été sélectionné correctement ? Bref vous l’aurez compris, James Gosling a voulu faire prendre conscience qu’on est en 2007 et qu’à ce titre les bonnes vieilles croyances devraient elle-aussi évoluer.
Nous avons ensuite eu 6 présentations rapides de quelques points forts de Java 5 et de Java EE5. Une présentation de Romain GUY sur Swing nous a montré qu’en Java, moyennant quelques efforts, il était possible d’avoir des applications de type client lourd qui « déchirent » car je ne vois pas d’autres mots. Romain a codé sous nos yeux en 5mn une application swing utilisant GoogleMap et Flickr, c’était assez impressionnant.
Ensuite la présentation de Java Derby m’est passé complètement au dessus, j’avoue que je n’ai pas tout compris. J’irai me documenter sur Derby pour comprendre. Ensuite GlassFish et JEE5 avec bien entendu JSF, présenté avec jMaki, c’est un peu notre domaine. J’ai bu du petit lait, c était bien présenté et la présentatrice nous a codé un magasin de ventes de fleur en 3 clicks.
Mon impression est que jMaki ressemble au Google Web Toolkit. Du code Java placé dans des pages génère du javascript cross-browser et facilite la vie du développeur. Le javascript justement. La présentation sur Phobos et Rhino nous a montré que le Javascript pouvait être intégré du côté serveur pour écrire des pages dynamiques sans recompiler. Je n’ai pas compris si nous avions à faire à un clone d’ASP par exemple. Cela dit, je vais être honnête : je n’aime pas le javascript et je n’envisage pas de m’en servir du côté serveur.
La démo que nous avons vu consiste à créer une page de type JSP, y mettre du code Javascript et donc sans recompiler, voir en direct live les changements dans le navigateur. Tout d’abord concernant la syntaxe Javascript, à part IDEA IntelliJ qui s’en sort, les IDE Java ne gèrent pas correctement le JS.
Ensuite, comment débugger ? Comment construire des composants riches comme dans JSF ? Non, il faut que le mouvement soit Java à 100% avec JSF et que le JavaScript reparte dans le navigateur, où il fait très bien son boulot. Je n’en veux pas sur mon code, ce n’est pas réaliste.
J’ai assisté ensuite à une présentation sur le serveur d’application de SUN, gratuit et open-source, à savoir SUN JSAS mais que tout le monde appelle « Glassfish » du nom d’un poisson tropical transparent. JSF 1.2 en standard, JAXB 2.0 pour le binding, JSP2.1 et aussi JAX-WS 2.1 pour la couche web service. Il ressort que Java EE 5 est la version à utiliser aujourd’hui. Parmis le message passé par l’orateur, la mort de J2EE 1.4.
J2EE 1.4 est mort, ne commencez pas de projet avec cette architecture. Vous allez écrire beaucoup de code, vous allez mal l’écrire alors vous allez prendre des patterns. Ensuite vous serez déçu, donc vous allez retirer les EJB2.1 et mettre Spring. Et finalement on vous dit aussi que les Session Stateful Bean c’est lent, alors vous envoyer dans la couche http la gestion de la session (au passage, une servlet ou un SessionStatefullBean ça fait pas la même chose?). Enfin votre projet meurt, obèse, lent et incapable de monter en charge car le transfert des sessions http explose votre réseau.
Voilà vous me devez 100 EUR j’ai prédis l’avenir de votre logiciel.
Sinon vous pouvez aussi prendre le temps de lire un peu ce que JEE5 propose. Tiens des EJB3 avec des annotations, on passe de 9 fichiers XML sur la démo PetStore à un seul. Tiens un moteur de mapping puissant dans Glassfish, Oracle TopLink. En fait Oracle a donné à la communauté Glassfish le moteur de mapping TopLink. Tout comme JDBC est une spécification pour qu’ensuite les vendeurs proposent une implémentation, JPA (Java Persistence Api) est aussi une spécification qui doit permettre dans une solution JEE5 de choisir TopLink ou Hibernate.
Chez nous un architecte à deux balles a écrit dans des documents qu’il ne fallait pas utiliser JPA mais Hybernate (notez au passage le y dans Hibernate, on sens qu’on a tiré un champion là).
Rigolez-pas, le gars semble y croire, alors on le laisse dire et on se marre bien en attendant.
Pour revenir à GlassFish, franchement je vais tester. Je suis un gros fan de JBoss mais là en voyant l’intégration de JSF dans NetBeans 5.5 avec un serveur Glassfish, je me dis qu’il faut absolument regarder ce qu’il y a dedans. GlassFish v2 est le premier serveur qui sera certifié Java 5, la version v2 finale est prévue pour le mois d?août.
Il y a aussi une partie ESB, JBI avec OpenESB et l’authentification d’entreprise avec OpenSSO. La partie clustering et réplication semble aussi très prometteuse. Pour la couche base de données il est possible de prendre des solutions comme SUN HADB qui garantisse 99.999% de disponibilité. Oui avec 5 fois le chiffre 9, et le tout certifié par un organisme ISO s?il vous plait.
Contrairement à JBoss qui propose maintenant une console d’admin payante, Glassfish dispose déjà d’une interface d’administration qui franchement est mieux que celle de BEA WebLogic 8.2. Quoi d’autre ? pour JSF j’ai noté aussi un projet qui regroupera les composants JSF qui ont été « ajaxisé ». Cette perle (pour nous) est le projet Woodstock (https://woodstock.dev.java.net/Preview.htm). Site à aller voir absolument si vous faites du JSF.
Je suis ensuite allé voir la présentation de Romain GUY sur Swing. Je vous fais un résumé rapide : ça déchire. Ce que romain a présenté est franchement impressionnant et c’est assurément une réponse possible à Microsoft Expression et à la couche Windows Fundation Classes de Vista. Le site de Romain donne plus de démos (http://www.curious-creature.org) et mérite le détour.
Avec Java Web Start il est possible de tester quelques unes des réalisations de l?équipe d?architecture de Swing.
Troisième présentation sur NetBeans 5.5 très intéressante. NetBeans c’est un IDE, une plateforme comme Eclipse RCP et enfin une vaste communauté open-source. Je retiendrai que Matisse, l’outil de développement des interfaces Swing de Netbeans est très puissant, simple à utiliser. Le Profiler de NetBeans qui est un plugin à installer, est franchement un concurrent sérieux de JProfiler. S’en est suivi une présentation de Ruby. J aime bien ce langage mais franchement, pour notre domaine de développement, c’est en dehors du sujet.
Une info intéressante pour vous : l’index TIOBE donne une indication à relativiser de la popularité d?un langage : http://www.tiobe.com/tpci.htm. Ruby est celui qui a le plus progressé en 2006. Le Javascript aussi (merci Ajax). Le Java semble redescendre au profit de nouveaux langages comme le Python, Ruby.
Dernière présentation à laquelle j’ai assisté, JSF Visual Pack. Je connais très bien JSF (java server faces) et je voulais surtout que les développeurs avec moi aient une présentation en 1h de ce qu?est JSF et comment le mettre en oeuvre. Déception. L’orateur visiblement stressé nous a noyés dans ses slides, et je le regrette fortement. Franchement c’était lourd, et mal présenté. Très déçu par cette présentation.
Enfin sinon j’ai terminé par un tour des exposants. Le stand d’Adob est celui qui a le plus retenu mon attention. Nous avons assité à une présentation de Flex. Le SDK est gratuit pour compiler ses propres fichiers MXML. Le studio de création des écrans est payant (479$ je crois) mais il vaut le coup. Si vous acceptez Flash sur le poste client, au lieu de se prendre la tête avec du Javascript et du DHTML, prenez du Flex. C’est simple à écrire, le résultat et l?ergonomie sont vraiment impressionnants.
Le site d’Adobe sur Flex se trouve http://www.adobe.com/products/flex/ et le site de la communauté open-source est http://www.flex.org.
Enfin un exemple de site réalisé avec Flex : http://examples.adobe.com/flex2/inproduct/sdk/flexstore/flexstore.html
Pour conclure, cette journée nous a donné l’occasion de voir rapidement l’avancé de Java et de Java EE5. Mieux vaut passer quelques heures à écouter une présentation technique d’un évangéliste de SUN que d’attendre la sortie d’un livre et finalement ne pas bénéficier du recul des autres développeurs qui ont déjà essuyé les plâtres des nouvelles technologies.
Java 5 est rapide, l’architecture J2EE 1.4 est morte et enterrée, NetBeans 5.5 mérite le détour, les EJB2.1 sont un lointain souvenir, nous sommes en 2007 et vous venez de prendre la pilule bleu.