Dart 2.0 est disponible, le langage de Google
A été optimisé pour le développement Web et mobile côté client

Le , par Michael Guilloux, Chroniqueur Actualités
Google vient d’annoncer la sortie de la version 2.0 de Dart, son langage de programmation Web qui, comme de nombreux autres, vise à remplacer JavaScript. Cette nouvelle version majeure du langage a été optimisée uniquement pour le développement côté client pour le Web et le mobile. « Avec Dart 2, nous avons considérablement renforcé et rationalisé le système de types, nettoyé la syntaxe et reconstruit une grande partie de la chaîne d'outils de développement afin de rendre le développement mobile et Web plus agréable et plus productif », a déclaré Anders Thorhauge Sandholm, Product Manager chez Google. « Dart 2 intègre également les leçons apprises des premiers utilisateurs du langage, notamment Flutter, AdWords et AdSense, ainsi que des milliers d'améliorations, grandes et petites, en réponse aux commentaires des clients. »

Avant d'aller aux améliorations apportées par Dart 2, Google explique pourquoi son langage serait bien positionné pour les besoins des développeurs côté client. En plus des attributs nécessaires pour un langage moderne et polyvalent, Google estime que le développement côté client avec Dart est :

  • productif, rapide et portable : d’après Google, Dart augmente la vitesse du développeur, car il a une syntaxe claire et succincte et peut s'exécuter sur une VM avec un compilateur JIT. Ce dernier permet le déploiement à chaud et le rechargement dynamique lors du développement mobile. Cela veut dire que vous pouvez apporter diverses modifications aux applications et à leurs modules sans devoir arrêter et redémarrer le serveur. Cela entraine donc, selon Anders, des cycles de développement super rapides. Dart prend également en charge la compilation en code natif (ARM, x86, etc.) pour des performances mobiles rapides ainsi que la transpilation en JavaScript. Grâce à la compilation anticipée de code natif, Dart fournit encore un démarrage prévisible, haute performance et rapide sur les appareils mobiles ;
  • accessible : Dart est conçu pour être familier et donc accessible à de nombreux développeurs existants, grâce à ses aspects orientés objet et sa syntaxe qui – selon ses utilisateurs – permet à tout développeur C++, C#, Objective-C ou Java d’être productif en quelques jours ;
  • réactif : Dart fonctionne également bien pour la programmation réactive avec ses bibliothèques de base, y compris les flux et les futures (qui font référence à des techniques de synchronisation pour certains langages concurrents). Il a également un grand support pour la gestion des objets temporaires grâce à un ramasse-miettes générationnel rapide.



Dans Dart 2, Google dit avoir pris d'autres mesures pour rendre Dart plus solide en tant que langage idéal pour le développement côté client. En particulier, le langage s’est doté de plusieurs nouvelles fonctionnalités, notamment le typage fort.

« Les équipes derrière AdWords et AdSense ont créé avec Dart certaines des applications Web les plus importantes et les plus avancées de Google pour gérer les annonces qui génèrent une part importante des revenus de Google. En travaillant en étroite collaboration avec ces équipes, nous avons identifié une grande opportunité de renforcer le système de type de Dart », explique Anders. « Cela aide les développeurs Dart à détecter les bogues plus tôt dans le processus de développement, à mieux mettre à l'échelle les applications créées par de grandes équipes et à améliorer la qualité globale du code », dit-il.

Il illustre cela avec un exemple de code pour mettre en évidence l’inférence de type avec Dart 2. Rappelons que l’inférence de types est un mécanisme qui permet à un compilateur ou un interpréteur de rechercher automatiquement les types associés à des expressions, sans qu'ils soient indiqués explicitement dans le code source. Dans le petit exemple ci-dessous, l'inférence de type Dart 2 permet de découvrir une erreur plutôt subtile et, par conséquent, d'améliorer la qualité globale du code.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
void main() {
	  List<int> prices = ['99', '27', '10000', '20000000'];
	  
	  // Sort in place from smallest to largest
	  prices.sort();
	  
	  print('Lowest price is ${prices[0]}!');
	}
