Articles taggés "javascript"

Poste par Cedric Sadai, le 29/02/08 - Technologie

En introduction à ce blog, je souhaite faire un petit retour en arrière de l’Internet. Ceci afin de prendre la mesure des évolutions passées en une période très courte (10 ans), et ainsi de mieux cerner les évolutions technologiques nouvelles, défis de demain, dont ce blog tentera de traiter en profondeur.

Voici donc le premier épisode de cette série d’historiques, consacré ici à la programmation web open-source.

Back in the days

J’ai réalisé mon premier site en 1998. A l’époque l’acronyme LAMP n’existait pas, mais c’est bien sur ce stack (un stack est une pile en programmation, LAMP signifie Linux/Apache/MySQL/PHP) que la plupart des sites amateurs commençaient à être développés en France, grâce essentiellement à Free qui avait fait ce choix technologique très tôt pour sa plateforme gratuite (pages persos free), ainsi que pour son service d’hébergement professionnel (online.fr).

Le PHP en était à sa version 3, celle où la couche objet n’existait pas encore, mais où le programmeur web débutant pouvait si facilement réaliser des premiers projets tangibles, soutenus par une communauté naissante qui mettait à disposition des scripts complets.
Côté client, la vie du développeur était un enfer. La très forte notoriété de Netscape, couplée à la domination farouche d’Internet Explorer, obligeait tous les concepteurs web à d’interminables nuits passées à jouer avec leurs tableaux et leurs codes JavaScript pour avoir des pages qui s’affichaient de manière à peu près cohérentes sur les différents navigateurs. Un JavaScript lui-même réduit à des fonctions très basiques, comme l’ouverture de pop-ups, les animations un peu grossières et quelques autres réjouissantes souvent bridées par l’absence de compatibilité cross-navigateurs (d’où l’utilisation intensive du if(document.all) ).

La rupture

