Posts Tagged 'JavaOne'

JavaOne 2008 : le constat du médecin légiste

Une fois que la poussière est retombée, que restera-t’il de JavaOne 2008 ?

Premier constat : c’est une première pour moi, mais on sent poindre chez les multi-récidivistes un sentiment classique, le "c’était bien, mais par rapport à il y a 5 ans". De la même façon que que cette année, aux Eurockéennes de Belfort, on entendra "c’était bien, mais par rapport à il y a 10 ans". Or il y a 10 ans, j’y étais, et malgré Portishead, Prodigy et Louise Attaque, j’entendais déjà ce refrain …

Ce qui est sûr, c’est que nous sommes entrés dans une phase où le langage Java comme sa plate-forme sont solidement implantés dans les entreprises, et ne sont plus dans une phase de conquête pure. De reconquête tout de même si l’on pense à JSF 2 et aux EJB 3.1 (voire de rédemption dans ce dernier cas), mais surtout de consolidation, de facilité d’utilisation et d’interopérabilité : à ce titre, les focus sur les projet Web Services Metro et Jersey ont montré que les projets avaient maintenant pris en compte ces aspects comptant pour l’accélération des développements (IDE) et leur intégration (REST ou WS-*) dans un environnement hétérogène. L’utilisation des WS avec Silverlight n’a pas été convaincante, mais on imagine très bien une utilisation avec un frontal RIA de type Flex, ou autre.

JavaFX qui a largement eu droit à sa place sous les projecteurs. Il faut bien avouer que voir une sphere composée de dizaines de video en lecture a de quoi impressionner, tout comme l’intégration propre entre le navigateur et le système d’exploitation (le glisser/déposer d’une applet JavaFX du navigateur vers le bureau). Le seul vrai problème n’est pas technique, c’est que lorsque Java 6u10 arrivera et que les IDE intègreront JFX (en pensant aux graphistes et concepteurs multimedia), Flex et Silverlight 2 seront là depuis longtemps.

Et pour les serveurs d’application ? L’annonce T-Shirt de SpringSource Application Platform a certes marqué les esprit, nous y reviendrons bientôt, mais ce ne sont ni l’open beta de WAS 7 ni JBoss 5 qui m’ont le plus impressionné : c’est GlassFish, de plus en plus présentable en v3. Il est modulable, rapide, OSGi, embarquable et donc utilisable en test unitaire, mais il souffre encore d’un déficit d’image comparable à NetBeans  : ils font tous les deux au moins autant et au moins aussi bien que les autres, mais la force de l’habitude fait que l’on reste dans des schémas classiques. C’est en train de changer, mais à quel rythme ?

Au final, on peut dire que JavaOne 2008 a montré que Java n’est pas mort, et que sa plate-forme devient attirante pour d’autre langages : c’est le pari que fait Sun en attirant Ruby et PHP dans son éditeur et sa JVM pour se consolider globalement. Stratégie gagnante ? Réponse dans un an.

Virus, Web Services et multi coeur

Cette dernière journée a été marquée par une perturbation originale : une épidémie de méga gastro, qui semble d’ailleurs avoir touché Antonio du Paris JUG et a vu un présentateur s’évanouir et être évacué ! Sinon, la session générale de James Gosling a permis de passer en revue un certain nombre de projets ou produits :

  • VisualVM, qui s’avère très efficace pour le monitoring de JVM mais aussi de serveur d’application (avec évidemment comme premier plugin Glassfish)
  • Le support complet du JavaScript dans Netbeans : autocompletion, validation syaxique, débugging dans Firefox (avec breakpoints etc.) et contrôle de la qualité du code (pas de return inconsistants, avec un exemple sur Prototype…)
  • Les jeux : à la fois dans l’interface graphique, et le support de la puce NVidia APX 2500 pour téléphone, et le projet Darkstar pour créer une infrastructure de serveurs destinés au jeux massivement parallèles (pour être le JavaEE du jeu !)
  • Un drole de stylo qui reconnaît et stocke ce que vous écrivez
  • Les java cards, maintenant en V3 et permettant de coder de la logique (avec un jeu de bataille de robots pour illustration)
  • Sentilla, une société qui commercialise des petits boitiers sur lesquels connecter des capteurs (démo sympa de ballons équipés jetés dans le public, et suivis en temps réel)
  • Java temps réel et industriel, avec entre autre une voiture robotisée autonome pour le Darpa Urban Challenge, et un automate industriel embarqué
  • Java comme moyen d’aider la recherche sur Mars et au CERN de Genêve.

Bref, une liste plus ou moins intéressante, mais qui montre l’étendue des applications de Java.

