Revue de Presse Xebia

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

Actualité éditeurs / SSII

Le coin de la technique

Actualité éditeurs / SSII

Sonar 3.0

Cette plateforme de contrôle de qualité de code arrive avec son lot d’améliorations :

  • Meilleure gestion de la sécurité : cryptage du mot de passe de la base de données, mots de passe cachés (***), informations sur les licences …
  • Définition d’alertes sur les métriques booléennes.
  • Nouveau design de la TimeMachine : les curieux pourront regarder le sonar pour sonar et sa TimeMachine.

Oracle reprend Java sous Mac OSX

Flashback ! C’est ce qu’il aura fallu pour qu’Oracle se décide enfin à prendre en charge le développement de la JVM sur Mac OS.

Pour rappel, Flashback est un trojan qui affecte les machines sous Mac OS Léopard et Lion, en utilisant une faille Java permettant de transformer votre machine en BotNet. Ce n’est pas la première fois qu’un problème survient au sujet de la mise à jour de Java sous Mac OS. Fin 2010, la firme de Cupertino avait fait savoir qu’elle ne maintiendrait plus la version de Java pour Mac, et que cela reviendrait donc désormais à Oracle.

Cette décision d’Oracle pérennise le support de Java sous Mac OS, après une longue période d’incertitude (comme l’avait expliqué l’épisode 30 des cast-codeurs). Une bonne nouvelle pour les développeurs fans de laptops à pomme.

On peut donc espérer que les mises à jour et autres corrections de failles de sécurité seront dorénavant beaucoup plus rapides que par le passé ( ~ 6 mois de délais pour certaines failles). Vous pouvez d’ailleurs dès maintenant retrouver le JDK 7 pour Mac OS sur le site d’Oracle.

Le coin de la technique

Embedmongo : un mongo « light » pour java

Il existe plusieurs questions stackoverflow sur la « bonne » façon de faire des tests d’intégration automatisés pour du code qui interagit avec MongoDB. La plupart des réponses invitent à installer un serveur mongo sur la machine et à contrôler l’état du serveur depuis un @BeforeClass / @AfterClass.  Outre que cela rend complexe la parallélisation des builds, on ne maîtrise pas toujours son serveur d’intégration continue.
Heureusement, Michael Mosmann propose une librairie maven qui permet d’émuler le comportement de mongoDB pour les tests. La documentation de la librairie est assez légère pour le moment, mais des exemples commentés sont présents sur stackoverflow et dans un article sur le blog cubeia. (hat tip @samklr pour le pointeur)

MRUnit 0.9

MRunit est un librairie de test unitaire (xUnit) pour Hadoop MapReduce. La version 0.9 vient de sortir. On notera :

  • Une façon plus concise d’exprimer ses attentes vis à vis des compteurs.
  • L’ordre de la sortie peut désormais ne plus être validé.
  • Les combiners peuvent désormais être testés avec l’API mapreduce (la nouvelle) tout comme avec l’API mapred (l’ancienne).
  • Un meilleur support des différentes sérialisations en enlevant toute supposition sur celle utilisée.
  • De meilleurs messages d’erreurs pour prévenir d’une utilisation incorrecte de la librairie.

CDH4, Hadoop en haute disponibilité

Le 27 décembre 2011, Hadoop est sorti en version 1.0, témoignant de sa maturité. Cependant un problème n’était toujours pas résolu : la haute disponibilité. En effet, le Namenode, le processus responsable de la structure du système de fichier, était un point unique de défaillance (SPOF). En cas d’arrêt de la machine l’hébergeant, aucune action n’était prévue par défaut pour assurer la continuité du fonctionnement du cluster sans intervention manuelle, humaine.

Le 24 avril 2012, Cloudera a annoncé la beta publique de CDH4 (Cloudera’s Distribution Including Apache Hadoop). La haute disponibilité est parmi les avancées majeures décrites. La solution implémentée est une approche maitre-esclave. Les deux processus Namenode se synchronisent sur un espace de stoquage partagé. En cas de défaillance, le Namenode esclave prend la relève évitant ainsi toute coupure de service due à un arrêt du Namenode maitre pour cause de défaillance ou de maintenance.

Guava release 12

Si vous utilisez Guava sur votre projet, c’est le moment de le mettre à jour, car Guava vient de passer récemment en version 12. La grande particularité de cette version est qu’elle brise la compatibilité avec le JDK 5. Vous avez bien lu ! Pour utiliser Guava 12, vous devrez d’abord installer au moins un JDK 6 ou plus, car cette version interagit avec les nouveaux types de collections introduites dans cette version du JDK (Deque, NavigableMap, NavigableSet). Si vous ne pouvez pas décoller du JDK 5, vous pouvez toujours utiliser la version 11.0.2 de Guava.

Pour en revenir à la version 12, voici une liste de certaines nouveautés :

  • L’ajout d’un package reflect, contenant des outils pour étendre votre expérience avec la réflexion de Java.
  • La classe FluentIterable qui permet de faire des chaînages de méthodes spécialisées dans le traitement de flux (donnant au passage un avant goût de ce que sera Java 8).
  • Un début d’utilisation du type Optional dans d’autres classes de Guava (dans FluentInterface et Enums).
  • Ajout de la méthode transform() dans Optional qui permet d’appliquer une fonction sur la valeur contenue dans Optional si elle existe. Optional devient un functor au sens théorie des catégories.
  • Ajout de nouvelles factory methods pour les collections (newArrayDeque, newCopyOnWriteArrayList, Maps.unmodifiableNavigableMap, etc.).
  • Collections2 est capable de générer l’ensemble des permutations d’une collection.
  • La classe CacheBuilderSpec vous permet de spécifier le comportement de votre cache en une chaîne de caractères (et éventuellement de charger cette spec depuis un fichier, par exemple).