Les langages de programmation web ont très sensiblement évolué en 10 ans. Des nouvelles méthodes, des nouveaux langages, des nouvelles pratiques se sont progressivement mis en place, sous une commune bannière de la recherche d’efficacité, à un moment où le programmeur web commençait à réaliser que l’essentiel des briques nécessaires à un projet sont réutilisables, et que très peu de besoins sur Internet sont réellement nouveaux.
Si je devais citer quelques changements, je parlerais côté client des nouvelles générations de navigateurs, Mozilla Firefox en tête, qui ont commencé à gérer de manière un peu plus cohérente le code HTML et JavaScript, en se référant de plus près aux recommandations du (http://fr.wikipedia.org/wiki/W3C) W3C. Un repère pour les développeurs qui pouvaient en plus s’appuyer sur les CSS2 et enfin abandonner les tableaux HTML pour de belles DIV au contenu facilement dynamisable. Pour cela, ils peuvent s’appuyer largement sur JavaScript, dont le développement a été intensif pendant les années 2000. Ce langage désormais très puissant, beaucoup plus portable qu’avant, avec une utilisation grandement facilitée par l’apparition de frameworks comme Prototype ou jQuery. D’ailleurs, l’innovation de rupture la plus importante des années 2000 concerne ce langage, avec l’apparition du XMLHTTPRequest, ce composant de JavaScript qui permet d’interroger un serveur distant sans recharger la page courante. Ce principe est plus connu sous le nom d’AJAX, et a littéralement transformé l’expérience utilisateurs depuis (il n’y a qu’à voir sa large intégration sur Facebook pour en prendre la mesure).

Côté PHP, ce langage Open-Source a évolué d’un rôle un peu décrié de langage d’amateur à destination des amateurs à celui de leader en forte évolution, grâce à la communauté de développeurs la plus active au monde. La maturité est incarnée par PHP5, et sa gestion des classes, qui a permis l’éclosion d’un grand nombre de frameworks très performants (Cake, Mojavi, Symfony..), respectant pour beaucoup le paradigme MVC (dont nous parlerons beaucoup ici), et l’approchant ainsi de JAVA. Cette évolution vise à rendre les applications PHP plus professionnelles, puisqu’évolutives, réutilisables, et mieux structurées, permettant ainsi de faire travailler plusieurs personnes complémentaires (intégrateurs, développeurs, designers…) grâce à la séparation des couches, et d’intégrer facilement des classes existantes. Un concept important, puisqu’au lieu de partager des scripts entiers, les développeurs partagent désormais des classes métiers, des briques sur lesquelles ils peuvent construire ou reconstruire, en gardant la maîtrise de la couche finale. Le développeur n’a plus à réinventer la roue à chaque projet, il récupère les ingrédients mis à disposition par la communauté et peut ainsi mieux focaliser son esprit sur la valeur ajoutée apportée par des services nouveaux. En dehors de PHP, citons enfin l’immense source d’inspiration née de l’éclosion de Ruby on Rails par l’équipe de 37signals, qui a chamboulé la manière de programmer de millions de développeurs (et a grandement inspiré certains frameworks PHP, nous y reviendrons également au travers de nos articles).

Idéologiquement, le développement web est rentré dans une phase de syndication intense. Alors même que les sites web étaient des sortes d’espaces cloisonnés reliés par des liens hypertextes, ils ne forment désormais plus qu’un, puisque chaque service est mis à dispositions de sites tiers par le biais d’APIs ou de widgets. Cela a permis l’arrivée d’un site d’un type nouveau, les mashups, qui sont des fusions entre deux (ou +) services web (par exemple, les objets mis en vente sur Craigslists affichés sur une carte via l’API Google Maps). Dans le même temps, les flux RSS sont devenus légion. Le XML, comme modèle de partage de données structurée, atteint donc son apogée, puisqu’indispensable dans toutes les formes de services web : affichage avec le XHTML, échanges avec REST et SOAP, et fidélisation avec RSS (on pourrait aussi parler des SiteMaps pour le référencement naturel, etc.)

L’avenir

L’avenir du web passera également par le XML, puisque ce format peut remplir un rôle de base de données échangeable. On parlera ici de microformats et de web sémantique, concept relativement nouveau poussé par le W3C et son président Tim Berners-Lee, visant à rendre le web intégralement lisible et analysable par des machines.

L’avenir du web, c’est aussi et avant tout les produits de demain, qui guident l’évolution des technologies. Ainsi, l’éclosion des mobiles, la baisse du prix du transfert de données nomades, sont autant d’éléments moteurs à l’apparition de nouvelles technologies destinées aux appareils mobiles. De la même manière, la généralisation du haut débit influe directement sur le développement de nouveaux média, comme la vidéo, dont la qualité ne cessera d’augmenter dans les années qui viennent, pour certainement se substituer in fine à la télévision (voir Joost ou Seesmic).

L’avenir du web, c’est aussi la convergence entre les applications de bureau, les applications web traditionnelles et les applications mobiles. Des technologies naissantes permettent de faire dialoguer facilement une application de bureau avec un serveur web (voir Adobe Air), et ces plateformes vont continuer à se développer, jusqu’à ce que le système même d’application de bureau ne disparaisse au profit des web-desktops, tendance inévitable et logique qui connaît déjà ses précurseurs.

Enfin, l’OS virtuel est une conséquence du stockage virtuel. Cette tendance est fondamentale, et le liant logique entre l’explosion de la mobilité et de la virtualisation des postes de travail. Nos données sont de plus en plus hébergées, cela a commencé en délaissant nos Outlook pour des gMail ou des Yahoo! Mail, puis ca a continué avec Writerly (ou Google Docs), Zimbra, et autres. L’avantage est d’accéder aux mêmes données quelques soit l’appareil utilisé, soit il mobile, ou fixe, quelque soit son emplacement géographique. Ce que l’on sait moins, c’est que les données présentes sur les serveurs web (déjà distants des postes clients) sont eux-mêmes stockés à l’extérieur, sur ce qu’on appelle des nuages de serveurs (cloud computing), un sujet sur lequel nous reviendrons largement. Une évolution du web qui va donc modifier l’informatique en elle-même, puisque l’ordinateur personnel pourra devenir impersonnel, sorte de station de travail où l’intégralité des données liées à un utilisateur sera désormais stockée à l’extérieur. Des machines à faible capacité de stockage, ne nécessitant plus autant de puissance qu’auparavant, donc plus abordables, pour un monde entièrement mobile et très interconnecté.