samedi 28 janvier 2012

ça me play

Il y a des jours comme ça ou vous avez l'impression d'avoir raté 10 ans de nouvelles technologies, de nouvelles méthodes de travail. Vous vous prenez de la grosse innovation en pleine poire. Ça réveille et ça perturbe.

Dans mon métier, j'ai l'habitude d'utiliser des technologies éprouvées. Jusqu'il n'y a pas si longtemps, c'était des applications en Java + EJB 2. C'était compliqué, c'était triste. D'autant que dans l'application en question, les EJB étaient forcément sur le même serveur que la webapp, les requêtes SQL pour aller chercher les objets devaient a priori être décrite dans les EJB. Les JSP contenaient du code métier. On s'avait ce qu'était MVC mais on ne retrouvait pas le concept dans notre application. J'avais pris l'habitude dans mon jeune temps de coder des sites web en php3 en un week-end en récupérant mes données en faisant directement du SQL sans prise de tête... Alors oui, c'était triste.

Pourtant, je sais bien qu'il y a des choses qui ont évolué le développement web java dans les années 2000. Il y a eu Spring, les POJO, l'inversion de contrôle, des choses qui permettaient de tester et découpler les systèmes plus facilement. Et puis il y a JPA / Hibernate, qui permet d'utiliser une couche de persistance sans même savoir ce qu'était le SQL ! Des trucs de déglingos, quoi ! A mon grand regret, ma connaissance de ce genre de chose m'est restée théorique (mon PC trop lent à la maison du temps où j'utilisais Eclipse).

Il y a quelques temps (années ?), j'ai vu la vidéo de présentation du Play! Framework. Puis j'ai vu Ruby on Rails. Puis j'ai vu Grails, Django. J'ai essayé tout ça très rapidement, ça avait l'air très cool.
Cette semaine, j'ai eu dans l'idée que ce serait pas mal de faire une web app pour gérer les livraisons de notre grosse application. Je ne savais pas trop quelle techno choisir : nous avons un accès restreint sur notre serveur de développement (!), celui-ci étant hébergé chez le client. Je n'avais pas envie d'argumenter une demande pour installer quoi que ce soit. J'ai alors réalisé qu'un JDK était disponible. C'est quoi ce truc qui permet de coder des appli web en Java rapidement ? Play! ?

Je décide de mettre les mains dans le cambouis, la réunion d'avancement hebdomadaire de une heure trente est un bon moment pour jouer. Je me lance. Je ne connais rien à JPA, j'ai regardé du Groovy du coin de l'oeil mais je n'ai pas peur. Je suis la doc intégrée. J'avance tranquillement.

Tout est très simple dans ce framework. On lance l'appli, on écrit du code, il est compilé et déployé à la volée (il suffit de recharger les pages). Les pages web sont générées par Groovy à partir de templates dans un dialecte plutôt simple.  En une heure trente, j'ai écrit la base de mon modèle avec relationnel, mis en place mon contrôleur, des données de tests et des tests unitaires ainsi qu'un début de vue pour afficher mes objets. Le tout en regardant régulièrement la doc. Et pas dans un langage rapide à coder comme Python ou Ruby mais bien en JAVA.

Bref, c'est un truc de malade, je suis réconcilié avec Java. Je vais essayer de continuer mon appli (pendant une prochaine réunion ?). À ce train là, quelques jours me suffisent pour faire un truc cool. Et en plus, le framework intègre JQuery et Sass ! Génial !

Au fait, vous utilisez encore Eclipse comme IDE Java ? Essayez IntelliJ, ça décoiffe.