Revue de Presse Xebia

Revue de Presse Xebia
La revue de presse de l’actualitéava/J2EE hebdomadaire proposépar Xebia.

Actualité éditeurs / SSII

Agilité

Le coin de la technique

Evènements de notre communauté en France et à l’étranger

La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.

Actualité éditeurs / SSII

Sun publie JavaFX composer en « early access »

Sun réalise deux RAD pour JavaFX, le premier cible les développeurs web et l’édition de contenu, le deuxième outil cible de son côté les développeurs Java. C’est ce deuxième outil que Sun publie sous le nom prometteur de JavaFX Composer. Ne vous attendez pas à un produit fini. Pour David Folk, il ne s’agit même pas d’une béta. Il faut voir cet outil comme une démonstration technique. Le but affiché est de permettre le développement d’application de type formulaire avec JavaFX. L’outil, maintenant disponible dans l’update center de Netbeans 6.8, fournit un éditeur graphique permettant de construire une interface graphique assez proche du gui builder de Netbeans.

Attention, s’il est possible de voir le source généré, l’édition en est pour le moment impossible. Les composants peuvent être liés à une source de données JDBC, HTTP(XML/JSON) et fichier.

L’outil fournit un bon aperçu de ce qui peut être fait avec JavaFX. Les limitations, bien qu’encore nombreuses, n’empêchent pas de jouer avec ladite technologie. Il est donc maintenant possible d’utiliser JavaFX pour faire des démos, ce qui donne un peu plus corps à la technologie. Sun continue les investissements dans son Flash killer, mais il a encore et toujours plusieurs trains de retard.

IntelliJ Open Source : décryptage avec le « The 451 Group »

Le cabinet spécialiste des modèles économiques Open Source a interviewé Ann Oreshnikova, directeur Marketing de Jetbrains, pour comprendre le nouveau modèle de l’environnement de développement Java le plus sexy au monde.

Jetbrains, initialement connu pour son environnement de développement IntelliJ Idea, a ces dernières années étoffé son portfolio de produits pour couvrir l’ensemble du cycle de développement. Les javaistes connaissent le serveur d’intégration continue TeamCity, le bug tracking system YouTrack mais il existe aussi des outils PHP, Dot Net et Ruby.

Actuellement, Jetbrains compte 49 000 clients payants dont seulement 25 000 clients entreprise et 24 000 individuels. On peut autant s’étonner du faible nombre de clients entreprises que du fort ratio de clients individuels. Les professionnels sont convaincus de la plus value qu’apporte l’IDE mais les entreprises ne sont pas prêtes à payer pour un IDE alors qu’Eclipse et Netbeans sont gratuits.

Pour augmenter ses parts de marché, Jetbrains a décidé de séduire ses clients avec une stratégie assez commune dans le monde logiciel : une version gratuite aux fonctionnalités restreintes. Il restait à décider si le code source était diffusé et, le cas échéant, sous quel contrat de license ? Business Friendly à la BSD/Apache ? Business Unfriendly à la GPL ? Les deux modèles sont éprouvés pour les environnements de développement. Eclipse a choisi le modèle business friendly et Netbeans le modèle business unfriendly.

Jetbrains, malgré le risque de voir d’autres acteurs monétiser son socle, a choisi de marcher dans les traces d’Eclipse en retenant la license Open Source business friendly d’Apache.

L’objectif de dynamiser la communauté autour d’Idea a été atteint, du moins à court terme, la version Open Source ayant été téléchargée des dizaines de milliers de fois.

La qualité et l’avant-gardisme d’Idea n’ont pas suffi à en assurer le succès commercial, souhaitons leur que le modèle dual Open Source / Commercial réussira.

Agilité

Le problème avec les user stories

Dans la méthode agile Scrum, les user stories spécifient de manière simple et concise les besoins du client à implémenter au cours des sprints. Elles permettent de faire l’interface entre celui-ci et l’équipe de réalisation.
Comme le souligne dans son article James Golick, les user stories sont écrites avec des mots. Or, les mots peuvent porter à confusion et à différentes interprétations entre les différents acteurs. Lors d’un sprint demo, en voyant à l’écran l’implémentation de la story, il peut arriver que le client s’aperçoive que son besoin n’est pas complètement satisfait.Ces écarts sont alors corrigés dans les sprints suivants.

