Revue de Presse Xebia

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

Actualité éditeurs / SSII

Agilité

Le coin de la technique

Actualité éditeurs / SSII

Sonatype ouvre son dépôt maven pour java.net

L’idée est venue d’une quantité toujours grandissante de plaintes sur les dépôts Maven fournis par java.net. A l’heure de la fusion annoncée entre Kenai et java.net, Kenai n’a aucune solution pour gérer les dépôts et java.net fait mauvaise presse sur ce point. Il n’aura pas fallu longtemps à Sonatype pour saisir l’opportunité de mettre en avant sa solution Nexus. L’éditeur propose donc à tous les projets java.net de migrer vers leur instance Nexus OSS, allant même jusqu’à organiser le 5 mars une grande journée migration, avec la mise à disposition pour tous des services de conseil et d’ingénierie interne. Outre la performance et la stabilité du dépôt Maven maintenu par Sonatype, Nexus génère des fichiers d’index utilisés par nos IDE pour rechercher les dépendances de nos POM.

La fusion JRockIt / Hotspot pas pour demain

Nous en parlions il y a quelques semaines, Oracle envisage de ne proposer à l’avenir qu’une seule JVM, qui tirerait le meilleur des deux que la firme s’est offert (JRockit via BEA, et Hotpsot via Sun). Dans un récent webcast (via InfoQ), Mark Reinhold s’est exprimé sur le sujet. Cette fusion n’est pas pour tout de suite : trop de clients utilisent les fonctionnalités spécifiques à l’une ou l’autre des JVMs en production, et il serait risqué de les forcer à migrer vers une version fusionnée bancale. Ce dernier se dit jaloux de certaines fonctionnalités de JRockIt et donc particulièrement excité d’avoir l’occasion de l’étudier en profondeur. Cependant, ce qui transparait dans son discours (et peut être via nos diverses expérience), c’est que la JVM de Sun est en avance sur celle de BEA. La prochaine version fusionnée devrait donc tendre plus vers Hotspot que vers JRockit. En résumé rapide, cette future VM Oracle devrait avoir les fonctionnalités runtime de Hotspot, et le garbage collector et la robustesse de JRockit. Finalement, à part l’ébauche d’une timeline, nous ne sommes pas beaucoup plus avancés.
Coté nouveautés du JDK 7, Mark Reinhold se dit aussi particulièrement excité par l’intégration du projet Coin (au contraire de la grande majorité des consultants Xebia, qui trouvent que la plupart de ces évolutions syntaxiques confinent au gadget).
Il reparle aussi des closures, principalement sous l’angle des raisons de la polémique, mais personne ne semble réellement savoir comment elles seront implémentées dans le JDK 7 (voir ci-dessous pour l’avancement du projet Lambda).
Dernière annonce, pour ceux qui comme lui sont impatients de voir une JVM enfin modulaire (aka Jigsaw, prévu dans le JDK 7, voir ci-dessous), ils devraient en avoir un aperçu mi-mars, avec la release 88 de l’OpenJDK.

Certains noteront avec un certain amusement (ou une certaine nostalgie) quelques ratés : « We, at Sun… »

Agilité

Utilisez-vous des métriques intelligentes sur vos projets ?

Mike Griffiths, agiliste expérimenté et bloggeur actif, nous présente sa réflexion sur l’utilisation des métriques dans un projet.
Au préalable, Mike nous prévient que :

  • Toutes les observations ne sont pas utiles et d’une grande aide pour analyser et comprendre un phénomène. Elles peuvent même amener à de mauvaises conclusions.
  • Certaines mesures très utiles ne sont pas facilement observables.

Une autre caractéristique à ne pas négliger est l’effet Hawthorne : L’observateur influence la mesure. On retrouve d’ailleurs ce phénomène en physique quantique. Mike nous explique alors que le fait d’observer et donc d’influencer la mesure, à un effet positif.

Pour lui, une métrique « intelligente » doit avoir les caractéristiques suivantes :

  • Simple et auto-générée.
  • Influence de manière significative ce que l’on cherche à observer.
  • Permet de prendre des décisions et décrire des tendances pour le futur.

Mike nous conseille de donner plus d’attention aux métriques permettant d’observer des tendances futures et d’anticiper.

