Accueil Nos publications Blog Devoxx 2012 – le Javascript et le web mobile à l’honneur !

Devoxx 2012 – le Javascript et le web mobile à l’honneur !

Un des sujets phares de cette édition de Devoxx est le Web, et surtout le Web mobile, qui ont eu le droit à des conférences de haute volée, organisées pour la plupart par les équipes de Google ou par des personnes travaillant autour de frameworks Google.

Certaines étaient très orientées sur certaines technologies de Google comme Angular.js ou GWT, mais la plupart étaient plus généralistes et traitaient de problématiques communes à tous les sites webs sur tous les navigateurs.

Ce qui en ressort est l’importance de la sécurité, le web mobile qui devient vraiment incontournable et l’intérêt grandissant des développeurs Java pour le Javascript, suite à l’évolution du développement dans ce langage ces dernières années.

La sécurité

Sujet vaste et très compliqué, la sécurité sur le web est souvent négligée par les développeurs qui exposent ainsi leurs sites à toutes sortes d’attaques, et surtout, exposent les données personnelles de leurs utilisateurs.

La sécurité parfaite n’existant pas, de nombreux sites assez importants se font pirater malgré tous leurs efforts. Mais il existe des moyens de réduire les risques. En effet, le W3C travaille activement sur des normes permettant de réduire ces risques. C’était notamment le sujet de la “super” conférence de Mike West (@mikewest) dont vous pouvez lire le compte-rendu ici. Les nouvelles entêtes HTTP, dédiées au contrôle de l’origine des fichiers utilisés par un site web, vont permettre de grandement réduire les risques de cross scripting et de mieux séparer le Javascript et le HTML qui sont souvent mélangés.

De même, le principe de pouvoir sandboxer l’exécution de son javascript, lorsqu’il utilise des fonctions potentiellement dangereuses comme eval(), va pouvoir renforcer la sécurité des sites en limitant le champ d’action des pirates informatiques. La mise en œuvre est encore un peu compliquée, mais il y a de grandes chances que des frameworks javascript allégeant ce travail voient le jour d’ici peu de temps.

Le mieux est que l’on peut les utiliser dans les sites actuels, car ces nouveautés seront ignorées si le navigateur ne les supporte pas. Vous n’avez donc pas besoin de gérer des polyfills ou choses du genre, les sites fonctionnant avec les anciens navigateurs seront seulement autant exposés qu’aujourd’hui.

Il ne s’agit bien évidemment pas, comme toujours en informatique, de solutions magiques et parfaites qui vous protégeront de tout, mais elles vont combler un manque évident de sécurité au niveau du navigateur.

L’autre conférence importante sur la sécurité du Web était animée par Tim Bray (@timbray) de Google qui a présenté l’implémentation d’oAuth2 par Google. La problématique ici est de fournir un SSO pour éviter la saisie du mot de passe sur tous les sites nécessitant une authentification.

 La gestion de la sécurité est simplifiée pour votre site et l’utilisateur n’a pas besoin de se réinscrire, lui faisant gagner du temps. Le principal problème est la dépendance que cela crée envers le fournisseur du SSO. L’autre problème est que, bien que oAuth soit un standard, tout le monde ne l’implémente pas de la même manière. Vous ne pouvez donc pas faire un système commun à Facebook, Yahoo, Twitter et Google sans librairie externe pour vous aider à gérer tout ça.

Le web mobile monte en puissance

Il y a encore peu de temps le web mobile était vraiment considéré comme le parent pauvre du développement sur mobile. Plus souvent associé au WAP qu’aux smartphones pour lesquels les applications natives étaient privilégiées.

Aujourd’hui, avec les efforts du W3C, des navigateurs et des frameworks Javascript, il est devenu possible de faire facilement, rapidement et efficacement des sites webs mobiles pouvant rivaliser avec des applications natives.

Ces dernières continueront d’exister mais seront fort probablement de plus en plus restreintes à des besoins très spécifiques, qui sont liés à l’utilisation de capteurs adaptés, ou à des besoins de performances très importants.

 Comme le résume très bien Daniel Kurka (@dankurka), qui a créé le framework mGWT permettant de faire du mobile en GWT, les utilisateurs de smartphones sont submergés de demandes d’installation d’applications. Vous voulez voir les horaires du bus, une application est nécessaire. Lorsque vous changez de ville, vous devez télécharger l’application de la compagnie gérant les bus de cette ville. Vous vous retrouvez avec des centaines d’applications sur votre téléphone pour des usages très ponctuels. Il serait tellement plus simple d’utiliser un site web adapté au mobile. Surtout que de très (trop?) nombreuses applications ne fonctionnent tout simplement pas sans un accès à internet.

