Accueil Nos publications Blog Devoxx 2011 : Play! 2.0

Devoxx 2011 : Play! 2.0

J’ai assisté à la présentation animée par Guillaume Bort et Sadek Drobi sur Play! 2.0 qui entre dans sa phase de bêta cette semaine. Ne connaissant Play! que de nom j’étais curieux de voir ce que pouvait apporter ce type de framework.

Pour ceux qui ne connaissent pas Play!, il s’agit d’un framework Web dit de haute productivité  (rechargement du code à chaud, convention over configuration, etc.) et stateless qui attire beaucoup l’attention depuis quelques temps.

La première annonce de poids est le rapprochement entre ZeNexity, la société qui a crée Play! et TypeSafe, la société derrière Scala. Cela signifie que Play! devient le framework web officiel de la pile TypeSafe basée sur Scala, Akka et SBT. Cependant pas d’inquiétude, Play! reste compatible Java.

La philosophie derrière la version 2.0 de Play! est de prendre en compte directement les nouveaux paradigmes des sites webs modernes et de les rendre le plus trivial possible pour les développeurs.

Le premier axe développé est la gestion de gros volumes de données en streaming. Les sites webs sont de plus en plus interconnectés peuvent recevoir, traiter et diffuser de gros volumes de données, que ce soit via Twitter, Facebook ou tous les autres réseaux sociaux. Or l’agrégation de ces données peut vite devenir problématique pour un site basé sur des flux bloquants comme c’est souvent le cas sur les sites Java. De plus, ce traitement est généralement parallèle et pose de de nombreux problèmes de concurrence.

Le constat de l’équipe de Play! est que pour traiter ce genre de problématiques le mieux est une logique de consommateurs/producteurs qui communiquent entre eux via des évènements ce qui correspond pile poil au mécanisme des Acteurs en Scala. Malheureusement les speakers ne sont pas entrés plus dans le détail de cette solution, ni sur son portage en Java.

Le deuxième point qu’ils ont mis en avant est la compilation de toutes les parties du site, y compris les css, javascript et templates de pages. Cela signifie que si vous faites une erreur dans votre CSS, le serveur vous préviendra directement comme s’il s’agissait d’une erreur dans le code Java (ou Scala) avec un message d’erreur très explicite et bien fichu qui est plutôt bienvenue lorsque l’ont est habitués aux messages souvent abscons des différents frameworks Java.

Associé au rechargement de tout le code à chaud, cela permet de développer très rapidement avec uniquement son IDE et le site et sans avoir à se référer constamment aux logs pour savoir si tout se passe bien.

Au niveau des CSS, javascript et templating des pages, un système de “plugins” à été ajouté afin de prendre en compte de nombreux frameworks et langages modernes tels que less, coffeescript, backbone.js, jquery, etc. de manière très aisée pour le développeur. Un certain nombre de frameworks sont disponibles directement, et il est possible d’en rajouter s’il vous manque votre framework favoris. Le système de templating des pages passe pour l’occasion de Groovy à Scala.

Le même système est également disponible pour l’accès aux données qui se base par défaut sur Ebean en Java et Anorm pour Scala. Mais des connecteurs pour différentes bases NoSQL telle que MongoDB sont prévus.

Au niveaux des autres nouveautés évoquées mais moins “épatantes”, l’arrivée d’une console et un système de build basé sur SBT.

La conférence était vraiment très intéressante, ponctuée de démos assez bluffantes qui donnent très envie de tester le framework. Contrairement à ce que je pensais, nul besoin de maitriser Scala pour se lancer et l’approche, très différente des frameworks webs classiques Java, semble vraiment très efficace. Le principe de se concentrer sur le développement du site en lui même plutôt que sur les multiples technologies JAVA me semble particulièrement séduisante après plusieurs mois de Struts!