Node.js est une plateforme de développement open source qui permet d'exécuter du code JavaScript côté serveur. Grâce à cette plateforme, les développeurs peuvent écrire des applications de réseau très performantes. Une des caractéristiques de Node.js, et ce qui la distingue de la plupart des autres environnements de programmation, est sa nature asynchrone, non bloquante et mono-thread.
La programmation asynchrone signifie que le moteur Node.js ne reste pas inactif lorsque des opérations d'entrée/sortie (E/S) lentes sont effectuées, comme une lecture de fichier ou une demande de base de données. Au lieu de cela, il continue à exécuter le reste du code et revient à l'opération d'E/S une fois celle-ci terminée. Cela permet une utilisation efficace du temps et des ressources du système, rendant les applications basées sur Node.js très rapides.
Node.js est non bloquant car il n'empêche pas l'exécution de certaines parties du code à cause d'autres opérations qui peuvent prendre beaucoup de temps à s'exécuter. Par exemple, si une instruction de code nécessite une extraction de données de la base de données, Node.js ne bloque pas le reste du code pour attendre que l'extraction soit terminée. Au lieu de cela, cette instruction est mise en attente et le reste du code continue à s'exécuter.
Alors que la plupart des environnements de programmation utilisent plusieurs threads pour gérer plusieurs requêtes simultanément, Node.js, en revanche, utilise un seul thread. C'est grâce à son architecture asynchrone et non bloquante qu'il est capable de gérer plusieurs requêtes sur un seul thread.
Cela n'est possible que parce que Node.js, contrairement à d'autres langages de programmation orientés threads multiples comme Java, n'alloue pas un thread pour chaque requête entrante. Au lieu de cela, une seule instance de l'application Node.js s'exécute dans un thread unique, et cette instance peut servir plusieurs requêtes simultanées.
La nature asynchrone, non bloquante et mono-thread de Node.js est ce qui le rend si performant et adaptable. Cela permet à Node.js de gérer un grand nombre de connexions simultanées avec une petite empreinte mémoire.
En résumé, Node.js est une plateforme de développement efficace et performante pour les applications Web en temps réel, les API RESTful, les outils en ligne de commande et bien plus encore, toutes tirant parti de sa nature asynchrone, non bloquante et mono-thread.