Après une autre session assez claire des mécanismes "classiques" de web services en Java, complétée d’une revue plus complète des possibilité de Metro (encore, je sais c’est une obsession), j’ai assisté à la démonstration des outils de développement de JBoss, et notamment elui destiné à son ESB couplé à jBPM. Intéressant, mais moins que la dernière session consacrée aux problématiques non encore résolues du massivement multi coeur pour Java : au delà de l’utilisation pour les tâches de GC, en hardware notamment avec Azul, quels sont les démarches à inventer pour le massivement transactionnel concurrent ? La démarche Software Transactional Memory, vendu comme l’équivalent pour les locks du GC pour la mémoire, ne semble pas se concrétiser

A suivre l’année prochaine…

L'identité 3ème pilier de SOA, JSF 2, Silverlight

La gestion de l’identité au sens large dans un contexte SOA est le sujet de la session co-animée par Sun et Layer7, qui vend du matériel destiné à accélérer les couches de Web Services concernées. Après une série d’exemples destinés à assimiler l’intégration des identités comme le talon d’Achille actuel des solutions SOA d’intégration de service, on est entré dans le vif du sujet et la mise en œuvre progressive des différentes couches. Et là, heureusement que Metro aide pour faire ça ! Passer à la sécurité appliquée au niveau de chaque message se fait presque simplement, l’utilisation de SAML (1.1, pas 2…) aussi. Maintenant reste un problème de taille : la multiplication du many to many. Pour faire simplement, on va dire qu’on se retrouve avec plusieurs types de fournisseurs de tokens d’identification, et au moins autant de dispositifs destinés à leur validation, et autant de code à reprendre si un des schéma d’authentification change. La solution selon Layer7 c’est justement d’externaliser dans un policy enforcement point ce travail de plomberie, chaque application n’ayant plus qu’une seule relation de confiance à avoir. Si le trait est un peu forcé, cette possibilité est à considérer dans un contexte très hétérogène et mouvant.

La session suivante, présentée par Ed Burns et Roger Kitain, était consacrée à JSF 2. Le but avoué de la présentation était d’inspirer confiance et de faire passer le message suivant : on a compris, à force, que JSF n’était pas (au début) très simple à utiliser, mais tout s’améliore. Cela passe par l’outillage dans tous les IDE pour créer visuellement les pages, l’alignement avec portlet 2, le fix en 1.2 des jsp avec l’alignement des EL, et surtout par l’intégration pure et simple de facelets pour la version 2. L’accent est aussi mis sur l’aide à la compatibilité entre les différents fournisseurs de composants, notamment en standardisant un peu l’utilisation d’AJAX. J’ai en tête une expérience un peu difficile de cohabitation entre IceFaces et un composant Ilog, je ne peux qu’applaudir cette prise de conscience !

Enfin, pour m’amuser un peu, j’ai voulu assister à une démonstration de l’intégration de MS Silverlight comme couche de présentation sur un backend JEE. Vous savez, Silverlight, le truc un peu sexy avec XAML comme langage de description, etc. Alors soit j’ai raté quelque chose, soit la magie n’a pas franchement opéré : l’intégration la plus aboutie s’est résumée à utiliser un service REST, et Visual Studio a planté en plein milieu de la demo. Celle-ci nous offrait une interface franchement moche, et au final, pour montrer que le runtime CLR .NET était plus efficace que le rendu JavaScript… ce dernier n’a jamais démarré.

Scalability et sécurité

Cameron Purdy nous a fait une présentation enlevée, ponctué de bons mots pour faire passer 10 principes à prendre en compte pour bien faire monter en charge une application Java. Certes, le principe n°0 est justement de ne pas appliquer les autres religieusement, mais cette liste frappée au coin du bon sens rappelle certains points importants : le partitionnement, la coordination, la prédictibilité de la latence de l’application, le fait que ce soit les applications avec état qui posent problème, mais aussi l’importance de prévoir dès le départ ce qui se passe en en surcharge (car elle va arriver…) et ce qu’il faudra faire après une panne (car elle va aussi arriver…). Rien de révolutionnaire, mais un petit rafraîchissement bienvenu.

Rien de révolutionnaire non plus dans la conférence suivante, et pourtant la queue de 1100 personnes pour y accéder s’étalait jusque sur le trottoir !

Le sujet était il est vrai attirant : Advanced Web Application Security. On a parlé des techniques en vogue (cross site request forgery, XSS, JavaScript Hijacking…) et les demos sur un twitter-like ont fait leur petit effet. Enfin, quelques recommandations ont été présentées : utiliser le servlet Filter OWASP et faire un double submit du cookie de session, faire son JSON propre, et éviter de se reposer sur la souplesse de certains navigateur…

