Amphithéâtre Maurice Halbwachs, Site Marcelin Berthelot
En libre accès, dans la limite des places disponibles
-

HOP et HipHop, l’orchestration d’activités Web (cours 8)

Ce cours a été directement couplé au séminaire, les deux orateurs intervenant à tour de rôle. Il s’agit d’une recherche en pleine activité sur la programmation et l’orchestration d’activités Web. Manuel Serrano, directeur de recherches Inria, a présenté le langage et le système HOP [1], qui permettent de remplacer la tour de Babel habituelle des langages du Web par un seul langage fonctionnel hérité du langage Scheme : écriture du serveur, codage HTML du client et communication client-serveur sont ainsi unifiés. Un programme HOP combine dans un seul code source les actions des clients et du serveur, distinguées par de simples annotations ; le compilateur HOP les répartit automatiquement et engendre l’ensemble des communications nécessaires à la cohérence du tout. Sur le serveur, HOP est compilé et exécuté nativement, avec une excellente efficacité. Sur les clients, HOP est compilé en Javascript, ce qui assure une portabilité optimale au prix de quelques limitations.

HOP permet de construire des applications Web bien plus simplement qu’avec les méthodes classiques, soit directement, soit en composant les innombrables services Web déjà existants (un service s’appelle comme une page Web, mais il rend des données au lieu d’afficher directement une page). Mais coordonner l’appel, le retour et les messages d’erreurs des services asynchrones distants est un problème complexe. Pour le traiter, nous avons défini et implémenté le langage HipHop, une version d’Esterel intégrée dans HOP, qui permet de tirer parti de toute la puissance du parallélisme synchrone et des instructions temporelles d’Esterel pour réaliser l’orchestration des services. Au contraire d’Esterel v5 et v7 qui laissaient à l’utilisateur le soin d’intégrer le code généré dans leur environnement propre, HipHop traite ce problème en profitant de la puissance intégrative de HOP due à son caractère fonctionnel d’ordre supérieur [2]. Il introduit une notion de machine réactive réalisant l’interface entre les événements asynchrones de HOP et la boucle d’interaction synchrone de HipHop [3]. Il permet aussi de développer des applications GALS (Globally Asynchronous Locally Synchronous) en faisant coopérer de façon asynchrone plusieurs machines réactives synchrones.

Tout cela a été illustré par l’exemple d’un système de recherche et de jeu de morceaux musicaux qui fait appel à différents sites de téléchargement de musique et de métadonnées associées. Il est indispensable de regarder les animations des vidéos pour en savoir plus.

Références

[1] http://hop.inria.fr.

[2] Scheme est une extension du l-calcul, cf. cours de 2009-2010.

[3] Sujet déjà exploré dans le cadre d’Esterel, en particulier par F. Boussinot et L. Mandel avec l’intégration de la programmation réactive dans les langages classiques, et par D. Gaffé à Nice pour l’interfaçage du code généré par Esterel avec les systèmes d’exploitation standards.