Revue de Presse Xebia

Revue de Presse Xebia

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

Sortie de MongoDB 1.8.1

Une mise à jour de maintenance de la version 1.8 (notes de version) de Mongo est sortie il y a quelques semaines. Elle apporte:

  • Le mode journal lorsque l’on utilise un seul serveur Mongo.
  • Support de Map/Reduce incrémental.
  • Support des index partiel et couvert.
  • Support des recherches géographiques en prenant en compte le rayon de courbure de la terre. Ce point est appréciable pour effectuer des recherches spatiales correspondant à un vrai cercle.

La 1.8.1 fixe quelques régressions liées à la dernière sortie.

Le coin de la technique

Sortie de Jboss Seam 3 : un framework J2EE modulaire

Jboss Seam vient de sortir en version 3.0.
De la même manière que Spring, Seam est un framework « boîte à outils », qui offre un ensemble de modules et d’extensions pour implémenter une solution J2EE complète. La grosse nouveauté de cette release est que le cœur de Seam est fourni par l’api CDI (JSR-299 Java Contexts and Dependency Injection). Ce choix permet au framework d’être totalement modulaire sous forme d’extensions portables. Les modules Seam peuvent être exécutés sur tous les serveurs compatible Java EE 6, mais aussi sur de simples serveurs web, comme Tomcat ou Jetty en utilisant Weld, une implémentation de CDI.
Cette nouvelle approche modulaire se retrouve aussi dans le système de build de Seam, qui utilise le pattern BOM (« Bill Of Materials ») de Maven 3. Les différents modules Seam peuvent alors être construits indépendamment et la mise à jour de la version d’une dépendance est aisée.

Voici la liste des principaux modules Seam:

  • Solder: Offre un ensemble d’annotations utiles ajoutant des fonctionnalités supplémentaires à CDI
  • Catch: Gestion des exceptions, plus d’infos ici.
  • Config: Offre la capacité de configurer les CDI beans via XML.
  • Persistence: Gestion de la persistance et des transactions.
  • International: Gestion des langues et internationalisation complète de l’application.
  • Remoting: Support Ajax coté client et serveur.
  • Validation: Fournit des fonctionnalités supplémentaires à Hibernate Validator.
  • Rest: Fournit une intégration de JAX-RS.
  • Security: Fournit des services d’authentification et d’autorisation.
  • Wicket: Intégrer CDI et ajouter quelques apports de Seam au framework Wicket.

Cette orientation modulaire et les nombreuses extensions proposées devraient permettre à Seam d’être un choix intéressant à la fois pour les nouveaux projets J2EE et à la fois pour faire évoluer en douceur des applications existantes. Et ce, que vous utilisiez un serveur d’application ou un simple serveur web.
Cette nouvelle version pourrait faire réfléchir plus d’un qui hésiterait entre le monde « Spring » et le monde « J2EE ».

Par ailleurs, la distribution de Seam vient maintenant accompagnée de SeamForge. C’est un outil en ligne de commande qui peut faire penser à Grails, Rails ou Spring Roo. Il permet de créer rapidement de nouvelles applications, de paramétrer facilement des applications existantes (ajout de JPA, JSF ou CDI), générer des IHM CRUD pour les @Entity… Plus d’infos sur TheServerSide ou dans la documentation.

Pour en savoir plus sur CDI, Oracle Tech Network vient de publier un article intéressant intitulé « Contexts and Dependency Injection in Java EE 6″.

Twitter: l’asynchronisme est la clef

La nouvelle a été relayée partout: Twitter remplace Ruby par Java. En plus, Java est 3 fois plus rapide ! Bref, de quoi regonfler l’égo des développeurs Java attaqués de toute part par des langages « plus rapides », « plus productifs » (et « plus hype » ?)… Qu’en est-il vraiment ?

En fait, plus que tel ou tel langage, Twitter est surtout passé, pour son moteur de recherche, d’un mécanisme de requêtes synchrones à un mécanisme complètement asynchrone agrégeant les résultats de requêtes sur les serveurs back-end. Plus que le remplacement d’un langage par un autre, c’est à une nouvelle architecture que Twitter a donné naissance et c’est elle qui apporte surtout le bénéfice. Le blog officiel des ingénieurs du site donne quelques éléments pour comprendre cette migration. C’est le serveur Netty qui propulse la toute nouvelle architecture. Il a été choisi pour « son API plus claire et une meilleure documentation » par rapport à Jetty ou Mina qui auraient aussi pu fournir les fonctionnalités asynchrones nécessaires. Par ailleurs, l’article décrit comment est déterminé l’ordre d’appel des différents services (en fonction de leurs dépendances) qui constituent alors une séquence de handlers à travers lesquels la requête passe pour être traitée. L’asynchronisme permet alors d’éviter d’avoir des threads se tournant les pouces en attendant les réponses des différents services.

Il est à noter que les traitements asynchrones sensés permettre de meilleures montées en charge ne sont pas l’apanage des serveurs Java: NodeJS et le Javascript sont souvent cités comme étant l’avenir. Un post sur le blog de MetaMarket annonce d’ailleurs que « les architectures LAMP sont mortes » et destinées à être remplacées par NodeJS et Javascript. C’est encore une fois la nature asynchrone du langage qui est mise en avant, ainsi que son adaptation aussi bien côté client que serveur. InfoQ vient d’ailleurs de publier une analyse de ce post qui semble faire un peu de bruit.

Bref, le langage du futur n’est pas connu avec certitude, mais le futur de la montée en charge sera asynchrone ou ne sera pas.

Billets sur le même thème :

2 commentaires

Laisser un commentaire