Publié par

Il y a 7 ans -

Temps de lecture 4 minutes

Revue de Presse Xebia

Revue de Presse Xebia
La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.

Agilité

L’agile playground vous propose toujours plus de jeux sérieux!

Après le succès de la troisième édition ouverte au public (où j’ai eu l’honneur de présenter le Cynefin Lego Game), l’agile playground a encore rencontré un vif succès cette semaine grâce à l’animation par Géry Derbier de trois petits jeux très … agiles (voir les photos pour s’en rendre compte). L’agile playground continue donc sur sa lancée avec une prochaine soirée prévue le 10 décembre, il est encore temps de vous y inscrire.

De plus, les animateurs de l’agile playground proposent petit à petit les règles des jeux en français sur leur site (comme Objectif mars ou Cynefin lego game). Un grand merci à eux pour ce travail!

Le coin de la technique

De la cohérence entre equals et compareTo en Java

Stephen Colebourne, qui est à la tête de Joda-Time et de la JSR310, a écrit la semaine dernière un article très intéressant, dont la première partie explique les problèmes de consistance avec la méthode java.lang.Object#equals. Cette partie mérite d’être lue et relue.

L’article explique que si vous voulez créer une classe qui implémente java.lang.Comparable, vous devez y créer une méthode compareTo qui soit « consistante avec equals« . Qu’est-ce que ça veut dire ? Ça veut dire que pour toute instance i1 et i2 non nulles de cette classe, vous devez avoir i1.compareTo(i2) == 0 si et seulement si i1.equals(i2). La Javadoc indique que cette relation est fortement recommandée, mais pas strictement nécessaire. D’ailleurs, le JDK possède quelques exemples de cet ordre.

Parmi les exemples les plus célèbres, nous avons BigDecimal. Dans cette classe, compareTo compare les valeurs des BigDecimals, alors que equals compare en outre le scale (qui indique la position de la virgule). Ainsi new BigDecimal("4.00").equals(new BigDecimal("4.0") donne false et new BigDecimal("4.00").compareTo(new BigDecimal("4.0") == 0 donne true. Pensez à utiliser exclusivement compareTo pour comparer des BigDecimals. Heureusement que l’API de test fest-assert y a pensé !

Le reste de l’article de Stephen Colebourne est une question concernant la JSR-310 qu’il pose au lecteur. La classe OffsetDateTime permet de représenter des dates. Elle offre notamment la possibilité de représenter une même date de différentes manières. Bien que Stephen ait une grande préférence pour la consistance envers equals, dans ce cas, il se pose la question : faut-il que equals se base sur la valeur brute ou doit-elle prendre en compte uniquement la valeur représentée ? Et est-ce que compareTo doit reprendre la même logique ?

Vulgarisation d’un Iteratee

Si vous vous intéressez à Play! Framework, vous avez sûrement entendu parler des Iteratee. Vous avez cherché sur Google pour être sûr que ce n’était ni une faute de frappe ni ou une autre façon de dire Iterator. Et non, ceci est bien un concept du monde « fonctionnel ».

Si vous venez comme moi de l’impératif, et que cela occupe la majeure partie de votre temps, se plonger dans la documentation peut rapidement faire mal au crâne. Il est difficile de concilier à première vue objets immuables, lecture et écriture de ressources asynchrones. Et pourtant, c’est cette problématique qu’adressent les « Iteratees ».

James Roper, développeur chez Typesafe, propose sur son blog une très bonne introduction à ce concept.

Etape par étape, il part d’une classe « InputStream » que l’on connait bien, puis y ajoute les contraintes d’immuabilité et d’asynchrone, pour faire évoluer son embryon d’API vers celle de Play! Framework. C’est très pédagogue et facile à suivre … jusqu’à l’apparition des opérateurs à base de symboles. Cela commence avec « ><> », puis « &>> », ou encore « >>> »  et même |>>>. Je trouve le code un peu moins lisible et plus magique, même si cela est sensé retranscrire les différentes étapes d’un flux de traitement. En fait, il ne faut pas compter sur l’opérateur pour tenter de comprendre comment cela fonctionne.

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

Paris Cassandra meetup, lundi 19 novembre

Le prochain meetup Cassandra aura lieu au Palais Brongniart à 19h. A cette occasion, Jonathan Ellis, project chair d’Apache Cassandra sera là pour présenter les nouveauté de la version 1.2 qui va être publiée en décembre. Il sera accompagné de Michaël Figuière qui présentera un survol des drivers pour Cassandra. Les inscriptions se passent sur eventbrite.

Publié par

Publié par Xebia France

Xebia est un cabinet de conseil international spécialisé dans les technologies Big Data, Web, les architectures Java et la mobilité dans des environnements agiles. Depuis plus de 15 ans, nous avons la volonté de partager notre expertise et nos actualités à travers notre blog technique.

Commentaire

Laisser un commentaire

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

Nous recrutons

Être un Xebian, 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.