On peut ainsi opposer aux vieilles métriques : nombres de lignes codées, points de fonctions réalisés ou nombres d’heures travaillées ; des métriques plus « intelligentes » : confiance des sponsors, satisfaction client, nombre de fonctionnalités réalisées, ou encore temps passé à la correction de bugs.

Dans la dernière partie de l’article sont présentés un certain nombre de métriques plus ou moins connues des agilistes, comme : le taskboard de Scrum ou Kanban. L’utilisation de métriques intelligentes est indispensable pour mener à bien un projet. Elles permettent d’observer des tendances, d’identifier et d’anticiper des problèmes; et ainsi, de prendre les bonnes décisions.

Le coin de la technique

Jigsaw, les modules du pauvre ?

Adam Bien est l’un des Java champions les plus visibles et les plus lus d’internet. Il a publié cette semaine un petit article au titre accrocheur : « Jigsaw / JDK 1.7 sera une solution qui permettra de répondre à 80% des besoins de modularité ». Vous avez probablement suivi les différents épisodes et rebondissements de la modularité dans le JDK 7. C’est peut-être l’occasion de faire le point sur ce que propose Jigsaw.

Le projet Jigsaw proposera une implémentation permettant la mise en place d’un système de modules bas niveau pour vos projets. Il sera également utilisé en interne pour découper le JDK Oracle/Sun lui-même.

  • Jigsaw vous permettra de choisir tout ou partie du JDK tout en restant 100% rétro-compatible, d’améliorer les temps de démarrage de la JVM et son utilisation mémoire.
  • Jigsaw  pourra être utilisé directement sur vos projets si vous disposez d’une JVM reposant sur ce système. Jigsaw sera chargé avant rt.jar et sera donc disponible à quiconque désirant l’utiliser. Ce projet étant open source, il sera également possible de réutiliser celui-ci dans d’autres contextes.
  • Jigsaw vous permettra de rendre vos applications modulaires progressivement. Nul besoin de migrer vos applications dans leur ensemble pour tirer parti des bénéfices de la modularité. Un même package peut être éclaté dans plusieurs modules.
  • Contrairement à OSGi, Jigsaw ne vous permet pas le rechargement de modules à chaud. Vos modules sont chargés statiquement au démarrage de vos applications.
  • Tous vos modules sont chargés dans un même classloader, cela permet de simplifier grandement son utilisation. Du même coup, il vous sera probablement possible de ‘tricher’ en chargeant, au runtime, des classes d’un module sans que vous en ayez réellement le droit.

Si vous confondiez modularité du JDK avec OSGi, cette liste vous a certainement ouvert les yeux : Jigsaw vous propose une solution beaucoup moins fournie qu’OSGi.

Dans les faits, ce projet a été créé, avant tout, pour casser notre bon vieux JDK monolithique. Bon nombre de polémiques ont été faites sur ce choix. Pourquoi se contenter d’aborder 80% des problématiques de la modularisation avec une nouvelle solution alors qu’OSGi en aborderait 90% ? La simplicité et la souplesse d’utilisation ont été préférées à une solution décrite comme lourde (nécessitant beaucoup de glue), vieillissante (datant de 1998) et difficile à maîtriser. Ce choix a été sans conteste difficile à effectuer, il s’est ailleurs attiré les foudres des défenseurs d’OSGi, mais reste complètement défendable.

Comment les closures seront implémentées dans OpenJDK 7 ?

Fin 2009, le projet Lambda, dont le but est d’apporter les closures à la prochaine version de Java, apparaissait au sein d’OpenJDK. Le lancement du projet faisait suite aux rebondissements dans l’actualité du JDK 7 lors de la conférence Devoxx un mois auparavant. Une documentation montrant la syntaxe des closures avait accompagné la création du projet, plus tard, un draft d’une spécification plus formelle est apparue, mais quid de l’implémentation ?
Rémi Forax, contributeur au projet Lambda, a mis à disposition la présentation qu’il a faite au FOSDEM’10, dans laquelle il résume les discussions ayant eu lieu sur la mailing list du projet concernant les possibilités d’implémentation :

  • Convertir les closures en classes anonymes. Cette solution présente l’inconvénient de produire beaucoup de classes et pose problème pour certaines constructions liées au closures.
  • Convertir les closures en invocations dynamiques telles que le permettra la JSR-292 (Supporting Dynamically Typed Languages on the Java Platform). Cette solution ne produit pas de classes supplémentaires et bénéficie de bonnes performances puisque l’invocation dynamique présentera un temps d’exécution similaire aux invocations de méthode classiques.

