QUELLE EST LA PLACE DE JAVASCRIPT DANS LE WEB MOBILE Année académique 2015-2016 Travail de synthèse réalisé dans le cadre du cours de conception multimédia STIC-B430, donné sous la direction du professeur Cohen Atika Capron Alexandre Université Libre de Bruxelles I. Introduction Créé en 1995 par Netscape Communication Corporation, JavaScript est un langage orienté objet principalement utilisé dans les pages HTML afin de dynamiser celles-ci. Ce standard de l’ECMA est très vite devenu incontournable dans l’univers du World Wide Web. Adopté par les web master du monde entier, JavaScript est aujourd’hui un langage essentiel à la compréhension des enjeux du web actuel. J’ai choisi de faire ma synthèse sur JavaScript pour mieux comprendre les enjeux gravitants autour de l’adaptation de ce standard du web aux technologies mobiles. Cette synthèse me servira à mieux comprendre le contexte du web mobile, qui est un point essentiel de mon mémoire sur les initiatives markup à destination du contenu de presse. C’est donc avec cet objectif en tête que nous tenterons de dégager une brève histoire de JavaScript, son fonctionnement rudimentaire dans une page web, son adaptation au web mobile ainsi que les différentes solutions applicatives le concernant. II. JavaScript 1. Introduction à JavaScript JavaScript est un langage de script créé en 1995 par Netscape Communication Corporation. C’est un langage orienté objet principalement utilisé dans les pages HTML afin de dynamiser une page web, en y ajoutant des interactions avec l'utilisateur, des animations, de l'aide à la navigation, etc… Historiquement il s'agit du premier langage de script pour le Web1. Ce standard est un langage de programmation qui permet d'apporter des améliorations à HTML en permettant d'exécuter des commandes du côté client, c'est-à-dire au niveau du navigateur et non du serveur web. Dès 1 JavaScript, Ressource Online, visité le 29/03/2016, in : https://fr.wikipedia.org/wiki/JavaScript 1 lors, JavaScript est fortement dépendant du navigateur appelant la page web dans laquelle le script est incorporé2. JavaScript est également un standard ECMA Script. En effet, ECMA Script est un langage de script côté client, mais sert également de standard dont les spécifications sont respectées par les autres langages de script. 2. Historique JavaScript fut créé (en 10 jours) en mai 1995 par Brendan Eich, alors employé chez Netscape Communication Corporation. D’abord connu sous le nom « Mocha », ce nouveau standard du web fut renommé « Livescript » en septembre 1995 puis « JavaScript » en décembre de la même année afin de profiter de la popularité montante du langage Java3. En 1996-1997 Netscape soumet JavaScript à ECMA International pour standardisation avec l’objectif de pousser les navigateurs à l’implémenter sur la base du travail effectué par Netscape. Le travail accompli au cours de ce laps de temps conduisit finalement à la sortie officielle du standard : « ECMA-262 éd.1 ». Le processus de normalisation continua avec les versions ECMAScript 2 en 1998 et ECMAScript 3 en 1999. Le « JS2 » ou « original ES4 » travaux dirigés par Waldemar Horwat débutèrent en 20004. Peu de temps après, les sorties d’Internet Explorer 4 et de Netscape Navigator 4 portérent un coup important à cette standardisation en introduisant de nouvelles incompatibilités au niveau du langage lui-même, mais aussi et surtout en utilisant des modèles de document totalement divergents5. 2 Cohen Atika, Module JavaScript, Cours universitaire de conception multimédia, Ressource Online, visité en 2016, in : https://uv.ulb.ac.be/login2/index.php 3 A short History of JavaScript, Ressource Online, visité le 03/04/2016, in : https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript 4 Ibid. 5 Bertrand JAN, JavaScript, histoire et écosystème, Ressource Online, visité le 03/04/2016, in : http://blog.alterway.fr/2016/02/javascript-histoire-et-ecosysteme/ 2 Cette « guerre des navigateurs » fut l’un des principaux freins à l’utilisation de JavaScript et favorisa également le déploiement de solutions propriétaires tels que Flash de Macromedia ou Adobe. Les développeurs web délaissèrent petit à petit, le support des navigateurs minoritaires (Opera) ou en perte de vitesse (Netscape Navigator), au profit de la syntaxe du navigateur dominant : Internet Explorer. Les problèmes de compatibilité portant beaucoup plus sur l’accès aux éléments du document que sur le support du langage lui-même, le W3C entreprit de standardiser cet accès en développant les spécifications DOM (Document Object Model) et similaires comme CSSOM (CSS Object Model) ou SVGDOM. Néanmoins ces standardisations sont longtemps restées « théoriques » en raison de la domination d’Internet Explorer 6, dans lequel l’implémentation de ces standards était incomplète, provoquant de nombreux bugs6. L’apparition d’un nouveau navigateur, « Firefox » de la Fondation Mozilla (version 1.0 en 2004), entraîna un changement de situation : une alternative à Internet Explorer fut disponible et le support des standards devient un sujet central pour le web. Le développement JavaScript s’améliora avec l’apparition de Framework destinés à gérer de façon transparente (pour le développeur), les incompatibilités et les bugs des différents navigateurs (JQuery par exemple)7. Ces Framework offrirent également un grand nombre d’effets graphiques et d’animations auparavant réservés à Flash et jouèrent un rôle moteur dans le « retour vers JavaScript ». La situation s’accélérera avec l’apparition d’un autre navigateur : « Chrome » de Google (version 1.0 en 2008) fondé sur le projet open source Chromium et utilisant le moteur JavaScript V8. Le cycle de développement rapide de ce navigateur ainsi que les objectifs de Google modifièrent, à nouveau, le développement des standards du web. La course aux performances des navigateurs devint l’un des aspects principaux de leur développement. L’amélioration des performances des moteurs JavaScript intégrés aux navigateurs conduisit à des développements impensables auparavant comme les jeux 2D ou 3D en temps réel8. 6 A short History of JavaScript, Ressource Online, visité le 03/04/2016, in : https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript 7 Bertrand JAN, JavaScript, histoire et écosystème, Ressource Online, visité le 03/04/2016, in : http://blog.alterway.fr/2016/02/javascript-histoire-et-ecosysteme/ 8 Ibid. 3 En 2009, fut mis en place ECMAScript 3.1, renommez ECMAScript 5. Les nouveaux développements de HTML5, et des très nombreuses API qui l’accompagnèrent, donnèrent aux navigateurs la possibilité de dialoguer avec l’ensemble des fonctionnalités du système : appareil photo, luminosité ambiante, état de la batterie, géolocalisation, le Responsive Web Design, etc… On passa donc de scripts simples à de véritables applications rivalisant avec les applications natives. La dernière amélioration du JavaScript et non des moindres est la publication dans sa forme achevée de la spécification ES6 ou ES2015 qui apporte de nouvelles constructions améliorant le développement avec ce langage9. 3. Fonctionnement JavaScript JavaScript est un langage pouvant être utilisé côté navigateur comme côté serveur (PHP, etc.). Mais dans le cadre de l’explication technique du fonctionnement de JavaScript, nous nous limiterons au JavaScript dans le navigateur. Le propre de JavaScript est de manipuler de façon simple des objets, au sens informatique du terme, fournis par une application hôte. Voici l'exemple classique du « Hello world » en JavaScript, lorsque l'application hôte est un navigateur Web. alert("Coucou le monde"); Dans l'application hôte, alert est une méthode de la classe DOM window, mais celle-ci étant récurrente, c'est une des seules classes dont on ne doit pas nécessairement préciser le nom pour utiliser ses méthodes. 9 JavaScript, Ressource Online, visité le 29/03/2016, in : https://fr.wikipedia.org/wiki/JavaScript 4 JavaScript est un langage case sensitive (contrairement à HTML), c'est-à-dire qu'il fait une différence entre un nom de variable (ou mot réservé) contenant ou non des majuscules. Ainsi, la fonction bonjour (); n'est pas la même fonction que Bonjour () ; . Enfin, comme en langage C, chaque instruction se termine par un point-virgule (;)10. En parallèle, lors de la rédaction du code JavaScript, il faut être attentif aux guillemets et à l'orthographe des mots-clés. Comme tout langage de programmation, JavaScript comporte un certain nombre de mots réservés, mots variables. (Exemple : alert, function, etc…). Il existe également plusieurs caractères particuliers permettant de manipuler l’affichage d’une chaîne de caractères. Le plus connu et le plus utilisé est le " saut de ligne ", mais il en existe d’autres. Tous sont précédés du symbole " \ " appelé " escaping caracter " parce qu’il indique au moteur JavaScript de ne pas interpréter le caractère qui suit comme un caractère mais comme un caractère spécial11. 10 JavaScript, Ressource Online, visité le 29/03/2016, in : https://fr.wikipedia.org/wiki/JavaScript Javascript - Introduction au langage Javascript, Ressource Online, visité le 01/04/2016, in : http://www.commentcamarche.net/contents/577-javascript-introduction-au-langage-javascript 11 5 alert("Coucou le monde\r je test le caractère retour à la ligne"); Lise des caractères spéciaux12 \b touche de suppression \f saut de ligne d'impression \n retour à la ligne \r appui sur la touche Enter (retour chariot) \t tabulation \" guillemets doubles \' guillemets simples \\ caractère antislash Comme on peut le voir, JavaScript permet de dynamiser une page HTML en y ajoutant des interactions avec l'utilisateur. Mais aussi en ajoutant des animations, de l'aide à la navigation, comme afficher ou masquer du texte, faire défiler des images, créer des infobulles, afficher des messages d'alerte, afficher un menu déroulant, créer « un retour en haut de page » dynamique, créer un menu qui suit la navigation, etc… Il existe plusieurs façons d'incorporer du JavaScript dans une page Web: 1. à l'aide à la balise <SCRIPT> ; 2. en mettant le code dans un fichier ; 3. à l'aide des événements. 12 Cohen Atika, Module JavaScript, Cours universitaire de conception multimédia, Ressource Online, visité en 2016, in : https://uv.ulb.ac.be/login2/index.php 6 3.1. Les balises <Script> Un script est une portion de code qui vient s'insérer dans une page HTML. Le code du script n'est toutefois pas visible dans la fenêtre du navigateur, car il est compris entre des balises (ou tags) spécifiques qui signalent au navigateur qu'il s'agit d'un script écrit en langage JavaScript. Les balises annonçant un code JavaScripts sont les suivantes : <script> Placez ici le code de votre script </script> 3.1.1 Utilisation d’un fichier externe13 Il est possible, et même conseillé, d'écrire le code JavaScript dans un fichier externe, portant l'extension .js. Ce fichier est ensuite appelé depuis la page Web au moyen de l'élément <script> et de son attribut src qui contient l'URL du fichier .js. Par exemple : <body> <script src="mon_code.js"></script> </body> Le fichier mon_code.js est à déposer dans le même répertoire que les pages HTML, sinon, il faut préciser le chemin, ou l'adresse URL où se trouve le fichier. On peut aussi faire un lien vers un fichier déposé sur un serveur : <SCRIPT language = JavaScript SRC = http://.../scripts/filename.js > </SCRIPT> 13 Cohen Atika, Module JavaScript, Cours universitaire de conception multimédia, Ressource Online, visité en 2016, in : https://uv.ulb.ac.be/login2/index.php 7 Il vaut mieux privilégier un fichier externe plutôt que d'inclure le code JavaScript directement dans la page. Cela évite de le recharger à chaque chargement de la page, puisque le fichier externe est mis en cache par le navigateur, ce qui accélère l'affichage de la page. 3.1.2 JavaScripts à partir d’un évènement : Grâce au JavaScript, il est possible d'associer des fonctions, des méthodes et des événements. Les événements JavaScript sont à placer dans le corps de la page comme attribut d'une commande HTML. 3.2 Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En JavaScript, les noms de variables peuvent être aussi longs que l'on désire, mais doivent répondre à certains critères14 : un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_". un nom de variable peut comporter des lettres, des espaces, des chiffres, des caractères _ et &. Attention un nom de variable ne peut pas être le même que le nom d’un mot réservé ! La déclaration de ces variables peut se faire de deux façons différentes. Soit de façon explicite, en faisant précéder la variable du mot-clé var : Var chaine= "bonjour" Soit de façon implicite, en laissant le navigateur déterminer qu'il s'agit d'une déclaration de variable. 14 Javascript - Introduction au langage Javascript, Ressource Online, visité le 01/04/2016, in : http://www.commentcamarche.net/contents/577-javascript-introduction-au-langage-javascript 8 Pour déclarer implicitement une variable, il suffit d'écrire le nom de la variable suivie du caractère = et de la valeur à affecter : Chaine = "bonjour" Contrairement à la plupart des langages de programmation où il faut préciser quel type de contenu la variable va devoir contenir, les variables dans JavaScript, sont typées dynamiquement, ce qui veut dire que l'on peut y mettre du texte en premier lieu puis l'effacer et y mettre un nombre. En fait, JavaScript autorise la manipulation de seulement 4 types de données : des nombres (entiers ou à virgules), des chaînes de caractères (string) et des booléens. 3.2.1 Portée des variables : JavaScript a deux types de portés : globale et locale. Si une variable est définie en dehors d'une définition de fonction, il s'agit d'une variable globale et sa valeur est accessible et modifiable dans tout le programme. En revanche, si une variable est déclarée au sein d'une définition de fonction, il s'agit d'une variable locale. Elle est créée et détruite chaque fois que la fonction est exécutée ; en dehors de cette fonction, aucun code ne peut y accéder. Une variable locale peut posséder le même nom qu'une variable globale, mais elle est entièrement dissociée de celle-ci. La modification de la valeur d'une variable n'a aucun effet sur l'autre variable. Seule la version locale est significative au sein de la fonction dans laquelle elle est déclarée. 3.2.2 Exemple : <script type="text/javascript"> <!-var a = 12; var b = 4; function MultipliePar2(b) { var a = b * 2; return a; } 9 document.write("Le double de ",b," est ",MultipliePar2(b)); document.write("La valeur de a est ",a); </script> Dans l'exemple ci-dessus, la variable a est déclarée explicitement en début de script, ainsi que dans la fonction. Voici ce qu'affiche ce script : Le double de 4 est 8 La valeur de a est 12 3.3 La notion de fonction Une fonction est un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cela permet une simplicité du code et une taille de programme réduite. D'autre part, une fonction peut faire appel à ellemême, on parle alors de fonction récursive15. JavaScript contient des fonctions prédéfinies qui peuvent s'appliquer pour un ou plusieurs types d'objets spécifiques, on appelle ces fonctions des méthodes. Avant d'être utilisée, une fonction doit être définie. La définition d'une fonction s'appelle "déclaration". La déclaration d'une fonction se fait grâce au mot-clé function : function Nom_De_La_Fonction(argument1, argument2, ...) { liste d'instructions } Pour exécuter une fonction, il suffit de faire appel à elle en écrivant : Nom_De_La_Fonction(); 15 JavaScript, Ressource Online, visité le 29/03/2016, in : https://fr.wikipedia.org/wiki/JavaScript 10 3.3.1 Les méthodes : Une méthode est une fonction associée à un objet. Les méthodes des objets du navigateur sont des fonctions définies à l'avance par les normes HTML, on ne peut donc pas les modifier, il est toutefois possible de créer une méthode personnelle pour un objet personnalisé. Prenons par exemple une page HTML, elle est composée de l’objet appelé document. Ce dernier a par exemple la méthode write() qui lui est associée et qui permet de modifier le contenu de la page en y affichant du texte. Dans le cas de la méthode write(), l'appel se fait comme suit16 : window.document.write() Pour reprendre cet exemple, la méthode write() de l'objet document permet de modifier de façon dynamique le contenu de la page en HTML : window.document.write(expression1, expression2, ...) Cette méthode permet d'écrire le résultat des expressions passées en paramètre dans le document dans lequel elle est utilisée. 3.3.2 Les évènements : Les événements ont été créés pour ajouter de l'interactivité entre un visiteur et une page Web. Ces événements se retrouvent toujours dans une balise HTML. A ces événements, on associe l'appel d'une fonction JavaScript, par exemple, la fonction Main (). 3.4 La notion de condition : On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. De nombreux opérateurs existent pour tester des conditions et ils peuvent être combinés entre eux, mais les plus connus sont les instructions if, if... else, les boucle for (conditionnelle) ou encore les boucles while. 16 Javascript - Introduction au langage Javascript, Ressource Online, visité le 01/04/2016, in : http://www.commentcamarche.net/contents/577-javascript-introduction-au-langage-javascript 11 3.5 Notion d'objet JavaScript traite les éléments qui s'affichent dans le navigateur comme des objets classés selon une hiérarchie pour pouvoir les désigner précisément auxquels des propriétés sont associées. 3.5.1 Les objets du navigateur JavaScript divise la page du navigateur en objets, pour permettre d'accéder à n'importe lequel d'entre eux et pouvoir les manipuler par l'intermédiaire de leurs propriétés. On commence généralement par l'objet le plus grand (celui contenant tous les autres) puis on descend dans la hiérarchie jusqu'à arriver à l'objet voulu. L'objet le plus grand est l'objet fenêtre (les objets en JavaScript ont leur dénomination en anglais, donc dans le cas présent window). Dans la fenêtre s'affiche une page, c'est l'objet document. Cette page peut contenir plusieurs objets, comme des formulaires, des images, etc. Pour accéder à un objet, il est donc nécessaire de parcourir l'arborescence en partant de l'objet le plus grand (l'objet window) vers l'objet à atteindre17. 3.5.2 Les objets du noyau18 : JavaScript fournit en standard un certain nombre d'objets proposant des propriétés et des méthodes permettant d'effectuer simplement un grand nombre de manipulations. Ces objets sont appelés objets du noyau JavaScript, car ils ont été standardisés par l'ECMA (European Computer Manufacturer Association) et constituent la base du langage JavaScript. 17 Javascript - Introduction au langage Javascript, Ressource Online, visité le 01/04/2016, in : http://www.commentcamarche.net/contents/577-javascript-introduction-au-langage-javascript 18 Ibid. 12 Nom de Description l'objet Array L'objet Array permet de créer des tableaux. Il possède de nombreuses méthodes permettant d'ajouter, de supprimer ou d'extraire des éléments d'un tableau ainsi que de les trier. Boolean L'objet Boolean permet de créer des valeurs booléennes, c'est-à-dire des éléments possédants deux états : vrai et faux. Date L'objet Date permet de créer des dates et des durées. Il propose des méthodes permettant de les manipuler. Function L'objet Function permet de définir des fonctions personnalisées. Math L'objet Math permet de manipuler des fonctions mathématiques, par exemple, les fonctions trigonométriques. Number L'objet Number est un objet permettant de faire des opérations de base sur les nombres. RegExp L'objet RegExp permet de créer des expressions régulières, c'est-à-dire des éléments permettant de faire des opérations avancées sur les chaînes de caractères. String L'objet String propose une grande variété de méthodes permettant de manipuler des chaînes de caractères. 3.6 Notion de bibliothèque Une bibliothèque est un ensemble cohérent de fonctions permettant de s'affranchir des tâches répétitives. Il s'agit ici d'un simple fichier JavaScript à inclure (grâce à la balise <script>) dans le code HTML avant d'utiliser l'un des éléments de cette bibliothèque. 13 JQuery est un exemple de bibliothèque JavaScript conçue pour simplifier l'écriture de codes JavaScript et AJAX. Créée en 2006 par John Resig, cette bibliothèque est la plus célèbre et la plus utilisée à ce jour19. La bibliothèque jQuery est constituée d'un ensemble de blocs de code autonomes appelés méthodes. III. JavaScript et le web mobile 1. Contexte web mobile « Fin 2009, les chiffres de l’Union Internationale des Télécommunications (UTT) montraient que plus de 4,6 milliards de « comptes » mobiles étaient actifs dans le monde. Plus de 50 % de la population mondiale est aujourd’hui connectée depuis un smartphone ou une tablette »20. Les terminaux mobiles d’accès à Internet sont non seulement devenus en moins de vingt ans les premiers médias numériques, mais leur croissance devient exponentielle sous l’effet de leur adoption massive par les pays émergents. Cette explosion de l'usage des appareils mobiles est un important facteur de transformation des interactions entre utilisateurs et fournisseurs de contenu qui rend indispensable la présence de ces contenus sous un format adapté aux associées à l'expérience d’un utilisateur mobile. 19 Cohen Atika, Module JavaScript, Cours universitaire de conception multimédia, Ressource Online, visité en 2016, in : https://uv.ulb.ac.be/login2/index.php 20 Poty Pascal, « Portable : mode d’emploi », Les Cahiers Dynamiques, 2010/2, no 47, pp 32-34. 14 C’est le développement de ces différents terminaux mobiles d’accès à Internet qui a été le facteur clé du décollage du web mobile, dont les deux usages principaux sont l’utilisation de sites mobiles dédiés qui sont le plus souvent de simple adaptation d’un site Internet préexistant. Et les applications qui rencontrent un franc succès auprès des possesseurs de smartphones et tablettes. 1.1 Les applications mobiles : Les principaux avantages d’une application sont : un format adapté au mobile, une plus grande facilité d’utilisation pour le grand public, un mode d’accès sans URL, un fonctionnement en mode hors ligne, des fonctions plus avancées et enfin la possibilité de monétiser une application. Cependant, deux problèmes se posent à l’utilisation d’application par une entreprise ou un particulier. Tout d’abord, le temps de développement d’une application mobile standard est d’environ 2 mois. Il faut aussi noter que les applications sont souvent de type « propriétaire » et sont seulement disponibles dans un seul « Application Store ». De ce fait, les applications mobiles possèdent une visibilité relative. Ensuite, le développement d’une application varie 15 d’un système d’exploitation à un autre se privant dès lors d’une partie du public visé ou augmentant significativement les coûts de production21. 1.2 Les sites adaptés au web mobile : Les principaux atouts du site mobile se traduisent dans le fait qu’un seul développement soit nécessaire, et que celui-ci puisse être déployé immédiatement sur toutes les plates-formes. Un site mobile permet également une indépendance financière vis-vis des « Application Store », et une pérennité des données, tout en assurant une transparence des mises à jour et une promotion du web. En conclusion, la question pour une entreprise ou un webmaster n’est plus « dois-je être présent sur l’Internet mobile ? » mais « comment dois-je y être présent ? ». Un site mobile est plus rapide et moins coûteux à mettre en place et une application est plus complexe dans sa mise en œuvre et sa maintenance. Mais les possibilités d’une application mobile sont souvent plus larges que celles d’un site web. 2. JavaScript et application Cette partie de la synthèse va se focaliser sur les différents types d’applications et de développements possibles pour les plates-formes mobiles. 2.1 Le développement natif Une application native est une application développée spécifiquement pour une et une seule plate-forme, grâce aux outils spécifiquement conçus pour celle-ci. Cette solution consiste à développer avec les outils/langages propres à chaque système d'exploitation22. 21 Lecocq Claire et al, « Technologies de la mobilité », Documentaliste-Sciences de l'Information, (Vol. 49) ,2012/3, no 3, pp 26-30. 22 Harrel Willam, « Développement web mobile avec HTML, CSS et JavaScript », EDI8, 2013, 448pp. 16 Par exemple : 1. Objective C avec l'IDE XCode pour iOS. 2. Java avec Eclipse pour Android. 3. C# avec Visual Studio pour Windows Phone. L'avantage de cette méthode se trouve dans le fait de pouvoir bénéficier des éléments propres à chaque système d'exploitation pour un développement plus rapide et plus propre En revanche si l’on souhaite avoir une application qui fonctionne sur Android et iOS, cela devient vite problématique car ce sont 2 plates-formes différentes , qui utilisent donc, 2 codes complètement différents. Dès lors, le temps de développement est multiplié et les mises à jour sont plus complexes à effectuer (vu qu'il faut reporter la modification entre les plates-formes). Le prix d'un développement natif monte dès lors en flèche. 2.2 Le développement hybride Une application hybride est une application utilisant le navigateur web intégré du support (Smartphone ou tablette) et les technologies Web (HTML, CSS et JavaScript) pour fonctionner sur différents OS (iOS, Android, Windows Phone, etc.). Une telle application utilise les fonctionnalités natives des Smartphones et peut être distribuée sur les plates-formes d’applications telles que l'AppStore, le Google Play, etc23. Pour créer des applications hybrides, il faut donc passer par un Framework. Un Framework est un ensemble cohérent de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel, d’une application. En bref, Un Framework est conçu en vue d'aider les programmeurs dans leur travail. On trouve différents types de Framework24 : 1. Framework d'infrastructure système : pour développer des systèmes d'exploitation, des interfaces graphiques, des outils de communication. 2. Framework d'intégration multiplateforme : pour fédérer des applications hétérogènes. Pour mettre à disposition différentes technologies sous la forme d'une interface unique. 23 Harrel Willam, « Développement web mobile avec HTML, CSS et JavaScript », EDI8, 2013, 448pp. Multi-channel_app_development, Ressource Online, visité le 10/04/2016, https://en.wikipedia.org/wiki/Multi-channel_app_development 24 17 in: 3. Framework d'entreprise : pour développer des applications spécifiques au secteur d'activité de l'entreprise. 4. Framework de gestion de contenu : sont les fondations d'un système de gestion de contenu pour la création, la collecte, le classement, le stockage et la publication de « biens numérisés ». Voici quelques exemples de Framework : 1. JQuery Mobile qui est ce que l’on peut appeler un Touch-Optimized Web Framework pour ce qui est des smartphones et tablettes. C'est un système unifié compatible avec la majorité des appareils mobiles. Celui-ci est basé sur jQuery et jQuery UI. 2. The-M-Project est un Framework HTML5 en JavaScript pour créer une application mobile ditecross-platform. Celui-ci est basé sur le Framework de jQuery Mobile et est disponible sur GlitHub. 3. Wink est un Framework écrit en JavaScript pour développer des applications mobiles pour Android, iPhone, iPad et BlackBerry. 4. Phonegap est un Framework destiné à faciliter la création d'applications mobiles pour différentes plateformes - Android, iOS, Windows Phone. Développé par Adobe Systems, il est basé sur Apache Cordova et distribué sous licence open-source1. Les applications qui en résultent sont hybrides, ce qui signifie qu'elles ne sont ni vraiment natives ni purement basées sur les langages HTML, CSS et JavaScript25. Une fois un de ces Framework installé, il suffit de créer un nouveau projet et à l’aide de HTML, CSS et JavaScript (à la main ou à l’aide de bibliothèques) pour créer son application hybride. 25 Rohit Ghatol et Yogesh Patel, « Beginning PhoneGap: Mobile Web Framework for JavaScript and HTML5 », Apress, 2012. 18 Voici une vidéo tutorielle de la création d’une application hybride basique (hello world) via Phonegap : Lien : https://www.youtube.com/watch?v=Sq2EDVJr_v8&nohtml5=False Les applications hybrides bien que pouvant souffrir de problèmes de performances sur d’anciens modèles de smartphones et tablettes, sont considérés par beaucoup comme l’avenir du web mobile. Par exemple l’application Instagram est une application hybride tout comme Twitter ou encore Amazone appstore. 3. JavaScript dans les sites web mobiles: En dehors des applications natives et des applications hybrides, il est également possible de faire des sites web adaptés aux technologies mobiles. Pour ce faire, plusieurs solutions sont possibles : La première étant de transformer un site Web en un site mobile en créant une version optimisée de celui-ci destiné aux appareils mobiles. Cette approche garantit que toutes les fonctionnalités et le contenu du site originel seront chargés correctement sur l’appareil mobile. Il existe de nombreux outils abordables qui peuvent aider à transformer un site Web en un site mobile. (Mobify, Mofuse, Wirenode, etc…). 19 La seconde solution possible est le responsive web. Plutôt que de créer deux sites distincts (un site traditionnel et un site mobile), il est possible de créer un site unique disponible à la fois sur ordinateurs et sur périphériques mobiles, le tout en restant optimisé au niveau du format. Cette solution permet un développement unique. Le responsive web est par exemple faisable via des CMS comme WordPress ou Drupal, ou en chipotant dans le CSS. 20 3.1 Problèmes liés au .JS et web mobile : Mais ces solutions ont leurs propres limites. Par exemple, un site en responsive est le même pour mobile que pour ordinateur portable (ou de bureau). Dès lors il n’est pas rare de voir apparaître des problèmes de performance liés à un code non optimisé, des publicités trop envahissantes ou encore un surplus de JavaScript rendant l’affichage dudit site web, lent. A cela, on peut ajouter une expérience utilisateur pas toujours optimisée, à cause d’une ergonomie très compliquée à atteindre lorsque l’on doit adapter un même site internet à plusieurs types d’écrans et de périphériques26. Du côté des sites dédiés au mobile, un travail supplémentaire est nécessaire au niveau de la maintenance et de l’optimisation de ceux-ci. (Le tout engendrant évidemment des coûts supplémentaires). Autre problème, les internautes doivent retenir au moins deux URL, ou sinon être redirigé vers le site mobile, ce qui peut prend plusieurs secondes. Enfin, les sites dédiés aux appareils mobiles ne sont pas universellement compatibles. (Il existe plusieurs plates-formes différentes comprenant chacune des périphériques multiples et divers)27. 3.2 Autre utilisation de JavaScript : Bref, la richesse des fonctionnalités mises à notre disposition par HTML5 et les langages associés (CSS, JavaScript, etc…) ouvrent la voie à la création de véritables applications Web mobiles (application hybride ou site web mobile) en mesure de rivaliser avec les applications mobiles classiques. Mais d'autres technologies en cours de développement promettent de rendre le Web de plus en plus attractif via des expériences utilisateurs mobiles toujours plus fluides et plus riches. C’est le cas de AMP HTML. 26 Olson Derek, Choosing between responsive web design and a separate mobile site to improve mobile visitors’ experience, Ressource Online, visité le 10/04/2016, in: https://www.foraker.com/blog/choosing-betweenresponsive-web-design-and-a-separate-mobile-site-to-improve-mobile-visitors-experience 27 Armen Ghazarian, The Pros and Cons of Responsive Web Design vs. Mobile Website vs. Native App, Ressource Online, visité le 10/04/2016, in: http://designmodo.com/responsive-design-vs-mobile-website-vs-app/ 21 Google avec AMP HTML ou Accelerated Mobile Page HTML propose une nouvelle version du langage HTML allégée, permettant un affichage rapide des pages web. Le but est d’aider les éditeurs à optimiser leur contenu pour un accès mobile sans passer par une application dédiée. Il s’agit notamment de limiter l’utilisation de JavaScript qui alourdit considérablement les pages web. En effet, selon Google, chaque fois qu’une page Web prend trop de temps à charger, les éditeurs de presse perdent 29 pourcents de leurs lecteurs, et cela peut monter jusqu’à 58 pourcents si la page prend plus de 10 secondes à s’afficher28. L’AMP HTML étant un langage dérivé de l’HTML classique. La structure de base d’une page en AMP HTML est par conséquent très proche de celle d’une page en HTML5 : Mais AMP HTML est une version allégée et modifiée de HTML 5 comprenant de fortes restrictions sur certains éléments techniques comme la gestion des ressources (images-vidéosetc…) ou encore JavaScript qui est utilisé au travers de la ligne de code : <script async src="https :// cdn.ampproject.org/v0.js"></script> , aussi appelé AMP Runtime. 28 Google, ACCELERATED MOBILE PAGES PROJECT, 2015, Ressource Online, visité en Décembre 2015, in : https://www.ampproject.org/ 22 AMP Runtime est un morceau de code JavaScript qui s’exécute à l’intérieur de chaque document en AMP. Il fournit des implémentations pour les éléments personnalisés AMP, et gère l’établissement des priorités de chargement des ressources présentes dans le document. Dès lors toutes les ressources d’une page en AMP HTML sont gérées par ce même script JavaScript. La publicité par exemple fonctionne via un iframe lui-même géré par l’AMP Runtime. IV. Conclusion Au vu de ce que nous venons de présenter, JavaScript apparaît comme étant un langage qui depuis son apparition en 1995, n’a fait que prendre de l’importance. Pouvant être utilisé tant côté client que côté serveur, les web master du monde entier ont très rapidement adopté ce standard du web. De nos jours, ce dernier est utilisé pour tout un tas de raisons, que cela soit pour dynamiser un site web, dans la publicité, dans les systèmes analytiques, dans les menus, pour l’intégration de widgets, etc… Mais c’est depuis 2009 que JavaScript est devenu un langage réellement incontournable. En effet, avec l’apparition des technologies mobiles (tablettes, smartphones, etc…) s’est fait sentir le besoin de réinventer le web. Que ce soit pour le développement d’une application hybride ou d’un site dédié mobile, JavaScript est devenu un langage essentiel à maîtriser. Comme nous l’avons vu précédemment, il est également possible d’utiliser le standard de l’ECMA à l’intérieur de sites web responsives. Mais c’est avec ces derniers que JavaScript montre le plus facilement ses limites. En effet, le web mobile étant différent du web traditionnel, et les appareils mobiles étant moins puissants que les ordinateurs traditionnels, une mauvaise optimisation du langage ou un surplus de ce dernier dans HTML peut provoquer des problèmes au niveau de l’affichage (publicités invasives, sites web illisibles, etc…) ou encore des problèmes liés au temps de chargement dudit site web. Malgré tout, JavaScript reste aujourd’hui un langage incontournable à comprendre pour toute personne s’intéressant à la création de sites web ou d’applications mobiles, car même quand ce dernier pose problème, des solutions sont trouvées comme avec AMP HTML et son utilisation spécifique du JavaScript via une bibliothèque mise en cache par des CDN (content delivery networks) sur les serveurs de Google. 23 V. Bibliographie 1. JavaScript, Ressource Online, visité le 29/03/2016, in : https://fr.wikipedia.org/wiki/JavaScript 2. Harrel Willam, « Développement web mobile avec HTML, CSS et JavaScript », EDI8, 2013, 448pp. 3. Rohit Ghatol et Yogesh Patel, « Beginning PhoneGap: Mobile Web Framework for JavaScript and HTML5 », Apress, 2012. 4. Lecocq Claire et al, « Technologies de la mobilité », Documentaliste-Sciences de l'Information, (Vol. 49) ,2012/3, no 3, 80pp. 5. Poty Pascal, « Portable : mode d’emploi », Les Cahiers Dynamiques, 2010/2, no 47, 128pp. 6. JavaScript Tutorial, Ressource Online, visité le 30/03/2016 in: http://www.w3schools.com/js/ 7. Google, ACCELERATED MOBILE PAGES PROJECT, 2015, Ressource Online, visité en Décembre 2015, in : https://www.ampproject.org/ 8. Glithub, How to Create a Basic AMP HTML Page, 2015, Ressource Online, visité en Novembre 2015, in: https://github.com/ampproject/amphtml/ 9. De Lacvivier Caroline, Mobile developers agree: HTML5 and JavaScript apps fall short, Ressource Online, visité le 01/04/2016, in: http://searchsoa.techtarget.com/feature/Mobile-developers-agree-HTML5-andJavaScript-apps-fall-short 10. S. Gilbertson, How Google’s AMP project speeds up the Web, 2015 Ressource Online visité en Novembre 2015, in : http://arstechnica.com/informationtechnology/2015/11/googles-ampan-internet-giant-tackles-the-old-myth-of-the-webis-too-slow/ 11. Jackson Brian, Diving into Google Accelerated Mobile Pages (AMP), Ressource online, visité le 01/04/2016, in: https://www.keycdn.com/blog/accelerated-mobilepages/ 12. Javascript - Introduction au langage Javascript, Ressource Online, visité le 01/04/2016, in : http://www.commentcamarche.net/contents/577-javascriptintroduction-au-langage-javascript 24 13. A short History of JavaScript, Ressource Online, visité le 03/04/2016, in : https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript 14. Bertrand JAN, JavaScript, histoire et écosystème, Ressource Online, visité le 03/04/2016, in :http://blog.alterway.fr/2016/02/javascript-histoire-et-ecosysteme/ 15. JavaScript, Ressource Online, visité le 05/04/2016, in : https://msdn.microsoft.com/frfr/library/2yfce773(v=vs.94).aspx 16. Roland Ludovic, Developper son application mobile, Ressource Online, visité le 06/04/2016, in :https://openclassrooms.com/courses/rentabilisez-vos-applicationsmobiles/developper-son-application-mobile 17. Grafikart, Développement d’application mobile, Ressource Online, visité le 07/04/2016, in :https://www.grafikart.fr/blog/developper-application-mobile 18. Créez une application mobile sur Android avec l'API javascript, Ressource Online, visité le 07/04/2016, in :http://api.ign.fr/documentation/243/creez-une-applicationmobile-sur-android-avec-l-api-javascript 19. Framework, Ressource Online, visité le 08/04/2016, in : https://fr.wikipedia.org/wiki/Framework 20. Susan Gunelius, How To Make Your Website Mobile-Friendly On A Budget, Ressource Online, visité le 08/04/2016, in: http://www.forbes.com/sites/work-inprogress/2013/09/05/how-to-make-your-website-mobile-friendly-on-abudget/#2367f6dd4cda 21. Olson Derek, Choosing between responsive web design and a separate mobile site to improve mobile visitors’ experience, Ressource Online, visité le 10/04/2016, in: https://www.foraker.com/blog/choosing-between-responsive-web-design-and-aseparate-mobile-site-to-improve-mobile-visitors-experience 22. Armen Ghazarian, The Pros and Cons of Responsive Web Design vs. Mobile Website vs. Native App, Ressource Online, visité le 10/04/2016, in: http://designmodo.com/responsive-design-vs-mobile-website-vs-app/ 25