[Toulouse JUG] Play! Framework, le retour !

Jeudi dernier, comme annoncé ici-même, nous avons eu la chance d’assister à la présentation Play! de la part de Sylvain Wallez. Alors on va tout d’abord lancer quelques fleurs : la présentation était très claire, bien architecturée, dynamique et intéressante. Peut-être que le sujet facilitait les choses, mais je suis sorti de là tout à fait emballé…

Cette présentation, la voilà :

Bon, mais ça parlait Play!, alors parlons-en un petit peu… Personnellement je ne connaissais pas grand chose, à part tout le bien qu’en dit régulièrement Nicolas Martignole, alias le touilleur express ! Donc en quelques points, quoi en retenir :

  • C’est un Framework WEB, orienté REST… Comprendre par là que l’URL a une place prépondérante comme dans la plupart des frameworks Web.
  • Play! est un framework « full stack » : tous les outils et les couches du projets sont fournis, que ça soit la couche MVC Web, le serveur web, la couche de persistance (Hibernate ou JPA), les outils de test, ou de déploiement. On créé un projet Play!, et tout est présent pour ne se concentrer que sur le métier. C’est clairement son objectif : être productif rapidement, et s’attacher au principal.
  • Dans ce qui m’a plu, je retiendrai la compilation à la volée, le save / reload qui permet juste de faire F5 sans avoir à redémarrer le serveur !! ça, c’est tout con et ça doit faire rigoler les développeurs PHP, ou même Swing, mais pour perdre des heures toute la journée à arréter / démarrer mon serveur tomcat, cela fait partie des atouts de Play! : c’est un gain de productivité non négligeable.
  • Play! est architecturé dans un classique MVC, bien détaillé dans la présentation de Sylvain.
    – La persistance est simple, avec des méthodes statiques dans les Bean du model, qui permettent aux dits-bean de se sauvegarder, charger, etc… avec l’aide de JPA ou Hibernate…
    – La couche Contrôleur est un peu particulière et c’est le seul point que demande un peu d’habitude je pense… Elle se compose d’un système de routages intéressants et facilement configurables, et des classes Controleurs elles-mêmes. Play! va fournir dans ces classes des méthodes statiques (genre render, slide 21), que j’ai trouvées pas très « conventionnelles », ces méthodes lançant des exceptions pour gérer les différentes vues possibles. En effet, l’appel à ces méthodes signe la fin de la méthode courante.
    – En ce qui concerne les vues, ce sont des templates Groovy pour Play! 1, et Scala pour Play!2… Nous parlerons Play!1 et Play!2 un peu plus tard.
  • Serveur Netty (NIO). Pas de session, léger, bonnes performances… Même si le serveur est stateless, si on a quand même besoin d’une API stateful, elle est fournie (sous la forme de cookies cryptés je crois…).
  • Tout un tas d’outils de tests (clients / serveurs), un déploiement et une configuration simplifiée… Bref, tout pour que la mise en val / prod ne soit qu’une formalité. Nous aurons aussi tout un tas de modules, des plugins pour Eclipse / IntelliJ…. Il y a une communauté, et des choses qui se font !

Nous avons un métier où il est facile de s’enfoncer dans la complexité… Toujours plus de frameworks, de couches dans l’architecture, d’outils différents… Assez pour s’y perdre. Je retiendrai juste que Play! propose vraiment une solution qui fonctionne, apparemment bien, pour un rendu rapide et performant. A chaque problème ses solutions, et à priori Play! amène vraiment des solutions concrètes à de vrais besoins professionnels.

Même si j’ai été grandement convaincu, il faut quand même que je me mette un petit bémol. Play! est écrit en Java, et Play! 2 sera plus basé sur Scala, même si on peut dire que ce langage fait (trop) parler de lui! Ce qu’on lui reproche principalement : sa complexité… Rien qu’aujourd’hui, sur la mailing list des Cast Codeurs, ça s’est un peu enflammé à propos d’un article de la part de Stephen Colebourne qui a un avis bien tranché sur Scala… Alors il sera possible sur Play!2 de mettre une surcouche pour continuer à coder en Java, mais il y a quand même une certaine orientation de prise qui pourrait faire hésiter une partie de la communauté. Je vous encourage à lire cet article de Nicolas Martignole qui donne son ressenti… Pour lui, Play!2 n’a pas les mêmes atouts, et ne sera pas utilisé dans le même cadre que Play!1… Je trouve tout de même dommage que la migration paraisse compliquée, ou qu’il n’y ait pas de rétrocompatibilité… C’est quand même un obstacle à l’instauration d’une confiance en entreprise, mais bon…

Si vous souhaitez une démonstration Play! regardez cette vidéo (un peu longue), c’est plutôt sympa 🙂

Et enfin, merci au Toulouse JUG et à ses sponsors pour la soirée, l’apéro et l’après soirée !

LB.

Une réponse sur “[Toulouse JUG] Play! Framework, le retour !”

  1. Merci pour ce compte-rendu !

    Et effectivement, « le sujet facilitait les choses » comme tu dis, parce que Play apporte un vent de fraicheur bienvenu quand on a bataillé avec les frameworks über-complexes 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.