James Golick propose d’améliorer cela en réalisant d’abord des maquettes de l’interface. En visualisant directement l’interface et en naviguant dessus, le client est plus à même de se rendre vraiment compte si le développement correspond à son besoin. Cela implique la présence d’un designer sur le projet. Il ne précise pas comment serait intégrée la réalisation des interfaces dans le sprint, mais uniquement que la maquette soit réalisée avant la story.

Le maquettage ne remplace évidemment pas la story, mais serait un complément pour s’assurer que le besoin du client est bien aligné avec la vision qu’en a l’équipe. Et, cela peut aussi amener le client à ajuster ses stories grâce aux maquettes. Cette approche de maquettage n’est pas nouvelle et pourrait revenir sur le devant de la scène. On pense notamment à la solution Flash Catalyst d’Adobe, qui fait beaucoup parler d’elle.

Le coin de la technique

Akka améliore encore la programmation parallèle en Scala

Akka, qui vous permet d’écrire simplement et rapidement des applications concurrentes et scalables, est sorti début de semaine dernière en version 0.6 (annonce sur le Google Groups relayée par Scala-Lang). Pour rappel, Akka s’appuie sur le modèle d’acteurs Scala et est disponible à la fois en API Scala et Java.

De nombreuses nouveautés sont à noter dans cette nouvelle version, que ce soit l’ajout de nouveaux add-ons ou des corrections de bugs. On retiendra notamment :

  • nouveaux modules de persistance : Redis, Cassandra et MongoDB ;
  • meilleure performance avec les acteurs Akka 2 à 3 fois plus rapide que les acteurs Scala ;
  • empreinte mémoire encore plus faible faisant que l’on peut faire tourner plus de 6 millions d’acteurs sur 4Gb de ram ;
  • Comet et rest bindings ;
  • nouveaux sérialiseur : SBinary, JSON… ;
  • intégration de frameworks divers et variés : Lift, Spring ou bien encore Guice.

Si vous souhaitez approfondir le sujet, rien de mieux que l’article sur JavaLobby par l’auteur du framework, Jonas Boner.

Le bug de l’an 2000 2010 refait surface

Le Nouvel An passé, chacun a eu l’occasion de faire sa liste de bonnes résolutions. Vous-même, peut-être avez-vous ajouté au milieu des immanquables « j’arrête de fumer » ou « cette année, je me mets au sport », votre intention de vous mettre à tester vos applications. Mort aux : « je ne comprends pas ça marche sur mon poste ».

Tout cela pour dire que depuis début 2010, une multitude de bugs informatiques ont fait leur apparition. Vous avez probablement entendu les plus médiatiques d’entre eux : les 20 millions de cartes bancaires bloquées en Allemagne ou l’impossibilité d’effectuer des mises à jour sur l’un des produits Symantec depuis ce début 2010. C’est l’occasion de faire un tour rapide des problèmes rencontrés, et de leur principales causes :

Année stockée sur un seul chiffre

Premier problème, probablement le plus flagrant, certains programmes développés après l’an 2000 ont décidé de stocker leurs dates sur un seul caractère. Sont impactés principalement les projets dont la durée de vie n’était pas prévue pour passer ce cap. Les solutions temporaires ont tendance à devenir définitives :-)

En effectuant une recherche sur Google Code, en recherchant un simple pattern de type ‘200%d’, il est aisé de trouver plusieurs projets contenant ce bug.

Par exemple, SpamAssassin avait une règle permettant de marquer tous les emails provenant du futur comme spam, dans ce cas, la correction était simple :

// ancienne expression régulière pour détecter le futur
/20[1-9][0-9]/

// correction, rendez=vous dans 10 ans :)
/20[2-9][0-9]/

Ouf, on a corrigé le bug de l’an 2000 à temps !

Deuxième catégorie de bugs, certains programmes ayant été fixés pour éviter le bug de l’an 2000 ont généré le bug de l’an 2010. Tout le monde connait ce bug, la majorité des dates étaient stockées sur 2 caractères. À l’époque, pressé par le temps, une correction rapide consistait à rajouter une règle pour identifier les années post 2000 des années 1900. Failed !