REST, l'interopérabilité avec MS et SCA

Amusant : la gestion des files d’attente pour accéder aux conférences pourrait facilement trouver une analogie en JMS…

Tout d’abord, une intéressante présentation de la norme JSR 311, en public review, qui va permettre grâce à JAX-RS d’exposer et de consommer des services Java sous forme de web services REST, alternative légère à SOAP. Et une mise en oeuvre assez rapide :

  1. J’utilise JPA pour créer des classes entité pour accéder à la base de données
  2. J’utilise JAXB pour créer des représentation XML de mes objets, en combinaison avec Jersey (la RI de JAX-RS) pour leur transpostion en JSON
  3. Je consomme avec n’importe quel client (Java, runtime dans le navigateur en Javascript…)

Bien évidemment, NetBeans aide à tout cela, et notamment en intégrant Jersey. Au final une bonne raison de ne pas désespérer et de continuer à utliliser Java en backend.

Une transition en douceur avec des web services toujours, mais cette fois complets, pur SOAP avec tous les problèmes concentrés : l’interopérabilité entr java et .net.

Pour cela, Harold Carr, Lead Architect Sun du projet Metro (qui regroupe dans une librairie haut niveau tout ce qu’il faut pour WS-*) et Kevin Wittkopf, Senior Solutions Architect, Microsoft, venu avec WCF,se sont amusés à faire communiquer les deux mondes avec l’intégralité des couches de sécurité : création d’un token SAML, transmission, STS, WS-Security, WS-Trust, WS-Transfer/WS-Metadata Exchange… Il manquait juste WS-AtomicTransactions, WS-Coordination et WS-SecureConversation et le paquet était complet ! Le plus impressionnant, c’est que ça marche. Les deux framework sont capables de bien cacher toute cette complexité, et c’est tant mieux ! Question subsidiaire : avez-vous un jour regardé le trafic généré avec un WireSharck par exemple ? Amusez-vous, c’est impressionnant.

Enfin, le débat organisé par David Chappell sur SCA avec un panel quasiment exclusivement composé de vendeurs a permis d’identifier un certain nombre de points qui posent problème ou sont des freins :

  • pour créer un composite utilisant plusieurs technologies par exemple, il faut prendre tout chez le même vendeur…
  • JBI : en fait c’est plus bas dans l’infrastructure
  • Mais ça sert à qui ? Un seul utilisateur, de CapGemini UK, qui voit plus un avantage sur l’amélioration des structuration des équipes de développement.

Malgré tout le talent d’animateur de David Chappell, il semble tout de même que SCA soit de plus en plus perçu comme un mécanisme interne à des fournisseurs de solutions comme IBM ou BEA.

TerraCotta, JPA et virtualisation

Ari Zilka, de Terracotta, a choisi d’insister sur le fait qu’une application utilisant les mécanismes de Network Attach Memory engendre les mêmes difficultés qu’une application à développer en multi-threadé. Pour cela, il s’est servi du plugin eclipse de visualisation de comportement d’un cluster Terracotta, qui permet de facilement identifier les baisses de capacité de traitement associées à l’apparition de plusieurs JVM attaquant le même contenu mémoire. Très visuel, et qui a le mérite de nous forcer à repenser la structure de nos traitements.

La session suivante a vu un présentateur Sun et un présentateur Oracle parler d’un projet… Eclipse : la nouvelle version de l’implémentation JPA TopLink, à savoir EclipseLink. Cette version sera complète et open source, en contenant tout ce qu’il y avait dans Toplink et pas seulement la partie JPA. Elle sera embarquée dans le serveur d’application Glassfish V3. Après un rappel des principes de JPA, on a passé en revue un certain nombre de spécificités TopLink : principalement orientées optimisation, comme le weaving, optimisation optionnelle du bytecode en fonction d’un certains nombres de paramètres, ou la gestion avancée du cache et de tout ce qui peut éviter les problèmes de n+1. Enfin, un annonce qui fera plaisir à certains, l’introduction d’un lock pessimiste, le tout pour juillet 2008. Bon, ça c’était en gros du Oracle, mais que venait faire le Sun guy là dedans ? Et bien il venait justement nous rassurer ("c’est Eclipse, mais on travaille tous ensemble, etc.") et surtout nous parler de l’intégration dans NetBeans 6.1. Il faut avouer que c’est bien abouti, avec des assistants intelligents, de la config automatique en fonction du serveur d’application, et l’import à partir de la base de données pour donner des classes entités directes. Pour ceux qui ont un peu fait l’impasse sur NetBeans depuis un petit bout de temps ("chez nous on a que du Eclipse/RAD", "c’est du Swing donc ça rame", etc.), je vous invite à profiter de la sortie en début de semaine de la version 6.1 pour ré-évaluer cet IDE, qui peut vous surprendre : ça tourne bien, je peux créer mes JSF facilement, JPA est d’office, et en bonus j’ai UML et BPEL.

