Il y a 13 ans -
Temps de lecture 4 minutes
Revue de Presse Xebia
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Actualité éditeurs / SSII
Le coin de la technique
Actualité éditeurs / SSII
Jackson 1.6
Une nouvelle version majeure de la célèbre librairie de sérialisation/désérialisation de JSON est à présent disponible. Parmi les nouveautés quatre sont mises en avant:
- Possibilité de mettre à jour un objet à partir d’une donnée JSON et non plus d’uniquement le recréer. Par exemple si on a déjà un objet
properties
et qu’on veut mettre à jour ses valeurs on peut le faire comme ça:
mapper.updatingReader(properties).readValue(jsonWithOverrides);
- Les relations père/fils sont améliorées. On perdait la relation bidirectionnelle lors de la désérialisation (la plupart du temps on retirait le lien vers le père). A présent il est possible de garder ce lien grâce aux annotations
@JsonManagedReference
et@JsonBackReference
. - Apparition de MrBean qui permet de concrétiser une interface lors de la désérialisation. Imaginons qu’on ait une interface
Bean
, on peut à présent coder de la façon suivante et Jackson s’occupe de fournir l’objet implémenté:
Bean value = mapper.readValue("... du code JSON ...");
- Apparition d’une factory Smile pour gérer un format binaire du JSON. D’après les auteurs ce format permet une compression de 25% à 50% pour un gain de vitesse similaire. Jackson annonce concurrencer Avro, Thrift ou Protocol Buffers dans ce domaine.
Pour ces deux derniers points il est nécessaire d’inclure les deux librairies jackson-mrbean-1.6.0.jar
et jackson-smile-1.6.0.jar
.
D’autres améliorations ont été apportées, comme la possibilité de définir la façon dont est sérialisée une Enum
(par défaut c’était le .name()
qui était utilisé) ou sur les performances. Sur ce dernier sujet, vous pouvez retrouver notre récent comparatif.
Le coin de la technique
Sortie de Drools 5.1
Le fameux moteur de règles Open Source, Drools, est disponible dans sa nouvelle version, 5.1 depuis le début du mois de septembre.
Cette version s’est focalisée sur l’intégration à des tierces frameworks :
De plus il y a diverses améliorations :
- Implémentation BPMN2 pour le moteur de workflow de Drools,
- Optimisation de l’algorithme de Rete pour réduire la consommation mémoire et ainsi fournir un meilleur dimensionnement lorsque Drools traite un grand nombre d’objets (de faits),
- Monitoring avec JMX,
- L’IHM Web de Drools, Guvnor a amélioré son apparence graphique et a reçu de nouvelles fonctionnalités,
- et bien d’autres encore etc…
Ainsi avec Spring, Drools pourra être initialisé et configuré de la manière suivante :
Replanification de la sortie de Java 7
Tout reste encore hypothétique mais Java 7 pourrait sortir moins en retard que prévu. Initialement planifiée pour septembre 2010 (maintenant!), il semble qu’une implémentation complète de toutes les fonctionnalités de Java 7 ne soit possible avant mi-2012. Mais Mark Reinhold, le responsable chez Oracle de Java 7, a proposé un plan B qui découperait le périmètre de Java 7 en deux. Une première version sortirait mi-2011, qui serait donc la version Java 7 officielle et une deuxième mi-2012, qui deviendrait donc Java 8.
Le périmètre de cette nouvelle version 7 n’est pas encore strictement défini. Seraient retirés du scope:
- le projet lambda
- le projet jigsaw (modularisation de la jvm)
- une partie non définie du projet Coin
Par contre il est vraisemblable que ce qui est déjà utilisable dans les builds actuels se retrouvera dans cette version. Joseph Darcy liste les fonctionnalités possibles du projet Coin ici. Pas mal d’optimisations autour de la JVM feraient également leur apparition. Le fameux invokedynamic
(JSR-292) serait aussi de la partie, permettant de nombreuses optimisations pour les langages dynamiques qui tournent sur la JVM comme Groovy ou JRuby. Et plein d’autres fonctionnalités qui trépignent dans leur coin.
4 ans après la sortie de Java 6, une certaine attente s’est créée dans la communauté Java. Cette proposition de nouvelle planification avait des allures de sondage auprès des développeurs et à lire les diverses réactions ici et là, il y a de grandes chances qu’Oracle suive le plan B.
CouchDb se met au Java
La nouvelle est passée sur InfoQ la semaine dernière. Les équipes de Cloudant l’éditeur développant CouchDB, ont développé un View Server pour Java. Jusqu’alors, ce no SQL, ne supportait le map-reduce qu’avec des langages interprétés comme JavaScript et Python. Avec ce nouveau système, il devient possible de développer en Java son propre map-reduce. Il suffit d’implémenter l’interface JavaView. Le système repose sur une sérialisation JSON à l’aide de la librairie JSON.org. Pour le moment, le Java View Server n’est disponible que sur le service BigCouch hébergé par l’éditeur. Voilà une preuve, si il en fallait une, de la bonne santé du projet. Ce nouveau support permettra au plus grand nombre de tester plus facilement CouchDB, d’autant qu’il ouvre à moyen terme la possibilité d’utiliser un langage de nouvelle génération sur JVM comme Scala et Groovy pour les inconditionnels du genre.
Vous pouvez d’ores et déjà tester le service en démonstration sur le site http://cloudant.com/.
Commentaire
6 réponses pour " Revue de Presse Xebia "
Published by arnaud , Il y a 13 ans
Java 7:
Les pointeurs compressés en 64 bits sont déjà dans les dernières 1.6, donc ce n’est pas une nouveauté, non?
Published by Guillaume Arnaud , Il y a 13 ans
@Arnaud
Effectivement vous avez raison, il est possible d’utiliser cette option de la JVM depuis la version Java 1.6 update 14 grâce à l’argument « -XX:+UseCompressedOops ». Cette optimisation a été introduite pendant les travaux sur la JDK7.
La remarque sur cette partie a été retirée.
Guillaume (Xebia)
Published by Dominique De Vito , Il y a 13 ans
Le plan B me semble le meilleur :
– ceux qui n’en peuvent plus d’attendre et les early adopters seraient enfin ravis.
– les attentistes pourraient tjrs se retourner vers le « Service Pack 1 » aka JDK 8.
Published by Alexandre Bertails , Il y a 13 ans
> le projet lambda (similaire aux closures des langages dynamiques)
s/langages dynamiques/langages fonctionnels/
[[ a closure is a first-class function with free variables ]] (source http://en.wikipedia.org/wiki/Closure_(computer_science) ). Rien à voir avec les langages dynamiques en général.
Published by Guillaume Arnaud , Il y a 13 ans
@Alexandre
C’est effectivement un raccourci. Malgré tout je pense que les langages dynamiques comme Groovy ou Ruby ont contribué à populariser les closures (http://en.wikipedia.org/wiki/Dynamic_language#Closures).
Pour éviter toute ambiguïté j’ai retiré cette mention.
Guillaume (Xebia)