Sortie de la version 1.0 de Cloud Foundry Eclipse Plugin

La semaine dernière, SpringSource a annoncé la sortie de la version 1.0 du plugin Eclipse pour CloudFroundry. À l’aide du plugin, les développeurs pourront contrôler leurs applications déployées sur CloudFoundry à partir d’Eclipse.

Voici quelques fonctionnalités proposées :

  • Déploiement et contrôle des applications à partir du workspace
  • Support web : Java native, Spring, Grails et Scala
  • Paramétrage des instances et monitoring
  • Navigation dans les répertoires du serveur
  • Support au debug pour Micro Cloud Foundry
  • Amélioration des mises à jour incrémentales

Le plugin peut être installé sur Eclipse Indigo (version recommandée par SpringSource) à partir d’Eclipse Marketplace et également sur STS à l’aide de STS Dashboard.

Pour rappel, CloudFoundry est une plateforme PaaS open source développée par VMware/SpringSouce.

Plus de détails sur l’annonce InfoQ.

Meteor

Meteor, c’est le framework web dont tout le monde parle en ce moment. Vous voulez faire du web, avez une exigence d’avoir un comportement temps-réel, et surtout vous voulez développer rapidement? Vous devriez alors y jeter un coup d’oeil.
Les trois screencasts proposés sont bluffants de simplicité et d’efficacité.
Voici quelques points qu’il faut retenir :

  • 1 langage, Javascript
    Tout est en Javascript, côté client bien sûr, mais aussi côté serveur avec Node.JS. Le même code peut être exécuté des deux côtés sans avoir besoin de câbler en RPC. Meteor s’en charge pour vous. La priorité est donnée au code côté client. Ainsi, tout le code Javascript que vous pouvez écrire (en dehors des dossiers réservés public et server) est packagé, compressé et servi aux clients. Le concept est intéressant. Tout le modèle et le métier ne sont codés qu’une seule fois, et chargé indifféremment des deux côtés.
    En outre, il est aussi possible d’utiliser votre framework de templating préféré, Coffeescript ou encore Less sans problème.
  • Une base de donnée aussi côté client
    Avec Meteor, on attaque la base de données côté client! Les documents utilisées depuis la base (MongoDB par défaut) sont copiée pour faire un cache client, mais l’API reste la même pour manipuler ce cache ou la base. L’écran est rafraîchi et dans le même temps les modifications de données sont automatiquement envoyées au serveur. Les deux se synchronisent ensuite. Le client adopte l’état du serveur s’il y a conflit. Meteor se charge de la communication entre cette requête côté client et sa diffusion, par un mécanisme publish/suscribe. L’asynchronisme a pour effet de compenser les problèmes de latence des applications sur Internet et d’avoir ce comportement proche du temps-réel.
  • Le Live Coding
    Changer votre code HTML, et le résultat apparait automatiquement dans votre navigateur. Cela tient presque de la magie car il n’y même pas recours à un plugin de rafraichissement automatique de la page. Meteor détecte le changement, et l’envoie à tous les clients. En plus de cela, il garde votre contexte (session et DOM après possible manipulation) pour afficher la page avec le même état qu’avant le rechargement. Si vous voulez avoir un retour rapide des effets de votre code, vous êtes servis.
  • Deploiement simplifié
    Peut-on faire plus simple?
    Démarrer en local :

    meteor
    

    Déployer votre application sur Internet (ils offrent pour l’instant un service d’hébergement gratuit)

    meteor deploy www.myapp.com
    

    Vous souhaitez vous désengager de Meteor.

    meteor bundle myapp.tgz
    

L’idée est d’avoir une plateforme ouverte avec le moins de contrainte possible. Ils proposent une solution simplifiée. Si elle ne vous convient plus, vous pouvez sortir du framework à tout moment.
Quand on épluche la documentation, on remarque quelques points gênants que Cédric Exbrayat a pris le soin de relever dans ce post sur son blog.

C’est encore frais mais très prometteur. Bien sûr ce framework ne s’applique pas à tous les besoins. Mais en bon craftsman que vous êtes, vous savez déjà adapter les outils à votre cas d’utilisation. Pour vous tenir au courant, ce se passe sur Twitter et github .

Billets sur le même thème :

2 Responses

  • Sauf erreur de ma part, il ne s’agit pas d’un EmbeddedMongo, mais d’un wrapper permettant de lancer des process mongo sur une installation native … cad il faut avoir mongo installé sur tous les postes ou l’on desire lancer les tests.

    Ne pas pouvoir executer les tests sur un « H2 pour mongo » est un frein à son adaption…

  • Concernant le EmbeddedMongo, je viens d’essayer la solution proposée dans cette revue de presse. Elle execute bien un mongo (light?) natif … mais offre la possibilité de l’installer automatiquement via les tests s’il n’est pas present sur la machine.

    Merci pour l’info.

Laisser un commentaire