Cet article est destiné à faire le
point sur Node.js avec un certain recul vis à vis des réactions
positives ou négatives engendrées par ce phénomène.
Node.js : c'est quoi ?
Node est une machine virtuelle capable
d'exécuter des programmes javascript.
Node.js désigne l 'environnement (la galaxie) de Node (sans l'extension .js). Node est un programme
(exécutable) écrit en C++ et compilé. Node n'est pas en
javascript. Node est un programme qui va recevoir en entrée des
fichiers sources de javascript, il va interpréter (traduire) en
langage machine les instructions javascript et va les exécuter.
Node est donc un interpréteur de
javascript. Il joue le même rôle que la JVM pour les projets
java (Machine Virtuelle Java) mais pour le javascript !
Le résultat de la commande file sur le fichier node |
Pourquoi le terme de machine virtuelle ?
Tout d'abord définissons le notion de
portabilité
La portabilité d'un programme qualifie
le niveau d'indépendance d'un programme vis à vis de la machine
physique (système) qui l'accueille. Ainsi un programme dit
'portable' fonctionnera sur des systèmes différents, en l'état,
sans changement de code majeur.
Pour assurer la portabilité d'un
programme (javascript, java ou autre ) il est possible d'avoir deux
approches :
La compilation adaptée.
La première approche consiste à
recompiler les sources du programme en fonction des systèmes
cibles : c'est le dispositif adopté pour les programmes en C ou
C++. La contrainte forte est de pouvoir disposer des codes sources du
programme et d'un compilateur. Cette solution n'est pas satisfaisante pour les langages interprétés.
L'utilisation d'un composant intermédiaire : la machine virtuelle.
La deuxième méthode consiste
utiliser un composant qui va servir de médiateur entre le code (les
instructions du programmes) et le système d'accueil : c'est le
rôle de l’interpréteur appelé dans ce cas 'machine virtuelle'.
Ainsi , il y aura une machine virtuelle adaptée à chaque
environnement. Ces machines virtuelles prennent en charge l’interprétation des instructions d'un programme et leurs traductions
adaptées au système de la machine physique hôte. Ces machines
virtuelles masquent les disparités des environnements d'accueil.
Elles prennent à leur charge la gestion des écarts de comportement,
de matériel , d'appel de fonction système etc..
Remarque : Une machine
virtuelle est couramment 'fabriquée' à partir de la méthode 1
(compilation adaptée) d'un projet 'modèle'.
Ainsi le programme Node va lire des
fichiers qui contiennent des instructions 'javascript' et exécutera chaque instruction javascript en les traduisant par des instructions
machines et des appels de fonction.
Il existe des machines virtuelles Node
pour les systèmes les plus usités : Microsoft, Ubuntu , MacOS
etc.
La liste de architectures supportées par Node |
Un programme javascript s'exécutera et se comportera de la même façon sur tous ces environnements: le javascript est donc portable.
Le javascript est le seul langage de
programmation normalisé (standard ECMA-262) à pourvoir s’exécuter nativement dans un
navigateur. Avec Node.js , il s’exécute à présent sur le serveur
ou d'une manière générale en dehors du navigateur.
La suite à venir: mettre un V8 dans ses programmes, la licence Node.js etc..
Question bonus: Pourquoi les programmes java passent par une phase de pré-compilation (bytecode) ?
Aucun commentaire:
Enregistrer un commentaire