Voyons ce qui est spécial à propos de JavaScript, ce qu’il nous permet de faire et avec quelles autres technologies il s’accorde bien.
Qu’est-ce que JavaScript ?
JavaScript a été initialement créé pour “rendre les pages web vivantes”.
Les programmes dans ce langage sont appelés scripts. Ils peuvent être écrits directement dans une page HTML et exécutés automatiquement au chargement des pages.
Les scripts sont fournis et exécutés en texte brut. Ils n’ont pas besoin d’une préparation spéciale ou d’une compilation pour fonctionner.
De par cet aspect, JavaScript est très différent d’un autre langage appelé Java.
Quand JavaScript a été créé, il portait initialement un autre nom : “LiveScript”. Mais à cette époque le langage Java était très populaire, il a donc été décidé que positionner un nouveau langage en tant que “petit frère” de Java pourrait aider.
Mais au fur et à mesure de son évolution, JavaScript est devenu un langage totalement indépendant, avec ses propres spécifications appelées ECMAScript, aujourd’hui il n’a aucun rapport avec Java.
Aujourd’hui, JavaScript peut s’exécuter non seulement dans le navigateur, mais également sur un serveur, ou encore sur n’importe quel appareil dans lequel existe un programme appelé le moteur JavaScript.
Le navigateur a un moteur intégré, parfois il peut être également appelé “la machine virtuelle JavaScript”.
Différents moteurs ont différents “nom de code”, par exemple :
- V8 – dans Chrome et Opera.
- SpiderMonkey – dans Firefox.
- … Il existe d’autres noms de code comme “Chakra” pour IE, “JavaScriptCore”, “Nitro” et “SquirrelFish” pour Safari etc.
Les termes ci-dessus sont bons à retenir, car ils sont utilisés dans les articles destinés aux développeurs sur Internet. Nous les utiliserons aussi. Par exemple, si “une fonctionnalité X est prise en charge par V8”, cela fonctionne probablement dans Chrome, Edge et Opera.
Les moteurs sont compliqués. Mais le fonctionnement de base est facile à comprendre.
- Le moteur (intégré si c’est un navigateur) lit (“analyse”) le script.
- Ensuite, il convertit (“compile”) le script en langage machine.
- Enfin le code machine s’exécute, très rapidement.
Le moteur applique des optimisations à chaque étape du processus. Il surveille même le script compilé en cours d’exécution, analyse les données qui le traversent et applique des optimisations au code machine en fonction de ces informations.
Que peut faire JavaScript dans le navigateur ?
Le JavaScript moderne est un langage de programmation “sûr”. Il ne fournit pas d’accès de bas niveau à la mémoire ou au processeur, parce qu’il a été initialement conçu pour les navigateurs qui n’en ont pas besoin.
Les fonctionnalités dépendent grandement de l’environnement qui exécute JavaScript. Par exemple, Node.js prend en charge les fonctions qui permettent à JavaScript de lire / écrire des fichiers arbitrairement, d’exécuter des requêtes réseau, etc.
JavaScript intégré au navigateur peut faire tout ce qui concerne la manipulation des pages Web, l’interaction avec l’utilisateur et le serveur Web.
Par exemple, JavaScript dans le navigateur est capable de :
- Ajouter un nouveau code HTML à la page, modifier le contenu existant, modifier les styles.
- Réagir aux actions de l’utilisateur, s’exécuter sur des clics de souris, des mouvements de pointeur, des appuis sur des touches.
- Envoyer des requêtes sur le réseau à des serveurs distants, télécharger et envoyer des fichiers (technologies AJAX et COMET).
- Obtenir et définir des cookies, poser des questions au visiteur, afficher des messages.
- Se souvenir des données du côté client (“stockage local”).
Qu’est-ce que JavaScript ne peut pas faire dans le navigateur ?
Les capacités de JavaScript dans le navigateur sont limitées pour la sécurité de l’utilisateur. L’objectif est d’empêcher une page Web malveillante d’accéder à des informations privées ou de nuire aux données de l’utilisateur.
Les exemples de telles restrictions sont :
-
JavaScript sur une page Web ne peut pas lire/écrire des fichiers arbitrairement sur le disque dur, les copier ou exécuter des programmes. Il n’a pas d’accès direct aux fonctions du système d’exploitation.
Les navigateurs modernes lui permettent de fonctionner avec des fichiers, mais l’accès est limité et n’est fourni que si l’utilisateur effectue certaines actions, comme «déposer» un fichier dans une fenêtre de navigateur ou le sélectionner via une balise
<input>.Il existe des moyens d’interagir avec une webcam/microphone et d’autres périphériques, mais ils nécessitent une autorisation explicite de l’utilisateur. Ainsi, une page contenant du JavaScript ne permet pas d’activer une caméra Web, d’observer l’environnement et d’envoyer les informations à la NSA.
-
Différents onglets / fenêtres ne se connaissent généralement pas. Parfois, ils se croisent, par exemple lorsqu’une fenêtre utilise JavaScript pour ouvrir l’autre. Mais même dans ce cas, le JavaScript d’une page ne peut pas accéder à l’autre si elle provient de sites différents (provenant d’un autre domaine, protocole ou port).
C’est ce qu’on appelle la “politique de même origine” (“Same Origin Policy”). Pour contourner cette sécurité, les deux pages doivent se mettre d’accord et contenir un code JavaScript spécial qui gère l’échange de données. Nous verrons cela plus loin dans ce tutoriel.
Cette limitation concerne également la sécurité de l’utilisateur. Une page de
http://autresite.comqu’un utilisateur a ouvert ne doit pas pouvoir accéder à un autre onglet du navigateur avec l’URLhttp://gmail.comet y voler des informations. -
JavaScript peut facilement communiquer sur le net avec le serveur d’où provient la page. Mais sa capacité à recevoir des données d’autres sites / domaines est paralysée. Bien que possible, il nécessite un accord explicite (exprimé dans les en-têtes HTTP) du côté distant. Encore une fois, ce sont des limites de sécurité.
De telles limites n’existent pas si JavaScript est utilisé en dehors du navigateur, par exemple sur un serveur. Les navigateurs modernes permettent également l’installation de plug-ins / extensions susceptibles d’obtenir des autorisations étendues.
Qu’est-ce qui rend JavaScript unique ?
Il y a au moins trois bonnes choses à propos de JavaScript :