« Que fait ce code ? Vous pouvez raisonnablement vous attendre à ce que le résultat affiché soit '27'. Mais sans le système de typage de Dart 2, il va afficher '10000', parce que c'est le plus petit élément de la liste des chaînes lorsqu'elle est ordonnée de manière lexicographique. Avec Dart 2, cependant, ce code donnera une erreur de type », souligne Anders.

Dart 2.0 améliore également la manière dont l'interface utilisateur est définie comme code. Google estime en effet que lors de la création d'une interface utilisateur, le basculement entre un langage de balisage d'UI distinct et le langage de programmation dans lequel vous écrivez votre application génère souvent de la frustration. L'entreprise s'efforce donc de faire en sorte que la définition de l'interface utilisateur comme code soit une expérience agréable pour réduire considérablement le besoin de changer de contexte. Pour cela, Dart 2 rend par exemple new et const optionnels. Comme vous pouvez le voir dans l'exemple suivant, Google explique que cela permet par exemple de nettoyer la définition d'un widget d'interface utilisateur afin qu'il n'utilise pas un seul mot-clé. Et bien d'autres changements à venir iront dans le même sens.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Before Dart 2
	Widget build(BuildContext context) {
	  return new Container(
	    height: 56.0,
	    padding: const EdgeInsets.symmetric(horizontal: 8.0),
	    decoration: new BoxDecoration(color: Colors.blue[500]),
	    child: new Row(
	      ...
	    ),
	  );
	}
	

	// After Dart 2
	Widget build(BuildContext context) =>
	  Container(
	    height: 56.0,
	    padding: EdgeInsets.symmetric(horizontal: 8.0),
	    decoration: BoxDecoration(color: Colors.blue[500]),
	    child: Row(
	      ...
	    ),
	  );
Avec les améliorations annoncées, Google estime que Dart 2 est un langage productif, propre et éprouvé qui répond aux défis du développement d'applications modernes. Vous pouvez l'essayer dans Flutter (le nouveau framework d'interface utilisateur mobile de Google permettant de créer des interfaces natives de haute qualité pour iOS et Android) et le SDK Dart à partir de la ligne de commande.

Source : Anders Thorhauge Sandholm

Et vous ?

Avez-vous déjà utilisé le langage de Google ? Qu’en pensez-vous ?
Croyez-vous qu'il est assez pertinent pour remplacer JavaScript ?
Qu’attendez-vous de ce langage ?

Voir aussi :

Quelques expériences de Dart avec LLVM donnent des résultats prometteurs qui pourraient être améliorés avec des optimisations du ramasse-miettes
Google se sert de Dart pour la refonte de l'interface de son gestionnaire d'annonces AdWords, un de ses ingénieurs explique les raisons de ce choix
Google publie Dart 1.9 qui apporte le support de la programmation asynchrone


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de marc.collin marc.collin - Membre éclairé https://www.developpez.com
le 23/02/2018 à 22:24
intéressant, mais je n'ai pas l'impression que Google pousse vraiment son produit.
Peu de projet l'utilise.. même s'il est possible de l'utiliser avec angular

est-ce que ça va finir comme GWT?
Avatar de Mootookoi Mootookoi - Membre à l'essai https://www.developpez.com
le 24/02/2018 à 16:32
Que va devenir Dart avec l'arrivée de WebAssembly ?
Avatar de marc.collin marc.collin - Membre éclairé https://www.developpez.com
le 25/02/2018 à 0:54
le web assembly ne spécife qu'un langage bas niveau... donc rien n'empeche de faire du dart et que ça soit convertie en web assembly
Avatar de abriotde abriotde - Membre éprouvé https://www.developpez.com
le 25/02/2018 à 17:33
Dart reste du Javascript améliorer avec notamment le typage des données. Cela permet d'améliorer les performances à l'exécution, Dart est aussi plus encore que Node.JS destiné à tourner côté serveur.... Je pense que Dart à un avenir s'il est intégrer au Javascript par la suite. Je vois Dart comme un langage de Proof Of Concept pour Javascript.
Avatar de zulad zulad - Membre confirmé https://www.developpez.com
le 27/03/2018 à 19:00
Citation Envoyé par Mootookoi Voir le message
Que va devenir Dart avec l'arrivée de WebAssembly ?
Je crois qu'il va simplement continuer d'évoluer. Regardez flutter.io, dart m'a l'air de tenir la route.
Contacter le responsable de la rubrique Accueil