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]}!'); } |
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( ... ), ); |
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