Avant d'entrer directement dans le vif du sujet, ce chapitre va vous apprendre ce qu'est le JavaScript, ce qu'il permet de faire, quand il peut ou doit être utilisé et comment il a considérablement évolué depuis sa création en 1995.
Nous aborderons aussi plusieurs notions de bases telles que les définitions exactes de certains termes.
Citation : Définition
Le JavaScript est un langage de programmation de scripts orienté objet.
Dans cette description un peu barbare se trouvent plusieurs éléments que nous allons décortiquer.
Tout d'abord, un langage de programmation est un langage qui permet aux développeurs d'écrire du code source qui sera analysé par l'ordinateur.
Un développeur, ou un programmeur, est une personne qui développe des programmes. Ça peut être un professionnel (un ingénieur, un informaticien ou un analyste programmeur) ou bien un amateur.
Le code source est écrit par le développeur. C'est un ensemble d'actions, appelées instructions, qui vont permettre de donner des ordres à l'ordinateur afin de faire fonctionner le programme. Le code source est quelque chose de caché, un peu comme un moteur dans une voiture : le moteur est caché, mais il est bien là, et c'est lui qui fait en sorte que la voiture puisse être propulsée. Dans le cas d'un programme, c'est pareil, c'est le code source qui régit le fonctionnement du programme.
En fonction du code source, l'ordinateur exécute différentes actions,
comme ouvrir un menu, démarrer une application, effectuer une recherche, enfin bref, tout ce que l'ordinateur est
capable de faire. Il existe énormément de langages de programmation,
un bon nombre d'entre eux sont listés sur cette page.
Le JavaScript permet de programmer des scripts. Comme dit plus haut, un langage de programmation permet d'écrire du code source qui sera analysé par l'ordinateur. Il existe trois manières d'utiliser du code source :
Langage compilé : le code source est donné à un programme appelé compilateur qui va lire le code source et le convertir dans un langage que l'ordinateur sera capable d'interpréter : c'est le langage binaire, fait de 0 et de 1. Les langages comme le C ou le C++ sont des langages dits compilés.
Langage précompilé : ici, le code source est compilé partiellement, généralement dans un code plus simple à lire pour l'ordinateur, mais qui n'est pas encore du binaire. Ce code intermédiaire devra être lu par ce que l'on appelle une « machine virtuelle », qui exécutera ce code. Les langages comme le C# ou le Java sont dits précompilés.
Langage interprété : dans ce cas, il n'y a pas de compilation. Le code source reste tel quel, et si on veut exécuter ce code, on doit le fournir à un interpréteur qui se chargera de le lire et de réaliser les actions demandées. Éventuellement, pour obtenir de significatifs gains de performances, le code peut-être compilé à la volée pendant son exécution, c'est aujourd'hui ce que font la plupart des interpréteurs JavaScript.
Les scripts sont majoritairement interprétés. Et quand on dit que le JavaScript est un langage de scripts, cela signifie qu'il s'agit d'un langage interprété ! Il est donc nécessaire de posséder un interpréteur pour faire fonctionner du code JavaScript, et un interpréteur, vous en utilisez un fréquemment : il est inclus dans votre navigateur Web !
Chaque navigateur possède un interpréteur JavaScript, qui diffère selon le navigateur. Si vous utilisez Internet Explorer, son interpréteur JavaScript s'appelle Chakra (l'interpréteur des versions antérieures à IE9 s'appelle JScript), celui de Mozilla Firefox se nomme SpiderMonkey et celui de Google Chrome est V8.
Il reste un dernier fragment à analyser : orienté objet. Ce concept est assez compliqué à définir maintenant et sera approfondi par la suite notamment à la partie 2. Sachez toutefois qu'un langage de programmation orienté objet est un langage qui contient des éléments, appelés objets, et que ces différents objets possèdent des caractéristiques spécifiques ainsi que des manières différentes de les utiliser. Le langage fournit des objets de base comme des images, des dates, des chaînes de caractères… mais il est également possible de créer soi-même des objets pour se faciliter la vie et obtenir un code source plus clair (donc plus facile à lire) et une manière de programmer beaucoup plus intuitive (et donc plus logique).
Il est bien probable que vous n'ayez rien compris à ce passage si vous n'avez jamais fait de programmation, mais ne vous en faites pas : vous comprendrez bien assez vite comment tout cela fonctionne.
Le JavaScript est majoritairement utilisé sur Internet, conjointement avec les pages Web HTML. Le JavaScript s'inclut directement dans la page Web (ou dans un fichier externe) et permet de dynamiser une page HTML, en ajoutant des interactions avec l'utilisateur, des animations, de l'aide à la navigation, comme par exemple :
Afficher/masquer du texte ;
Faire défiler des images ;
Créer un diaporama avec un aperçu « en grand » des images ;
Créer des infobulles.
Le JavaScript est un langage dit client-side, c'est-à-dire que les scripts sont exécutés par le navigateur chez l'internaute (le client). Cela diffère des langages de scripts dits server-side qui sont exécutés par le serveur Web. C'est le cas des langages comme le PHP .
C'est important, car la finalité des scripts client-side et server-side n'est pas la même. Un script server-side va s'occuper de « créer » la page Web qui sera envoyée au navigateur. Ce dernier va alors afficher la page puis exécuter les scripts client-side tel que le JavaScript. Voici un schéma reprenant ce fonctionnement :
Si le JavaScript a été conçu pour être utilisé conjointement avec le HTML, le langage a depuis évolué vers d'autres destinées. Le JavaScript est régulièrement utilisé pour réaliser des extensions pour différents programmes, Chrome et Firefox possèdent tous deux un panel gigantesque d'extensions en partie codées en JavaScript.
Mais là où le JavaScript a su grandement évoluer ces dernières années c'est dans la possibilité d'être exécuté sur n'importe quelle machine. Quelques projets permettent d'utiliser le JavaScript en dehors de votre navigateur, le projet le plus connu est sans nul doute Node.js .
Le JavaScript peut aussi être utilisé pour réaliser des applications, l'interface de Firefox est notamment développée avec ce langage mais cela reste une implémentation bien particulière à la société Mozilla. Cependant, il vous est tout à fait possible aujourd'hui de créer une application en JavaScript grâce à Node.js et si vous souhaitez y ajouter une interface, d'autres projets venant se greffer à Node vous faciliteront la tâche, tel qu' Electron ou NW.js .
En 1995, Brendan Eich travaillait chez Netscape Communication Corporation, la société qui éditait le célèbre navigateur Netscape Navigator, alors principal concurrent d'Internet Explorer.
Brendan développe le LiveScript, un langage de script qui s'inspire du langage Java, et qui est destiné à être installé sur les serveurs développés par Netscape. Netscape se met à développer une version client du LiveScript, qui sera renommée JavaScript en hommage au langage Java créé par la société Sun Microsystems. En effet, à cette époque, le langage Java était de plus en plus populaire, et appeler le LiveScript JavaScript était une manière de faire de la publicité à la fois au Java et au JavaScript lui-même. Mais attention, au final, ces deux langages sont radicalement différents ! N'allez pas confondre le Java et le JavaScript car ces deux langages n'ont clairement pas le même fonctionnement.
Le JavaScript sort en décembre 1995 et est embarqué dans le navigateur Netscape 2. Le langage est alors un succès, si bien que Microsoft développe une version semblable, appelée JScript, qu'il embarque dans Internet Explorer 3, en 1996.
Netscape décide d'envoyer sa version de JavaScript à l'ECMA International (European Computer Manufacturers Association à l'époque, aujourd'hui European association for standardizing information and communication systems) pour que le langage soit standardisé, c'est-à-dire pour qu'une référence du langage soit créée et que le langage puisse ainsi être utilisé par d'autres personnes et embarqué dans d'autres logiciels. L'ECMA International standardise le langage sous le nom d' ECMAScript .
Depuis, les versions de l'ECMAScript ont évolué. La version la plus connue et mondialement utilisée est la version ECMAScript 5, parue en décembre 2009.
L'ECMAScript est la référence de base. De cette référence découlent des implémentations. On peut évidemment citer le JavaScript, qui est implémenté dans la plupart des navigateurs, mais aussi :
JScript , qui est l'implémentation embarquée dans Internet Explorer. C'est aussi le nom de l’ancien interpréteur d'Internet Explorer ;
JScript.NET, qui est embarqué dans le framework .NET de Microsoft ;
ActionScript , qui est l'implémentation faite par Adobe au sein de Flash ;
E4X , qui est l'implémentation de la gestion du XML d'ECMAScript au sein de SpiderMonkey, l'interpréteur JavaScript de Firefox.
La plupart de ces implémentations sont quelques peu tombées en désuétude et seul reste le JavaScript qui a su se frayer une place de choix.
Les versions du JavaScript sont basées sur celles de l'ECMAScript (que nous abrégeons ES ci-dessous). Ainsi, il existe :
ES 1 et ES 2, qui sont les prémices du langage JavaScript ;
ES 3 (sorti en décembre 1999) ;
ES 4, qui a été abandonné en raison de modifications trop importantes qui ne furent pas appréciées ;
ES 5 (sorti en décembre 2009), la version la plus répandue et utilisée à ce jour ;
ES 6, finalisé en décembre 2014 et dont l'implémentation avait déjà été commencée avant cette date au sein de plusieurs navigateurs.
Ce cours portera sur la version 5 de l'ECMAScript, la version 6 n'étant pas encore très bien supportée à l'heure où nous écrivons ces lignes.
Il n'y a pas de logo officiel pour représenter le JavaScript. Cependant, le logo suivant est beaucoup utilisé par la communauté, surtout depuis sa présentation à la JSConf EU de 2011. Vous pourrez le trouver à cette adresse sous différents formats, n'hésitez pas à en abuser en cas de besoin.
Le JavaScript est un langage de programmation interprété, c'est-à-dire qu'il a besoin d'un interpréteur pour pouvoir être exécuté.
Le JavaScript est utilisé majoritairement au sein des pages Web mais son utilisation en guise de serveur ou d'application commence à se répandre.
Tout comme le HTML, le JavaScript est généralement exécuté par le navigateur de l'internaute : on parle d'un comportement client-side, par opposition au server-side lorsque le code est exécuté par le serveur.
Le JavaScript est standardisé par l'ECMA International sous le nom d'ECMAScript qui constitue la référence du langage.
La dernière version standardisée du JavaScript est basée sur l'ECMAScript 5, sorti en 2009. Mais sa nouvelle version, ECMAScript 6, prend du terrain.