NODE.JS : TREND OU AVANCÉE ?

NODE.JS : TREND OU AVANCÉE ?

Le web est un domaine fortement sujet aux modes. Même si certaines apparaissent parfois prometteuses, elles sont le plus souvent par définition éphémères. Node.js semble lui, depuis quelques années, faire son trou et pourrait bien devenir une technologie qui compte.

 

Qu’est-ce que Node.js ?

C’est le Javascript côté serveur et non plus uniquement côté client. Autrement dit, Javascript va générer des pages HTML et non plus seulement les modifier sur le navigateur du client. C’est d’ailleurs un point fort qui revient dans les retours d’expériences : avoir le même langage côté serveur et côté client apporte cohérence et gain de productivité.

 

Point fort : la rapidité

Node.js s’inscrit dans un mouvement de réhabilitation et de professionnalisation du Javascript et profite des performances réelles du V8 (moteur d’exécution javascript créé par Google). C’est souvent l’argument phare avancé en faveur de Node.js et les benchmarks, s’ils sont parfois discutables, s’avèrent effectivement assez éloquents.

 

node

(Source : http://www.hostingadvice.com/blog/comparing-node-js-vs-php-performance/)

Note : Go est un langage compilé développé par Google : https://fr.wikipedia.org/wiki/Go_(langage)

 

Performance

Temps en millisecondes

(Source : http://www.c-sharpcorner.com/UploadFile/2072a9/node-js-vs-traditional-scripting-languages/)

 

Le principe asynchrone

Cette rapidité d’exécution tient également au caractère asynchrone de Node.js. En effet, Node.js est basé sur un système d’événements non bloquants et de fonctions de rappel (callback en anglais). Autrement dit, Node.js n’attend pas d’avoir terminé une tâche pour en entamer une autre.

Exemple d’un processus simple :

  1. Télécharger un fichier
  2. Afficher ce fichier
  3. Faire autre chose

 

Node.js n’attendra pas la fin du point 1 pour passer au point 3 et mettra en oeuvre le point 2 quand le point 1 sera terminé. Le point 2 sera un callback du point 1.

De ce fait, Node.js est de plus en plus choisi pour gérer les problématiques de (quasi) temps réel (le chat de Facebook est par exemple partiellement en Node.js) et les applications accédant massivement et intensivement à une base de données.

Dernier point qui joue en la faveur de la rapidité : Node.js est léger et relativement bas niveau. C’est à dire qu’il se rapproche en quelque sorte du langage machine. Par exemple, Node.js a une gestion native du protocole http.

 

La communauté Node

Pour faciliter l’utilisation de Node.js, il existe le framework Express qui simplifie certaines tâches de bas niveau. Au delà de ce framework, il y a une communauté très active qui crée de nombreux modules pour répondre aux différents besoins des développeurs (https://www.npmjs.com/). L’accroissement de cette communauté, si elle permet une réelle richesse, flexibilité et extensibilité, a également été le centre de critiques envers Node.js : mises à jour trop rapides, manque de conventions, de tests, etc.

Néanmoins, ce défaut de « maturité » s’estompe bien entendu avec le temps. Pour preuve, de grandes marques comme Groupon, LinkedIn, Microsoft, Paypal ou encore Yahoo utilisent Node.js. (source wikipédia https://fr.wikipedia.org/wiki/Node.js)

 

Une technologie d’avenir

Au final, Node.js s’avère réellement intéressant. Il s’est installé (existe depuis 2009), s’améliore (à la date du 06 juillet 2015, la dernière version stable est de fin juin 2015), progresse (modules de plus en plus nombreux et structurés) et semble bien parti pour durer. Node.js est au minimum une technologie à surveiller de prêt, surtout qu’elle répond à des problématiques en expansion (temps réel et intensification des accès aux datas).

 

Liens utiles :

https://nodejs.org/

https://www.npmjs.com/

http://openclassrooms.com/courses/des-applications-ultra-rapides-avec-node-js

http://www.hostingadvice.com/blog/comparing-node-js-vs-php-performance/

http://www.c-sharpcorner.com/UploadFile/2072a9/node-js-vs-traditional-scripting-languages/

 

Découvrez d’autres articles sur le développement : Framework PHP et Json