La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia.
Actualité éditeurs / SSII
Le coin de la technique
Actualité éditeurs / SSII
La VM d’Oracle JRockit devient gratuite
Henrik Ståhl, chef de projet du produit, l’a annoncé sur son blog: JRockit devient gratuite. Cette JVM, alternative payante à celle de Sun, fut longtemps propriété de BEA avant son rachat par Oracle. Il y a peu de temps, Oracle proposait encore commercialement ce produit, présenté par exemple dans ce document commercial.
JRockit est donc maintenant gratuit, mais on peut noter les point suivant:
- gratuit et non pas libre.
- les fonctions Temps Réel (permettant de limiter la durée des pauses dues au GC ), VirtualEdition (faisant tourner nativement JRockit dans une machine virtuelle, sans OS hôte) et l’outil JRockit Mission Control (console de management, monitoring et profiling) restent payants.
- comme le rappelle Emmanuel Lecharny sur le Google Group des Cast Codeurs, les conditions d’utilisation sont floues concernant l’utilisation sur des serveur ou la redistribution.
En fait, ce passage au gratuit permettra sans doutes à Oracle d’augmenter le nombre d’utilisateurs de JRockit et de fluidifier les ajouts de fonctionnalités de ce dernier dans OpenJDK. Il se dit depuis longtemps qu’Oracle désire disposer à terme d’une unique base de JVM unifiant le meilleur des mondes des VM Sun et JRockit. Les coûts de maintenance seront diminués alors que le le marché des personnes susceptibles de payer pour les outils ou services additionnels s’élargira.
Concrètement, que cela change t’il ? Nous pouvons tester JRockit. Bien. Dans certains cas d’utilisation vous noterez une différence par rapport à votre JVM habituelle. Mais avant de vous précipiter, êtes vous sûr d’avoir commencé par analyser les problèmes venant de votre propre code ? Il y a fort à parier que vous résolverez plus en l’étudiant qu’en changeant de JVM ;-)
Terracotta racheté par Software AG
Ari Zilka, son fondateur et CTO, annonce que Terracotta vient d’être racheté par Software AG, un gros du logiciel allemand. Pour mémoire Terracotta avait à l’origine sa propre solution (décrite en détails chez InfoQ) de clustering, puis avait racheté EhCache et enfin Quartz avant de sortir Big Memory.
L’annonce est assez convenue: tout le monde doit y trouver son compte, que ce soit la communauté Open Source, les clients actuels et futurs ainsi que toute l’industrie Java. Bref, tout va bien dans le meilleur des mondes. Comme nous l’annoncions à l’époque du rachat d’EhCache, Terracotta souhaitait se faire racheter. Il aura fallu attendre près de 2 ans, mais Terracotta dispose maintenant d’un nouvel atout pour faire connaître ses solutions et vendre ses services tout en les intégrant avec les produits de Software AG. En effet, les solutions Paas et de Cloud de Softawre AG doivent s’appuyer sur les outils de Terracotta.
Il sera intéressant de voir maintenant le positionnement exact de ce nouveau couple concernant les offres Paas par rapport à VMWare d’une part et à l’offre de SAP concernant le BI à la demande d’autre part. James Governor nous résume assez bien la situation dans cet article.
Le coin de la technique
JUnitParams, un framework pour paramétrer vos méthodes de test
Je suis pratiquement sûr que tous, vous avez déjà écrit une classe de test comme celle-ci :
public class MyFibonnacciTest { @Resource private Fibonnacci fibonnacci; @Test public void should_return_2_when_inputs_are_1_and_1() { // Given: int i = 1; int j = 1; // When: int k = fibonnacci.computeNext(i, j); // Then: assertThat(k, equalTo(2)); } @Test public void should_return_3_when_inputs_are_1_and_2() { // Given: int i = 1; int j = 2; // When: int k = fibonnacci.computeNext(i, j); // Then: assertThat(k, equalTo(3)); } // ... }
C’est très pratique pour la lisibilité: à la lecture des noms de méthodes, vous savez ce qui est testé. Par contre, il est clair que chaque méthode varie très peu. C’est là que vous sortez le logiciel JUnitParams de votre boite à outils.
Il vous permet de n’écrire qu’une seule fois la méthode et d’y ajouter, en annotation, vos jeux de données de trois manières différentes:
- simplement en listant les jeux de données. C’est pratique lorsque les données sont simples et qu’il n’y a pas trop de cas:
public class MyFibonnacciTest { @Resource private Fibonnacci fibonnacci; @Test @Parameters({"1, 1, 2", "1, 2, 3", "2, 3, 5"}) public void should_compute_next_fibonnacci_number(int i, int j, int k) { assertThat(fibonnacci.computeNext(i, j), equalTo(k)); } }
- sous forme de méthode si vos jeux de données sont amenés à être réutilisés:
public class MyFibonnacciTest { @Resource private Fibonnacci fibonnacci; @Test @Parameters(method = "getParametersForFibonnacciComputer") public void should_compute_next_fibonnacci_number(int i, int j, int k) { assertThat(fibonnacci.computeNext(i, j), equalTo(k)); } private Object[] getParametersForFibonnacciComputer() { return $( $(1, 1, 2), $(1, 2, 3), $(2, 3, 5) ); } }
- en créant un provider:
public class FibonnacciProvider { public static Object[] provideFirstThreeFibonnacciNumbers() { return $( $(1, 1, 2), $(1, 2, 3), $(2, 3, 5) ); } public static Object[] provideFirstFiveFibonnacciNumbers() { return $( $(1, 1, 2), $(1, 2, 3), $(2, 3, 5), $(3, 5, 8), $(5, 8, 13) ); } } public class MyFibonnacciTest { @Resource private Fibonnacci fibonnacci; @Test @Parameters(source = FibonnacciProvider.class) public void should_compute_next_fibonnacci_number(int i, int j, int k) { assertThat(fibonnacci.computeNext(i, j), equalTo(k)); } }
La version 0.2.0 est sortie le 16 mai dernier. Vous pouvez l’obtenir à l’adresse suivante : http://code.google.com/p/junitparams/.