ANNÉES 2010

Dart

En octobre 2011, lors de la conférence GOTO à Aarhus au Danemark, Lars Bak et Kaspar Lund présentent au public un nouveau langage de programmation développé chez Google : Dart. L'ambition affichée est claire : offrir une alternative crédible à JavaScript pour le développement web, un langage qui échapperait aux défauts et aux limites que les développeurs reprochent alors au vénérable JavaScript.

Les deux ingénieurs de Google ont conçu Dart avec une idée en tête : unifier le développement logiciel sur différentes plateformes sans sacrifier les performances. La syntaxe du langage emprunte volontairement aux langages établis comme Java, C ou JavaScript, histoire de ne pas trop désorienter les développeurs qui franchiraient le pas. Cette familiarité calculée vise à faciliter l'adoption : pas besoin de tout réapprendre depuis zéro.

Le 14 novembre 2013, Google publie la version 1.0 de Dart. C'est la première mouture stable, celle qui doit convaincre la communauté que Dart peut bel et bien remplacer JavaScript dans les applications web. L'année suivante, en juillet 2014, Ecma International valide le langage lors de sa 107e Assemblée Générale et crée le standard ECMA-408. Cette reconnaissance officielle confère à Dart une légitimité qu'un simple projet d'entreprise n'aurait pas eue.

Mais les débuts ne sont pas aussi glorieux qu'espéré. Google nourrit l'ambition d'intégrer directement dans Chrome une machine virtuelle Dart pour booster les performances des applications. L'idée fait grincer des dents. Les développeurs web craignent une fragmentation du web, où chaque navigateur imposerait sa propre machine virtuelle. Face à cette résistance, Google fait marche arrière. En 2015, avec la version 1.9, le projet d'intégration native dans les navigateurs est abandonné.

L'histoire de Dart aurait pu s'arrêter là, cantonnée à un énième langage web sans grand relief. Mais 2017, Google lance Flutter, un framework pour créer des interfaces utilisateur qui fonctionnent sur mobile, web et desktop à partir d'un même code source. Et Flutter choisit Dart comme langage principal. Cette alliance redonne un souffle au langage, qui trouve enfin sa vraie raison d'être : servir de socle au développement multiplateforme.

Août 2018 marque une rupture avec l'arrivée de Dart 2.0. Cette version restructure le langage, notamment par l'introduction d'un système de typage bien plus strict. Le code gagne en sécurité et en lisibilité, deux qualités indispensables pour les applications complexes. Le compilateur est également remanié pour produire du code natif performant, les applications Flutter pouvant ainsi atteindre des performances comparables aux solutions développées spécifiquement pour iOS ou Android.

Dart propose deux modes de compilation distincts. La compilation anticipée (Ahead-of-Time ou AOT) transforme le code en JavaScript optimisé pour le web, ou en code machine natif pour les applications mobiles. La compilation à la volée (Just-in-Time ou JIT) facilite un développement plus fluide grâce au rechargement à chaud du code : on modifie le code, et l'application se met à jour instantanément sans redémarrage complet. Cette souplesse accélère considérablement le cycle de développement.

Le langage adopte une approche résolument orientée objet : tout est objet, y compris les nombres et les fonctions. Classes, interfaces, mixins, génériques... Dart reprend les concepts familiers des langages modernes. La gestion automatique de la mémoire libère le développeur des tâches fastidieuses d'allocation et de désallocation manuelle des ressources.

Le succès de Flutter tire Dart vers le haut. La version 2.7 introduit les méthodes d'extension, qui permettent d'ajouter de nouvelles fonctionnalités aux types existants sans modifier leur code source. Cette astuce s'avère précieuse pour enrichir les interfaces utilisateur développées avec Flutter.

L'écosystème s'étoffe progressivement. Le SDK Dart intègre un compilateur dart2js pour générer du JavaScript, un analyseur statique qui détecte les erreurs avant l'exécution, un formateur de code et un gestionnaire de paquets. Ces outils accompagnent le développeur tout au long du processus de création.

L'approche technique de Flutter distingue Dart des autres solutions multiplateformes. Au lieu de compiler vers du code natif iOS ou Android, Flutter dessine directement chaque pixel à l'écran grâce à son propre moteur de rendu. Cette stratégie garantit une expérience utilisateur identique sur toutes les plateformes, sans dépendre des composants graphiques natifs de chaque système.

La machine virtuelle de Dart a été conçue pour tirer le meilleur parti du langage. Le garbage collector gère la mémoire avec efficacité, tandis que le compilateur produit du code optimisé pour chaque plateforme cible, grâce à quoi les applications Dart atteignent des performances élevées tout en conservant une base de code unique.

Des entreprises de toutes tailles utilisent Dart et Flutter pour développer leurs applications. La possibilité de réutiliser le code entre mobile, web et desktop représente un gain de temps et d'argent considérable. On écrit une fois, on déploie partout, avec des performances au rendez-vous.

L'avenir de Dart reste intimement lié à celui de Flutter. Google continue d'investir dans les deux technologies, publiant régulièrement des mises à jour qui enrichissent les fonctionnalités et améliorent les performances. Le langage évolue pour répondre aux besoins du développement moderne, avec un objectif constant : rendre les développeurs plus productifs.

Parti comme une alternative à JavaScript, Dart a finalement trouvé sa voie dans le développement multiplateforme. Son association avec Flutter lui a donné une seconde jeunesse et un véritable terrain de jeu.