Après une première présentation sur Cloud Bees, je passe dans la salle Web pour regarder la présentation Node.js de Mathilde Lemée et Romain Maton. Tout d’abord, ce sont tous les deux des Zindeps, comme moi et quelques autres développeurs indépendants.
Ce matin au programme : un tour de Node.js avec une démo. Pourquoi ce framework ? Pourquoi fait-il un certain buzz depuis quelques mois ? Qu’est-ce que la programmation événementielle ? Et quelles sont les limites de Node.js ?
Serveur Javascript, s’appuie sur V8 le moteur Javascript de Chrome. Il est single-threadé du côté client, c’est un framework web écrit par Ryah Dhal. Il n’est pas fullstack JS, le backend est en C/C++ pour tout ce qui est gestion des threads pool, DNS, loop event etc. La version Windows n’est pas encore disponible pour l’instant.
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');
Pourquoi utiliser Node ? Permet de faire des applications webs scalables. Le single-thread évite à devoir gérer un partage d’état en frontal. Le choix de JAvascript permet d’être JSON user friendly. Pratique lorsque vous prenez un MongoDB ou Elastic Search par exemple.
Romain explique l’intérêt d’un framework capable de travailler finement sur les Threads. La base du moteur de Node est mono-threadée. Cela permet d’avoir un noyau non-bloquant. Dès qu’un appel bloquant est exécuté, Node délègue au reste de son moteur qui est lui, multi-threadé, et relâche la Thread du client lorsque le travail est terminé. On a donc une pile côté client, Node gère en fait finement la distribution du travail.
Node est basé sur un modèle d’événement. Tout est basé sur des messages. Votre code émet un message, une autre partie de votre code reçoit ce message de manière asynchrone, Node se charge de la coordination et de faire l’appel pour vous.
Mathilde explique que Node est un moteur destiné à faire de la programmation événementielle, avec une série d’exécution de tâches très rapides. Pour gérer les packages, Romain parle de NPM (mode package manager). Ce gestionnaire permet d’installer des modules de Node.
Lorsque vous installez Node, il n’y a que le serveur. C’est à vous de monter l’ensemble du projet. Node boilerplate est un module qui permet de gagner du temps avec un ensemble de projet et de modules préconfigurés. Event Emitter 2, Underscore, Vows, Coffemate, Node Inspector… Romain explique que Node est encore en développement, il n’est pas encore sorti. Il y a donc un risque important que d’une version à l’autre, votre projet ne marche plus. L’API change encore pas mal. Pour Node, il y a beaucoup de modules pour les API services comme Twitter, Spotify, Gravatar, Dropbox, AWS…
Regardez par exemple https://github.com/joyent/node/wiki/modules
Mathilde et Romain expliquent que le projet pour l’instant est encore un peu trop jeune, avec un risque de devoir maintenir ou reprendre votre code plusieurs fois. Mais comme tout projet open-source qui démarre d’ailleurs.
Express est un framework Web, inspiré de Sinatra (du monde Ruby) avec un système de template (jade, Haml, EJS…). Intéressant.
Mathilde parle ensuite de Socket.IO, moteur de WebSocket qui permet de faire de la communication asynchrone entre le client et le serveur. Supporté par Firefox 4, Chrome 4, Opera 10.7 et Safari 5.
Mathilde fait ensuite une démo de live coding. Romain sur le support des outils parle de la complétion avec IDEA IntelliJ, de l’IDE dans le cloud Cloud9. Démo sympa avec Socket.IO avec Firefox. Mathilde envoie ensuite son code sur Heroku, et montre que Socket.IO dégrade alors automatiquement le protocole de Websocket vers du long-polling HTTP. Heroku ne supporte pas les WebSockets. Pour terminer la démonstration, la démo montre l’utilisation de l’API de Twitter et de la lecture des flux JSON.
Démonstration intéressante des possibilités de Node.js, avec un bel exercice de live coding par Mathilde.
Pour terminer Romain et Mathilde explique aussi que Node n’est pas blanc, et que des articles sont aussi assez critiques sur l’architecture (voir sur Developpez.com). Donc non, ce n’est pas adapté à la construction d’une application de gestion, mais plutôt à la construction d’applications temps réels simples, comme par exemple pour loger en temps réel les Tweets sur un sujet.
Pause déjeuner au soleil en tee-shirt
0 no like
« Node est basé sur un modèle d’événement. Tout est basé sur des messages. Votre code émet un message, une autre partie de votre code reçoit ce message de manière asynchrone, Node se charge de la coordination et de faire l’appel pour vous. » : vu de loin, il y a un petit air de Erlang à la sauce JavaScript…
D’ailleurs, tu écris plus loin: « ce n’est pas adapté à la construction d’une application de gestion, mais plutôt à la construction d’applications temps réels simples, comme par exemple pour loger en temps réel les Tweets sur un sujet. »