Blog ACENSI
Phrase : "JavaScript : le futur, c'est maintenant !"

Microsoft experiences'16 – Javascript et One man show ! – Partie 2

Me revoilà pour cette seconde partie de retours sur les Microsoft Experiences 2016.
Retrouvez la première partie de cet article ici.
logo_javascript
Déjà mis en avant lors de la plénière à travers node.js, je dois avouer que je ne m’attendais pas à entendre autant parler de Javascript. Mon usage de Javascript quant à lui est surtout orienté web et très peu applicatif. J’ai donc un usage et une connaissance très restreint(e) de ce premier, cette première conférence de l’après-midi fut riche en enseignements et assez drôle.
Voici mon retour sur la conférence « Javascript : le futur c’est maintenant ! » : https://tdd.github.io/msexp16-js/#/

Javascript : Evolution et anticipation

Photo Christophe PorteneuveL’orateur était Christophe Porteneuve dont je salue la capacité à captiver les foules grâce à l’humour, l’autodérision, l’ironie et le sarcasme. Ce troll mais surtout passionné et cultivé personnage a -je pense- converti son auditoire.
Il a commencé par une présentation d’ECMAScript, standard derrière l’appellation Javascript (Javascript est à la base un langage mais désigne maintenant une implémentation d’ECMAScript par Mozilla : JScript est l’implémentation de Microsoft et ActionScript celle d’Adobe).
Suivi d’une rapide mais complète présentation du standard et notamment de son système de version un peu « bordélique ». Historiquement, les versions majeures d’ECMAScript respectaient le modèle suivant : ES1, ES2, ES3, ES5. Petite anecdote au passage, il n’existe pas vraiment de version ES4. Mais depuis juin 2015, les nouvelles versions sont annualisées. On retrouve donc ES2015 sortie en 2015, ES2016 en juin 2016. Tous cela avec un rythme de sortie d’une version par an.
Mais quid de la compatibilité des navigateurs et la prise en charge native ? Parce que tout ça c’est bien gentil mais si les navigateurs ont deux à trois ans de retard sur la prise en charge, cela ne va pas nous arranger. Et bien Christophe répond naturellement à la question grâce aux statistiques fournies par EcmaScript. Actuellement, la version 2015 est prise en charge à 90% sur l’ensemble des navigateurs du marché avec par exemple 100% sur Safari et au minimum 93% sur Edge 14. Ce qui suffit largement.
Tout ça c’est cool mais dans la vraie vie qu’est que ça donne ? Notre orateur prend l’exemple des modules ES2015 natifs qui sont encore difficilement supportés même sur les navigateurs les plus modernes. Et qu’en est-il d’ES2016 ? Parce que oui, il ne faut pas l’oublier, nous sommes en 2016 et bientôt en 2017, donc bien ES2017.

Babel : ça roxe du poney

BabelEt ça, ce n’est pas moi qui le dit mais monsieur Porteneuve. Qu’est-ce que Babel ? Non ce n’est pas la célèbre province accueillant l’historique ville de Babylone, ni la tour de Babel et encore moins le site pour apprendre à parler l’anglais sur son téléphone.
Non, Babel est ce qu’on appelle un transpileur. Son rôle va être de prendre votre code source et de le « transformer » en un autre code source. Par exemple, je développe une petite fonctionnalité en ES2016 mais malheureusement, j’utilise une fonction non supportée par les navigateurs actuels. Eh bien, Babel va prendre mon code source et l’adapter pour le rendre compatible.
Grâce à Babel nous pouvons écrire du code ES2015, ES2016 et même certaines fonctionnalités de l’ES2017. Plus besoin de regarder la table des compatibilités, Babel fait le travail pour nous. On garde cependant la main sur ce qu’on désire transpiler car plus la prise en charge native augmente moins celle-ci devient nécessaire.  Par contre, une transpilation d’un code natif peut s’effectuer pour gagner un peu de performance.
Babel s’intègre via une configuration permettant de déterminer le niveau de transpilation et de compatibilité souhaité. Par exemple, si votre application s’adresse à des utilisateurs IE 11, une configuration ES2015 sera recommandée alors que pour un navigateur dit « evergreens », seuls les plugins nécessaires devront être utilisés, pour utiliser exclusivement les fonctionnalités ES manquantes.

Babel : Une omniprésence dangereuse

Peut-être que certains d’entre vous ont pu voir un problème se dessiner à l’horizon. Si Babel est aussi important – sans parler de ses 57 000 téléchargements journaliers dans le répertoire de dépendances npm et des 2000 modules qui en dépendent – si celui-ci a un souci, c’est tout l’écosystème JavaScript qui le ressent. C’est d’ailleurs ce qu’il s’est passé le 23 mars 2016. Un développeur a décidé de retirer ces modules de Npm, modules dont dépendait Babel. Ce qui a entrainé une incapacité de Babel et beaucoup d’autres de fonctionner.