Ainsi, Daniel a présenté mGWT et l’intégration de GWT avec PhoneGap pour avoir un bon compromis entre les lacunes actuelles du HTML5 qui supporte encore mal les accès au matériel et un développement compatible avec la plus part des smartphones. L’avantage de PhoneGap est que vous pouvez développer votre site web et ajouter les fonctionnalités utilisant des API natives seulement si le site est embarqué dans une application native, maintenant ainsi une seule base de code entre le site web mobile principal et toutes les applications spécifiques aux périphériques. Et au fur et à mesure où les navigateurs intègrent les spécifications permettant d’accéder au matériel des téléphones, vous retirez les API phonegap.

mGWT intervient à un autre niveau en vous permettant de faire des sites mobiles ayant un look&feel très très proche d’une application native sur chaque système, le tout en développant en Java et en se basant sur GWT. La démonstration était particulièrement bluffante au niveau du rendu et des performances… à voir ce que cela donne sur autre chose qu’un iPhone 5.

 Une autre conférence, animée par Sam Dutton (@sw12) qui participe au développement de Chrome, portait sur les éléments à mettre en place pour faire des sites mobiles réactifs. Il a fait une bonne synthèse de toutes les problématiques spécifiques au mobile (latence, bande passante, mémoire limitée, lenteur, etc.) et des moyens de les résoudre (agrégation de fichier, compression, limitation du DOM et du javascript, etc.). Cela m’a permis de confirmer que ce que je faisais au quotidien allait bien dans le bon sens.

Le renouveau du Javascript

Après des années de haine, le Javascript revient à la mode. Il y a de plus en plus une séparation nette entre le code serveur qui expose des services, souvent en REST, et le client qui les consomme, souvent en Javascript. De ce fait, le code client devient de plus en plus important et nécessite donc une attention particulière.

L’arrivée de nombreux frameworks Javascript ont permis de sortir du côté un peu chaotique qui était jusque-là associé à ce langage. Il est maintenant possible de faire du véritable MVC avec des frameworks comme Angular.js que Google a présenté et qui est vraiment bluffant. Il n’y a plus besoin de manipuler le DOM en Javascript : vous associez votre modèle de données à votre vue via des attributs dans le HTML et le framework se charge de rafraîchir, masquer, changer les valeurs, valider les champs, etc. pour vous. Il y a un côté magique qui m’interpelle un peu, mais en tout cas l’approche semble très intéressante pour pallier aux déficiences des navigateurs qui nous obligent à manipuler du DOM constamment.

Ce regain d’intérêt entraîne également une prise de conscience que Javascript est un langage puissant qu’il est nécessaire d’apprendre réellement. Il est loin le temps où le javascript était assimilé à du code de seconde zone. Ce langage est très puissant, mais possède certains gros défauts qu’il est important de bien connaître pour développer des sites de manière maintenable. Ainsi la présentation de Yakov Fain (@yfain) exposait de manière assez sympathique les points qui posent de nombreux problèmes aux développeurs Java passant à Javascript. J’aurais bien aimé avoir ce type de synthèse lorsque j’ai commencé le Javascript pour ne pas les apprendre par moi-même au fil des projets.

Un autre aspect intéressant de ce renouveau est la présence d’outils de débugging pour le web extrêmement puissants. Ainsi Ilya Grigorik (@igrigorik) nous a présenté toutes les possibilités de Chrome Developper Tools. Si l’outil est simple pour faire des choses simples, il possède une puissance cachée assez impressionnante pour faire du profiling avancé ou créer ses propres extensions. Il est encore une fois clair qu’il est important de bien maîtriser ses outils et qu’il s’agit d’un apprentissage à part entière au même titre que découvrir un framework.

Conclusion

Cette édition de Devoxx était vraiment passionnante pour un développeur s’intéressant beaucoup aux problématiques web. Les équipes de Google sont vraiment très fortes pour motiver les développeurs à rendre le web meilleur. Leurs présentations sont captivantes et pertinentes et c’est très bien qu’ils mettent l’accent sur ce type de sujet dans des conférences qui sont habituellement plus orientées autour des technologies côté serveur.

C’est la suite logique de l’année dernière qui mettait relativement en avant les technologies autour du Cloud et du REST. Maintenant que les serveurs exposent des services facilement consommables, les clients s’adaptent et adoptent de plus en plus le Javascript et suivent la tendance générale du développement Web de ces dernières années.