Espresso : une alternative aux servlets java

Par:
fredericmazue

jeu, 22/11/2018 - 15:32

L'ecosystème Java est très vaste. Toutefois un secteur mérite des développements : les applications Web. Les servlets sont lourdes, verbeuses, complexes, et pas du tout amicales, lorsqu'il s'agit de procéder à des tests unitaires. Ceci sans doute de l'avis général, mais surtout de l'avis de Ning Sun qui propose Espresso en guise d'alternative.

Bien sûr, un outil comme Spring Boot est déjà une amélioration notable. Cependant Ning Sun a souhaité créer une abstraction légère, dans l'esprit de Python WGSI.

Cette abstraction légère est Espresso. Elle trouve son inspiration dans d'autres abstractions similaires : Ring (Clojure), Iron (Rust) et bien sûr Python WGSI.

Espresso s'articule autour de 4 concepts clé:

  • App : l'implémentation d'une fonction Espresso
  • Server : un conteneur pour exécution la fonction Espresso
  • Adapter : un adaptateur pour les serveurs Web existant leur permettant d'exécuter une fonction Expresso
  • Plugin or Middleware : Une enveloppe autour d'une fonction Espresso qui apporte des fonctionnalités ou des données additionnelles à cette fonction Espresso

Avec la fonctionnalité d'interface fonctionnelle de Java, l'implémentation d'une fonction Espresso est aussi simple que l'écriture d'une lambda

import io.github.espresso4j.espresso.*;
// ...
var app = (req) -> Response.of(200).body("<h1>It works</h1>");

Un serveur Web avec une seul fonction : c'est l'essence des applications Web Java modernes pour Ning Sun.

Espresso permet aussi d'écrire une application asynchrone :

import io.github.espresso4j.espresso.*;
// ...
var app = (req, sender, raiser) ->
        sender.accept(Response.of(200).body("<h1>It works</h1>"));

Espresso est un logiciel libre sous licence Apache 2.0, disponible sur GitHub.