Programmez! #239 PDF pour nos abonnés papier

Abonnés papier : en raison de la situation due au coronavirus, des retards sont à prévoir en ce qui concerne la distribution de Programmez! #239 par La Poste. C'est pourquoi nous mettons Programmez! #239 PDF à disposition dans votre compte utilisateur sous un onglet dédié en attendant. Pour y accéder, il vous suffit de saisir votre n° d'abonné (ou éventuellement le ressaisir comme pour l'accès aux archives) dans votre compte utilisateur, si ce n'est pas déjà fait. Si vous ne connaissez par votre numéro d'abonné, vous pouvez l'obtenir à cette page.

En cas de difficultés, contactez le webmaster à partir du formulaire de contact de ce site.

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.