16 mars 2009
Imprimer ce billet

Revue de Presse Xebia

Revue de Presse Xebia
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.

Le coin de la technique

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

Le coin de la technique

Atmosphere se dévoile

Comme annoncé dans sa présentation à Devoxx en Décembre 2008, Jean-Francois Arcand a publié une première version alpha de son framework Atmosphere. Le but de ce dernier est de fournir un environnement plus simple et plus efficace pour le développement d’applications Comet que les solutions actuellement disponibles.

En effet, jusqu’à présent, il était nécessaire d’utiliser l’API propre au conteneur de Servlets utilisé pour pouvoir intégrer des échanges de type Comet dans son application.

L’API unifiée proposée par Atmosphere suit les dernières modes en s’appuyant massivement sur des annotations pour permettre au développeur de définir les méthodes à invoquer en réponse aux différents évènements intervenant lors d’un échange Comet. Cette API avait été brièvement présentée par son auteur, il y a quelques mois déjà.

Malgré cette perspective de simplification dans le développement, Comet reste une technique d’échange sur HTTP qui s’intègre mal avec les environnements d’entreprise, souvent parsemés de proxys assez stricts en terme de timeout.

JAX-RS 1.1 : l’intégration de la JSR-311 dans JEE 6

Après la finalisation de JAX-RS 1.0, une version 1.1 était prévue pour spécifier les modalités d’intégration dans le reste de l’environnement JEE 6 tel que défini par la JSR-316. Marc Hadley annonce la disponibilité d’un premier draft de cette révision 1.1. Bien que rien ne soit encore figé, l’analyse du changelog de ce draft se révèle très instructive. Outre quelques corrections, ajustements mineurs de l’API et apports de précision dans la spécification, les détails d’intégration à JEE se révèlent particulièrement alléchants :

  • Intégration aux Servlets : une application JAX-RS peut être déployée dans un .war sans déclaration dans le fichier web.xml dans le cas où un conteneur de Servlets supportant JAX-RS est utilisé. Avec un conteneur Servlets 3.0, il est même possible de s’abstenir de fournir une sous-classe de javax.ws.rs.core.Application.
  • Intégration aux EJB : il est possible de faire d’un session bean une ressource JAX-RS. Les providers peuvent quant à eux être des session beans stateless et singleton (tels que définis par JSR-318: EJB 3.1).
  • Intégration aux Beans JSR-299 (Web Beans) : les ressources, les providers et les sous-classes de Application peuvent être des beans JSR-299.

La spécification 1.0 finale ne couvrait que l’intégration à un conteneur de Servlets. Ceci faisait partie des regrets de la communauté. Bill Burke (_chief architect_ chez JBoss) avait notamment réagit dès les premières drafts en réclamant, entre autre, l’intégration aux conteneurs EJB.

Ces possibilités d’intégration à l’environnement JEE 6 sont très satisfaisantes et renforcent encore l’attrait de cette JSR qui devrait, à n’en plus douter, bénéficier d’une large adoption de la part des développeurs.

OpenJdk Project Coin, proposez vos évolutions syntaxiques

Avez-vous entendu parler du projet Coin ? Ce projet, porté par l’OpenJDK et le Compiler Group a pour but de sélectionner les petites évolutions du langage à intégrer au Jdk7. Sur quelle base ? Et bien c’est justement là où c’est intéressant ! Vous avez jusqu’au 30 Mars pour proposer vos évolutions. Si vous avez une idée de génie qui faciliterait à coup sûr la vie des développeurs, c’est le moment d’en faire part à la communauté. Après cette date, les meilleures propositions seront regroupées sous la forme d’une JSR.

Joseph Darcy effectue une synthèse régulière de la liste des propositions, les résumés des deux premières semaines sont disponibles sur son blog (semaine 1 / semaine 2).

Voici en vrac quelques-unes de ces propositions :

  • Rendre compatible les Switch avec les String
  • Permettre de déclarer des méthodes static dans les interfaces
  • Simplifier le nettoyage des ressources avec l’appel automatique de méthode close() dans certains blocs
  • Amélioration de la gestion des Exceptions

Contrairement à ce que nous pourrions penser, même si la mailing-list reste très active, la liste des propositions n’est pas si impressionnante que cela. C’est à croire que certaines ardeurs se sont refroidies sur le sujet. D’autre part, il est important de garder à l’esprit que rien n’est encore figé sur le sujet, cette liste ne sera définitive qu’à la sortie de la JSR dédiée.

Le stockage des données en nuage doit sacrifier les fonctionnalités des DB relationnelles… ou pas

David Chapell explique, sur son blog, pourquoi la majorité des plates-formes de Cloud Computing propose un stockage de masse hiérarchique et non pas relationnel.
Pourtant ce type de stockage pose de nombreux soucis aux développeurs Java EE :

  • pas de représentation des données en table, et donc une plus grande difficulté à optimiser l’accès aux données.
  • pas de support du SQL.
  • les outils de reporting standards ne fonctionnent pas.
  • pas de schéma, donc le typage des données est garanti uniquement par l’application.

Alors, pourquoi abandonner toutes ces fonctionnalités ? Tout simplement parce qu’un modèle relationnel scale verticalement, mais très mal horizontalement. On peut rétorquer qu’il est possible de scaler horizontalement en utilisant le sharding. Malheureusement, le partitionnement des données nous redirige vers les problématiques énumérées ci-dessus.
Ce qui ne laisse à l’heure actuelle que 2 solutions :

  • sacrifier la scalabilité au profit des fonctionnalités relationnelles, si le nuage utilisé le permet (GoogleApps impose l’utilisation de Datastore)
  • avoir besoin à tout prix d’une très grande scalabilité pour la base, et sacrifier les fonctions relationnelles aux profits des modèles hiérarchiques.

Le modèle relationnel a encore quelques belles années devant lui.

Et ce d’autant plus que Microsoft se positionne sur le sujet : la version 1 de SQL Data Services (sous-projet de la plate-forme de service Azure) devrait supporter la majorité des fonctions relationnelles : tables, procédures stockées, triggers, vues, indexes…
Alors, le nuage peut-il exister sans stockage relationnel (question que posait Jon Arild Tørresdal le mois dernier sur InfoQ)? Il semblerait que le géant Microsoft ait pris parti.

Web Beans, l’implementation de la JSR-299, en version BETA 1

Régulièrement, nous vous tenons informés des dernières nouvelles autour de la JSR-299, « Java Contexts and Dependency Injection ».
Trois mois après la version ALPHA 1, la version BETA 1 est sortie.
L’annonce parle d’une couverture de 90% de la JSR-299.

Rapidement, les nouveautés de cette release sont :

  • le support des conversations,
  • la notification d’évènements en début ou en fin d’une transaction (ex: rafraîchir une liste),
  • la notification d’évènements pour la communication asynchrone.

Certaines traductions du guide de référence existent mais malheureusement pas encore en français. Comme celui de Seam existe, il y a bon espoir qu’il en sera de même pour Web Beans.

Voici les précédents articles de notre revue de presse abordant cette JSR:

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

JavaCamp Paris

Mardi 31 mars se déroule la prochaine rencontre JavaCamp Paris, située cette fois ci dans les locaux de Google.
Ce BarCamp prend la forme originale d’ateliers participatifs, où le contenu est fourni par les participants : tout le monde participe, il n’y a pas de spectateurs. L’inscription est obligatoire et limitée à 70 participants. Une fois enregistré, vous pourrez inscrire les sujets qui vous intéressent le plus. Les sujets les plus cités seront ensuite sélectionnés. Retrouvez une annonce complète sur Le Touilleur Express.