Picto-Facebook-3Pour la petite histoire, comme nous l’a raconté Christophe, Babel a été créé en 2014 par Sebastian McKenzie et compte aujourd’hui plus de 250 contributeurs. La pérennité de Babel est assurée car Facebook a jugé bon, comme souvent, d’embaucher Sebastian et les plus gros contributeurs. Babel étant critique au développement de Facebook, la disparition ou l’arrêt du support de ce programme ne risque pas d’arriver de sitôt.
Babel s’intègre particulièrement bien à l’écosystème des EDI modernes (environnement de développement « intégré »). On le retrouve donc sous forme d’extension dans Visual Studio Code et Visual Studio. Dans les EDI JetBrains, Babel est natif.

Petit passage troll de la part de Christophe en abordant l’intégration de Babel dans Eclipse considéré à juste titre comme l’Internet Explorer des EDI. Il en va de même pour les éditeurs qui prendront Babel en charge soit via des extensions ou nativement. Babel est également disponible dans les EDI en ligne tel que JSBin, CodePen, JSFiddle et Cloud9.
Il existe également tous les plugins adéquats pour les builders populaires : Gulp, Grunt, Webpack, Browserify, Rollup etc.

TypeScript ou l’art de réconcilier des communautés

TypleScript JavaScript for toolsAprès cette longue mais fructifiante présentation de Babel entrecoupée de blagues et de trolls à destination de l’assistance, Christophe enchaine sur TypeScript. Vous en avez surement déjà entendu parler, je ne vais pas trop m’attarder dessus car de mon point de vue, Typescript répond à un besoin particulier et s’adresse à des développeurs n’ayant pas l’habitude des langages non typés.
L’objectif de cet outil est de permettre un typage statique optionnel des variables et des fonctions, la création de classes et d’interfaces, l’import de modules, tout en conservant l’approche non-contraignante de JavaScript. Il supporte la spécification ECMAScript 6. Celui-ci transpile le code à la manière de Babel.
TS2 possède un concurrent développé par Facebook et appelé Flow. Ce dernier possède apparemment de bons retours et se montre plus efficace que TypeScript. Babel et lui sont compatibles mais cela demandera un peu de travail et d’efforts pour obtenir une configuration fonctionnelle et ne provoquant pas de conflit. Flow est cependant recommandé pour une utilisation avec Babel car celui-ci est apparemment capable d’interpréter le code annoté par Flow.
Voilà pour la conférence de Christophe Porteneuve que je remercie chaleureusement. Si un jour vous avez l’occasion d’assister à une de ses présentations, foncez–y, les yeux fermés !

Ma conclusion : Le web avance beaucoup trop vite !

La seconde conférence de l’après-midi était une extension de la première. Le but ici était d’aborder tous les aspects qui feront le futur du web. Et encore une fois, très grande présence de node.js. C’était d’ailleurs l’occasion pour Christophe Porteneuve de refaire une apparition sur scène.
Je ne rentrerai pas dans les détails de cette conférence, ni de la dernière qui s’adressait à un public d’intégrateurs. Même si elles furent enrichissantes, le but de cet article était de vous faire découvrir le futur du Javascript.
Pour finir, je voudrais m’attarder sur mon ressenti et la réflexion que j’ai durant ces conférences : Le web ça avance beaucoup trop vite ! Oui, beaucoup, beaucoup trop vite.
Pendant ces conférences, je n’ai pas arrêté de penser « Ok donc demain j’utiliserai ça » suivi de quelques minutes plus tard par « Eh bien non, en fait, si je comprends bien le monsieur, c’est ça que je dois utiliser car ça c’est dépassé ».
Sincèrement, c’est compliqué d’exprimer ce ressenti mais en discutant et en écoutant les autres spectateurs, j’ai eu le sentiment de ne pas être le seul à penser ça. Et j’ai été encore plus étonné de découvrir cette article (https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.9vlqhjvvq) quelques jours après ces Microsoft Experiences 2016. J’ai eu la sensation que Jose Aguinaga avait assisté à la même conférence que moi. Cette discussion, ça aurait pu être moi et Christophe Porteneuve, l’audience et Christophe Porteneuve. Je vous conseille donc d’aller le lire, si vous n’êtes pas anglophobe.

Pourquoi ce blog ?

Pour permettre à nos consultants et experts techniques de partager leurs connaissances et retours d’expérience autour des sujets qui les passionnent. Ce blog, intégralement écrit par eux, a pour vocation d’être un véritable lieu d’échanges et d’apprentissage.

Alors n’hésitez pas à commenter nos articles pour rejoindre la conversation !

Une suggestion ?

Si vous avez des idées pour améliorer ce blog, nous sommes à l’écoute de vos remarques. Vous pouvez nous écrire via le formulaire de contact qui se trouve en bas de page.

Bonne visite !