Java EE: Objectif Cloud !

Vous n'avez pu rater la semaine dernière l'annonce de la sortie de la JSR 342!

Il s'agit de la spécification de Java EE 7 dont le principal focus se veut être le Cloud. Cette évolution de la plateforme était attendue. En effet, nombreux sont ceux qui, depuis plusieurs mois, prédisent que l'avenir de Java dépendra de sa faculté à intégrer les paradigmes du Cloud, tels que le "multitenancy" (partage d'une même application entre plusieurs utilisateurs ou organisations clientes) ou encore l’élasticité (mise à disposition automatique de ressources en fonction de la montée ou de la baisse de charge).

Voici un rapide tour d'horizons du contenu de cette JSR.

Enjeux et évolutions

Le but annoncé de la spécification est d'intégrer le modèle PaaS dans les applications Java EE ayant vocation à être déployées aussi bien sur des Clouds privés que publiques.

Les réflexions commencent: pour l'instant on parle surtout de

  • rendre "multi-tenant" les API relatives à la gestion des ressources (JPA, JDBC, JMS)
  • tagger certaines ressources (BD, queues) comme "partagées entre plusieurs applications"
  • repenser la sécurité pour dépasser le modèle JAAS (mais rien de très précis pour l'instant).
  • permettre aux applications de fournir des métadatas indiquant certaines caractéristiques importantes en environnement PaaS (informations de qualité de service, partage de ressources, multi-tenant enabled, dépendances entre applications, etc.)

En bref, cela donne l'impression que Java EE 7 pose les bases; les vraies évolutions Cloud arriveront probablement par la suite. Le texte de la JSR le laisse d'ailleurs penser :

We see the cloud as a further evolution of this paradigm and propose to address it via some incremental changes to the existing (and popular) Java EE programming model.

Pour le reste, on trouvera beaucoup d'améliorations sur la base de Java EE 6 (JAX-RS, DI, etc.) ainsi que:

  • le support d'HTML5, de JSON et des Web Sockets
  • la révision du modèle de développement JMS

Et l'intégration officielle de nouveaux venus

  • JCache
  • Concurrency Utilities for Java EE

Un peu d'espoir du côté de la modularité !

De plus, il semble que nous ayons été entendus...

Nous discutions encore la semaine dernière sur les mailing lists OCTO des problèmes de couplage fort Build/Run lorsqu'on choisit de s'appuyer sur les briques offertes par les serveurs d'applications.

Par exemple, l'utilisation des EJB contraint l'évolutivité d'une application en la couplant au cycle de mises à jour du serveur d'application (la durée de vie d'une version de Websphere en production pouvant être de plusieurs années).

La JSR 342 propose ainsi:

Last but not least, this JSR will investigate providing modularity and versioning capabilities sufficient to cover common developer use cases, such as using a later version of an API already included in the platform.

Une JSR portée par Oracle ?

En décembre dernier, l'Apache Software Foundation se retirait du comité exécutif du JCP en déclarant que ce dernier "n'était plus un processus de spécification ouvert" et qu' "Oracle interférait sérieusement dans la gouvernance transparente de l'écosystème".
Bien qu'Oracle, dans le texte de cette JSR, "sollicite les contributions de la communauté", nombreux sont ceux qui remarquent l'absence des "big names" au sein du groupe d'experts. En effet, seuls apparaissent "Oracle, Jeff Genender and Antonio Goncalves"

Conclusion

Les regards sont donc braqués sur Java EE: comment la plateforme prendra-t-elle le tournant du Cloud ? Rendez-vous fin 2012 pour la validation finale de la spécification et 2013 pour les premières implémentations.