Le Touilleur ExpressLe Touilleur ExpressLe Touilleur ExpressLe Touilleur Express
  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Riviera DEV Node.js

    Home Java Riviera DEV Node.js

    Riviera DEV Node.js

    Par Nicolas Martignole | Java | 1 commentaire | 20 octobre, 2011 | 0 | 1 533 affichages
         

    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

    Articles similaires:

    Default ThumbnailRiviera Dev, Introduction à Apache Hadoop Default ThumbnailRiviera DEV en direct Default ThumbnailRiviera Dev : CoffeeScript par Bodil Stokke Default ThumbnailConférence Riviera DEV à Sophia-Antipolis
    No tags.
    • Avatar
      Dominique De Vito 20 octobre 2011 at 13 h 09 min

      « 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. »

    Recent Posts

    • GitHub Actions : le tueur de Jenkins ?

      Avouez-le : ce titre de blog est super racoleur. J’avais aussi pensé

      15 février, 2021
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021

      Nous sommes en février 2021 pendant le 3ème confinement lié à la

      10 février, 2021
    • FizzBuzz en Java et Scala (surtout Scala)

      L’exercice FizzBuzz est un petit exercice très simple, à tester par exemple

      9 février, 2021

    Recent Tweets

    •  @steeve  Excellente idée 😎👍🏻

      57 minutes ago
    • RT  @steeve : Si tu as déjà effacé une DB en prod, testé des règles iptables via ssh ou passé un crash loop sur une app iOS, viens nous racon…

      57 minutes ago
    • J'ai refais/modernisé l'authentification OAuth2 pour Google, Github et LinkedIn sur le CFP de Devoxx FR.

      4 hours ago
    •  @LostInBrittany   @FGRibreau   @aheritier  😎

      23 hours ago
    •  @LostInBrittany   @FGRibreau   @aheritier  J ai un souci GitHub demain à corriger aussi avec oauth2

      23 hours ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (6) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (77) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) recrutement (6) ria (8) Scala (21) scrum (44) spring (23) Startup (11) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    Contactez-moi : nicolas@touilleur-express.fr

    Suivez-moi sur Twitter : @nmartignole

    Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
    • A propos de l’auteur
    • A propos du Touilleur Express
    Le Touilleur Express