Le reste de ses slides présente certaines des problématiques d’implémentations des closures liées à l’accès aux variables locales et aux champs de la classe hôte.

L’actualité des bases de données NoSQL toujours aussi riche

Depuis plusieurs mois maintenant le mouvement NoSQL s’est installé dans l’actualité. A Paris, le NoSQL User Group a attiré l’attention en réunissant une cinquantaine de personnes à chacune de ses 2 sessions jusqu’à présent.

D’un point de vue plus général, l’actualité des bases de données NoSQL est marquée par l’intérêt croissant qu’elles suscitent, et par leur évolution rapide grâce à l’effort soutenu de leurs développeurs. Ainsi on a pu noter récemment :

  • Neo4j, une base de données orienté graphe, est maintenant disponible en version 1.0 finale. L’intérêt de la représentation en graphe est la possibilité de modéliser les données relatives aux réseaux sociaux, mais également tout type d’objets qui seraient liés entre eux de manière arbitraire. De plus, il est possible d’appliquer à ces données divers algorithmes de graphe classiques tels que la détermination du plus court chemin entre deux objets ou de l’objet central/majeur dans un nuage d’élément.
  • Cassandra vient pour sa part d’être publié en version 0.5.1, et connait un succès tout particulier puisque Twitter vient d’annoncer qu’il l’utiliserait désormais comme solution de persistance en remplacement de MySQL. Par ailleurs le projet Lucandra a été créé récemment pour permettre d’utiliser Cassandra comme solution de persistance pour les indexes Lucene. Donné à la Fondation Apache par Facebook, Cassandra est pour rappel un hybride entre BigTable de Google et Dynamo d’Amazon.
  • HBase profite d’une communauté très active et d’un intérêt important, renforcé par sa position de sous-projet du très populaire Hadoop. Sematext vient de publier un digest de l’actualité récente de ce projet. Celle-ci est principalement marquée par le développement d’une réplication multi datacenter, par l’arrivée d’un plugin DataNucleus pour HBase et par la disponibilité prochaine d’une solution de benchmark pour les cloud storages développée par Yahoo!.

Enfin, deux conférences entièrement dédiées au NoSQL sont à venir : NoSQL Live le 11 mars à Boston et, plus proche de nous, NoSQL Europe du 20 au 22 avril à Londres.

Astuce de la semaine, récupérez la liste complète des options de votre JVM

Cette astuce est complètement inutile, et donc également complètement indispensable. Cet article nous propose une petite commande permettant de récupérer la liste complète des options de votre JVM Hotspot à partir de sa library native Linux, la voici :

prompt$  strings $JAVA_HOME/jre/lib/amd64/server/libjvm.so | grep -B646 assert_null$ | grep -v '{' | grep -v '&' | grep -v '/' | grep -v '%' | grep -v assert_null

Commentaire

3 réponses pour " Revue de Presse Xebia "

  1. Published by , Il y a 13 ans

    Bonjour,

    « À l’instar d’OSGi, Jigsaw n’est pas un moyen de recharger vos modules à chaud… »

    Ce ne serait pas plutôt « A l’inverse d’OSGi … » ? Car à priori, OSGi permet bien de charger/recharger/décharger les modules (bundles) à chaud.

  2. Published by , Il y a 13 ans

    Bonjour,
    Vous avez complètement raison, j’ai corrigé l’article en conséquence.
    Je ne sais pas pourquoi je m’obstine à utiliser cette tournure, cela fait deux fois que je l’utilise à contre sens.

    Merci.
    Erwan (Xebia)

  3. Published by , Il y a 13 ans

    Je suis entièrement d’accord avec Adam Bien… OSGi est une technologie vieillissante, parfois utile, mais au final rarement justifiée et qui complexifie inutilement beaucoup de choses.

    Jigsaw apportera une solution simple et efficace à la plupart des problématiques courantes, relatives à la modularisation des applications.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.