// bug en 2010
int annee = (date < 10 ? 2000 : 1900 ) + date ;

Chiffres codés en BCD

Plusieurs protocoles utilisés dans les banques et les télécommunications, dont le protocole utilisé pour les SMS, codent les années sur un seul octet en BCD.
En utilisant cet encodage, il est aisé de confondre les dates comprises entre 2000 et 2009, car leurs représentations sont identiques à leur encodage en binaire simple.
Ainsi, si 2009 s'écrit de la même façon en binaire simple qu'en BCD, 2010 s'écrit de deux manières différentes.
Il s'agit probablement de la cause du bug remonté en ce début d'année sur Windows Mobile.

Secure Coding Guidelines for the Java Programming Language, Version 3.0

Sean Mullan est ingénieur chez Sun, spécialisé dans tout ce qui touche à la sécurité sur la plateforme Java. Il nous apprend que Sun met à notre disposition la version 3 du "Secure Coding Guidelines for the Java Programming Language". Il nous semble qu'il est bon de rappeler l'existence de ce recueil de bonnes pratiques destiné à tout développeur soucieux de la qualité de son code.

L'article rappelle quelques règles bien connues comme par exemple le fait qu'il vaut mieux éviter de construire soi-même ses requêtes SQL à la main ou alors qu'il faut prendre ses précautions lors de l'utilisation de code externe (JSR 223 ou XML par exemple). Mais il plonge aussi beaucoup plus profondément dans les entrailles de Java en explorant les problèmes liés aux objets (visibilité, héritage...), à la sérialisation et dé-sérialisation des données ainsi que les problèmes de contrôle d'accès.

Un exemple intéressant parmi d'autres est la manière dont on peut ouvrir un code aux attaques lors de l'utilisation de l'héritage: il suffit en effet que la classe parent déclare de nouvelles méthodes non prises en compte par la classe fille pour que celle-ci devienne ouverte aux attaques !

Moralité, assurer la sécurité de ses applications n'est pas une mince affaire et nous n'avons pas fini de parler sécurité !

Evènements de notre communauté en France et à l'étranger

Drools chez les Ch'ti (Jug)

Le 21 janvier à Lille, le Ch'ti JUG aura l'honneur de recevoir Mark Proctor et Geoffrey De Smet de JBoss. Mark est le project leader du projet Drools. Il vient d'être nommé directeur de RuleML. Geoffrey est le créateur de Drools Planner ou Drools Solver. La session se focalisera bien entendu sur Drools.

Pour les personnes qui sont totalement étrangères à ces problématiques, voici deux articles que nous avons rédigé récemment et qui vous aideront à vous plonger dans cette session :

En attendant avec impatience le compte rendu de ce JUG, belle initiative !

Billets sur le même thème :

2 commentaires

  • La rétrospective sur « le bug de l’an 2010″ est intéressante !

    Par contre, il aurait également été intéressant de faire un petit focus sur « comment java se comporte » lorsqu’il tente de parser une date du type « 01/01/10″

    Une petite phrase anodine de la javadoc nous renseigne à ce sujet : For parsing with the abbreviated year pattern (« y » or « yy »), SimpleDateFormat must interpret the abbreviated year relative to some century. It does this by adjusting dates to be within 80 years before and 20 years after the time the SimpleDateFormat instance is created. For example, using a pattern of « MM/dd/yy » and a SimpleDateFormat instance created on Jan 1, 1997, the string « 01/11/12″ would be interpreted as Jan 11, 2012 while the string « 05/04/64″ would be interpreted as May 4, 1964.
    (http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html)

    => Et oui, l’API java se base sur la date courante … du coup il n’y aura même pas de bug en 2100 :-)

  • Merci pour cette précision. Comme quoi, quoi qu’en disent certains, la gestion des dates en Java n’est pas si mauvaise :)

    Côté Joda Time, l’API qui veut remplacer l’implémentation des Date dans le JDK, les différentes release notes indiquent la correction de nombreux bug dans le parsing des dates.

    Ce sujet est loin d’être aussi simple qu’il n’y parait :)

    Erwan (Xebia)

Laisser un commentaire