Pour finir, une session AMD sur les impacts méconnus de la virtualisation (avec hyperviseur et VMWare ESX) sur nos JVM de serveurs d’application : en effet, en dehors de l’estimation classique d’overhead de 10%, il y a des zone moins faciles au premier abord. En effet, il faut savoir qu’au delà de 986 Mo alloués pour un Linux, la façon de gérer la mémoire de la VM par l’hyperviseur change et peu avoir un impact fort. Bien sur, les I/O disques et réseaux sont à prendre en compte, en déportant sur le SAN pour les premiers et en allouant une carte physique séparée pour chaque VM. Sans oublier l’influence du paramétrage du GC pour qu’il prenne en compte correctement les différents CPU. Rien que des recommandations de bon sens, mais que l’on peut parfois oublier. AMD offre bien sur des techniques pour aider notamment au paging mémoire.

Kickoff Sun, portlets 2 et EJB 3.1

Enorme: c’est la première impression que l’on a en entrant dans le Moscone Center de San Francisco. 10 000 personnes s’agitent et font la queue pour assister au kickoff de Sun, introduit par un show de danseurs ponctué d’un lancer de T-Shirt à la catapulte par James Gosling…

Tout la session a tourné autour de Java+You, et Rich Green s’est évertué à démontrer que java était partout (mobiles, PS3…), et que les utilisateurs tiraient la technologie, même en entreprise. Un exemple avec Kindle, le livre numérique d’Amazon, a presque marché. Si Java est partout, c’est aussi parce que JavaFX permet d’unifier la programmation et le déploiement sur tout type de terminaux : un exemple avec une application dans un browser que l’on glisse et dépose sur le bureau, puis que l’on visualise sur un mobile était très explicite. La refonte de Glassfish pour la V3 est sa modularité a aussi été mise en avant, avec un noyau de 98k qui démarre en moins d’une seconde. Le projet Hydrazine a enfin été abordé, comme un moyen de fédérer, découvrir et déployer des services « on the cloud », un peu comme Microsoft Live Mesh. Malgré le peu de détail donné, je pense que ce projet peut rapidement prendre de l’importance. Enfin, Neil Young (pour les plus jeunes : un rocker emblématique qui a commencé en 1963) est venu louer les mérites de Java embarqué dans un Blu Ray sur une PS3 : grâce à cette technologie, il peut enfin mettre à disposition l’intégralité de ses archives et de ses morceaux en 192/24 tout en ne sacrifiant pas l’interactivité. On peut écouter un morceau, et pendant ce temps parcourir les images d’archives.

Beaucoup moins rock, j’ai enchaîné sur la présentation par Stefan Hepper, d’IBM, des portlets 2(.0…) / JSR-286 dont on a déjà parlé ici. Il a très logiquement mis l’accent sur la coordination de portlets, et leur communication à l’aide d’events que chacune produit ou consomme. Un exposé intéressant, car il montrait bien les possibilités / dangers qui s’offrent maintenant lors de la création d’une application composite : il faut penser autrement la navigation interne à la portlet, et l’on peut maintenant vraiment avoir des cinématiques très complexes. Plusieurs points ont aussi été abordés, et notamment tout le travail pour enlever certaines restrictions que l’on avait en portlet 1 (Portlet filters, manipulation des headers…) et améliorer le comportement général (cache, AJAX…) et l’alignement de la norme sur JSF et WSRP pour l’exposition distante.


J’ai ensuite assisté à une présentation de l’état d’avancement des EJB 3.1 très intéressante, car allant dans deux directions : toujours l’amélioration de la facilité d’utilisation qui était le seul but des EJB 3.0, mais maintenant aussi l’ajout de nouvelles fonctionnalités : l’EJB singleton, et des timers basés sur le principe de cron, appels asynchrones locaux. La simplification porte sur le déploiement intégré dans un war, l’interface business locale optionnelle, un sous ensemble EJB Lite facilement embarquable. Un travail en cours, très intéressant, qui touche des domaines sensibles comme les profiles.


Mises à jour Twitter

Entrer votre adresse e-mail pour vous inscrire a ce blog et recevoir les notifications des nouveaux articles par e-mail.

Rejoignez 29 autres abonnés

Catégories

Statistiques

  • 64,079 hits