Le framework PLAY! 2.0
Les principaux concepts de Play 2.0
Convention plutôt que configuration
Un des aspects particulièrement attrayant du Framework PLAY est qu’il nécessite très peu de configuration et peut aisément être mis en place en quelques minutes. En effet la mise en place d’un environnement de développement se limite à l’installation du JDK JAVA et au téléchargement du paquet binaire (disponible ici). Ce paquet contient tous les outils nécessaires pour mettre en place d’une application web en java, allant de la gestion des compilations au déploiement du serveur web intégré. Une fois cette installation faite un vulgaire éditeur de texte permet de créer les sources du projet, et toute la gestion de la compilation et de la mise en place du serveur web est gérée automatiquement par PLAY.La programmation asynchrone
Play a été initialement conçu pour gérer des applications Web classiques, c'est-à-dire composées de nombreuses requêtes de courte durée. Cependant on peut observer une évolution du WEB vers de plus en plus de traitements de données temps réel concurrentes (lié au développement du WEB 2.0). Cela entraine la nécessité d'ajouter la notion de programmation asynchrone au sein du développement WEB.Pour répondre à cette problématique, Play utilise la possibilité native du Java à gérer les I/O de façon asynchrone. Concrètement le résultat renvoyé suite à une requête du client peut dépendre d'un calcul coûteux ou d'un appel de service Web qui peut prendre du temps. Dans un modèle synchrone cela entraîne un comportement de blocage au niveau du client qui attend la réponse, mais aussi au niveau du serveur qui effectue les actions necessaires à la création de la page.
Pour palier à ce problème Play intégre un système de "promesse de résultat".
Au lieu d'attendre le résultat permettant de retourner la page au client le serveur se contente de renvoyer un "Promise <Result>".
Cela permet de ne plus bloquer le serveur.
De plus pour répondre à cette problèmatique de programmation Play intégre de façon native l'utilisation du Framework Akka. Qui est un framework disponible en Scala et en Java permettant de gérer très efficacement des applications multithread et concurrentes.
Java et Scala
Comme indiqué dans l'introduction, ce site est dédié à présenter le développement web en JAVA et non en Scala, cependant play intègre du Scala dans son architecture Java.En effet le moteur de Template disponible est en Scala. Cela a pour objectif de permettre le typage des templates. En clair, chaque template attend des paramètres d’entrée typés, et c’est à la compilation que tout cela va être vérifié, ce qui rend les templates très robustes.
Exemple de template:
@(tasks: List[Task], taskForm: Form[Task])
@import helper._
@main("Todo list") {
<h1>@tasks.size() task(s)</h1>
<ul>
@for(task <- tasks) {
<li>
@task.label
@form(routes.Application.deleteTask(task.id)) {
<input type="submit" value="Delete">
}
</li>
}
</ul>
<h2>Add a new task</h2>
@form(routes.Application.newTask()) {
@inputText(taskForm("label"))
<input type="submit" value="Create">
}
}