EA2014 Scalatra

From air
Revision as of 23:27, 6 November 2014 by Adji-Ndeye-Ndate.SAMBE (talk | contribs) (Structuration et développement avec Scalatra)
Jump to: navigation, search
A tiny, Sinatra-like web framework

Présentation

  • Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2014)
  • Sujet : Scalatra
  • Date : 07 Novembre 2014
  • Auteur : Adji Ndeye Ndate SAMBE <sambe@e.ujf-grenoble.fr>
  • Télécharger la présentation : [[]]

Résumé

Mots Clés

Abstract

Key Words

Synthèse

Introduction

Scalatra est un micro-framework HTTP, écrit dans le nouveau langage Scala. Aujourd’hui, on retrouve beaucoup de sites développés avec Scalatra. Il est utilisé par LinkedIn, la BBC, le Guardian, le site de jeux d’IGN, le fournisseur d'identité sociale JanRain, le dictionnaire en ligne Wordnik, et le nouveau site phare du gouvernement britannique. Il est simple, rapide et encore en production.

Le langage Scala

Le langage Scala tire son nom du mot anglais «scalable», qui peut être traduit par «extensible». Conçu à l'École polytechnique fédérale de Lausanne (EPFL) en Suisse, Scala est un langage qui a en effet la faculté de pouvoir être étendu en fonction des besoins des programmeurs. Il est dit multi-paradigme car il intègre deux paradigmes habituellement opposés: les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique. L'idée de ce langage est de reléguer tout ce qui n'est pas indispensable au fonctionnement du langage dans des bibliothèques.

Caractéristiques générales de Scalatra

Scalatra est un micro-framework. Un micro-framework est une façon d'organiser le code, avec uniquement des fonctions d'assistance minimale intégrées. Il est extrêmement modulaire, permettant à l’utilisateur de choisir les bibliothèques qu’il veut, et de facilement étendre des fonctionnalités quand nécessaire.

Scalatra utilise le modèle MVC Pattern et est conçu pour être déployé dans les conteneurs de servlets Java standard: Tomcat, JBoss AS et Jetty.

Scalatra intègre également des constructions avancées pour la programmation event-driven, ce qui permet de pousser facilement des informations dans les navigateurs des utilisateurs afin qu'ils voient l'information constamment mis à jour sans avoir à rafraîchir la page.

Pourquoi utiliser Scalatra?

Le développement d'applications mobiles a explosé au cours des quatre dernières années. Dans le même temps, les frameworks de développement single page tels que Backbone.js, ember.js, et angular.js ont rapidement gagné en popularité.

Cela signifie qu'il existe beaucoup de clients qui ont une utilisation intense et lourde des technologies du Web, différents des clients navigateur traditionnels. Scalatra est un ajustement parfait pour ces clients. Il est facile à installer, léger, et rapide qui permet de concevoir et de construire très rapidement des API web de haute performance.

Avec Scalatra, l’utilisateur dispose d’un excellent moyen pour exprimer des actions HTTP, ainsi que de beaucoup de modules optionnels pour les tâches extérieures communes, et un moyen facile de mettre en place des bibliothèques supplémentaires pour accomplir tout ce qu'il entreprend.

Il dispose d'outils spéciaux intégrés pour produire une belle, fonctionnelle et correcte documentation de l'API.

Structuration et développement avec Scalatra

La structure de base de Scalatra est très simple : les vues sont classées dans le dossier de view, et les layouts (qui englobent les vues) dans le dossier layouts. Il est possible pour l’utilisateur de mettre tout le code Scalatra dans le même répertoire pour faciliter la navigation. La structure basique d’un projet se présente comme-suit :

project
|_build.properties      <= specifies what version of sbt to use
|_build.scala           <= dependencies and project config are set in here
|_plugins.sbt           <= sbt plugins can be added here

src
|_ main
|  |_ scala
|  |  |   |_ScalatraBootstrap.scala     <= mount servlets in here
|  |  |_org
|  |      |_ yourdomain
|  |         |_ projectname
|  |            |_ MyScalatraServlet.scala
|  |_ webapp
|     |_ WEB-INF
|        |_ views
|        |  |_ hello-scalate.scaml
|        |_ layouts
|        |  |_ default.scaml
|        |_ web.xml
|_ test
   |_ scala
      |_ org
         |_ yourdomain
            |_ projectname
               |_ MyScalatraServletSpec.scala

Une application Scalatra complète peut être écrit en quelques lignes de codes :

package org.example.app
 
import org.scalatra._
 
class MyScalatraFilter extends ScalatraFilter {
 
  get("/hello/:name") {
    <h1>Hello, {params("name")}</h1>
  }
}

Tout ce qui doit être fait c’est d'ajouter un petit fichier de configuration, télécharger et exécuter une commande pour obtenir une application Web en cours d'exécution.