Remarque: Rejoignez la communauté russophone de Dart sur Telegram , Slack et Google+ . Et à la fin de l'article, vous trouverez une petite annonce.
La renaissance de Dart en tant que langage de programmation populaire pour le développement mobile et web
Aujourd'hui, nous annonçons la sortie de la version stable du langage de programmation Dart - 2.0, ainsi que de la plate-forme Web Dart, qui offre une combinaison unique de productivité, de performances et d'évolutivité.

Les développeurs de Flutter profitent des nombreuses fonctionnalités de Dart 2 depuis que Flutter utilise des versions préliminaires du SDK Dart 2 depuis plusieurs mois maintenant. Néanmoins, la sortie de la version stable de Dart 2 est une autre étape importante vers la sortie de Flutter en raison de la connexion étroite entre le framework et le langage. Si vous n'avez pas encore installé Flutter, vous pouvez l'
essayer maintenant .
Avec la sortie de Dart 2, les développeurs Web peuvent désormais utiliser cette version du langage, toutes les bibliothèques et tous les outils bénéficieront d'un certain nombre d'améliorations spécifiques au Web. Toutes les informations nécessaires sur l'installation et la création de la première application se trouvent
ici .
Dart: une popularité croissante
Dart 2 est une étape importante sur la voie de la relance de Dart en tant que langage de programmation populaire axé sur le développement rapide et pratique d'applications mobiles et Web. Nous voulons que les développeurs qui créent des applications clientes soient productifs: avec un langage, un framework et des composants qui réduisent le code standard et leur permettent de se concentrer sur la logique métier, ainsi que des outils qui identifient les erreurs dès le début, aident au débogage et génèrent des compacts et code rapide.
Nous avons constaté une forte augmentation de la popularité de Dart au cours de la dernière année. Nos propres analyses montrent une multiplication par dix de l'utilisation externe. Le trimestre dernier, Dart était l'
une des langues à la
croissance la plus rapide sur GitHub mesurée par pull request;
les questions croissantes de StackOverflow montrent également une tendance positive dans la popularité de Dart:

Pour Google, Dart est l'une des rares langues que nous utilisons pour développer des applications Web avec des millions de lignes de code provenant de nombreux projets différents, y compris Google Ads, Google Shopping et nos propres projets d'infrastructure interne.
En fait, vous pouvez déjà utiliser Dart sans vous en rendre compte: le
préprocesseur de style Sass populaire a récemment été
réécrit dans Dart pour le rendre plus rapide, plus portable et plus facile à développer. Sass est maintenant distribué en tant qu'exécutable autonome sur Homebrew et Chocolatey et compilé pour JavaScript sur npm. Dart facilite l'installation d'applications n'importe où sans dépendances externes, ainsi que le déploiement de workflows pour les utilisateurs qui écrivent sur Dart, ainsi que pour les utilisateurs qui ne le font pas.

Dart 2 se concentre sur trois aspects: le
renforcement et le resserrement du langage, le développement de notre prise en charge des plateformes Web et mobiles et la création d'outils et de composants qui prennent en charge l'utilisation de Google Dart pour le monde extérieur. Le reste de cet article couvrira ces trois sujets.
Dart 2: un langage optimisé pour le développement client
Comme nous l'avons
dit en février (
version russe )
, le système de type Dart est
explicite . Cela signifie qu'avant que les utilisateurs lancent votre application, elle passera par l'étape d'analyse et de compilation, au cours de laquelle une large classe de problèmes est souvent découverte. Lorsque nous avons adapté Dart à des applications extrêmement volumineuses sur Google, le système de type a détecté de nombreuses erreurs à un stade précoce de développement, ce qui a conduit à la création d'un meilleur code.
Avec Dart 2, vous ne pouvez pas entrer dans un état dans lequel une expression est exécutée avec une valeur qui ne correspond pas au type statique de cette expression. Cela signifie que vous pouvez adapter votre base de code à des millions de lignes, refactoriser de grands projets et déployer votre code en production, en ayant confiance en lui.
Ne vous inquiétez pas:
explicite ne signifie pas des montagnes de code inutile. Le système de types inclut une sortie étendue - même pour
les arguments de type
génériques .
final _field = [3.14, 6.28]; void main() { // , <int> print([1, 2, 3].runtimeType); // List<int> // , // int (1) double (3.14) `num` print([1, 3.14].runtimeType); // List<num> // print(_field.runtimeType); // List<double> }
En savoir plus sur le système de type Dart 2 sur
cette page.
Comme mentionné dans les articles de blog précédents, Dart 2 réduit également le bruit de la langue dans plusieurs domaines clés: par exemple, le
nouveau mot clé est désormais facultatif et le mot clé
const est facultatif dans le
contexte approprié .
Enfin, nous avons fait beaucoup de travail en arrière-plan pour unifier les différents outils d'aide, qui sont désormais unis par une
interface commune qui prend en charge nos compilateurs et nos
runtimes . Cela offre une cohérence à nos utilisateurs et promet d'améliorer la vitesse et la qualité des nouvelles fonctionnalités à mesure que Dart continue d'évoluer.
Dart 2 sur le Web: un cadre riche et puissant
Les applications Web depuis le tout début ont été au cœur de la mission de Darth. En fait, la plupart des développements Dart de Google concernent des applications Web. L'un des plus importants est Google Ads, qui génère des milliards de dollars d'économie en ligne. Dans le processus de portage du code vers Dart, ils ont réduit la taille de la base de code de l'interface utilisateur de 40%, tout en améliorant les performances et la qualité des applications.
Alors que le Dart SDK de base fournit des bibliothèques pour accéder aux API de navigateur modernes, nous prenons également en charge un cadre robuste basé sur les angles pour la création d'applications Web complexes.
AngularDart 5 , livré dans le cadre de Dart 2, tire parti du système de type Dart
explicite et du
nouveau système de génération (décrit ci-dessous) afin que l'utilisateur puisse utiliser des générations incrémentielles rapides au moment de la conception et un code JavaScript compilé plus compact.
L'une des principales directions de cette version était de réduire la quantité de code qui est traitée lors du chargement de la page, ce qui réduit considérablement le «temps d'interactivité» des pages Web. Dans de nombreuses applications, la taille du code a été réduite de plus de moitié par rapport à AngularDart 4.
Pour démontrer les améliorations de la plate-forme Web Dart, nous avons créé une
implémentation client basée sur Dart pour le site Web HackerNews en tant
qu'application Web progressive; il est publié avec d'autres exemples sur le site Web populaire de
HNPWA . En utilisant les meilleures pratiques pour créer des applications Web sur Dart, nous avons pu créer une application entièrement fonctionnelle qui est entièrement interactive en une seconde sur les appareils modernes et jusqu'à cinq secondes sur un appareil mobile modeste dans un réseau 3G lent. Ceci est compétitif même par rapport aux frameworks Web légers optimisés pour les petites applications.
https://hnpwa.dartlang.org/Nos investissements dans l'infrastructure s'étendent également à notre
bibliothèque de composants , que nous avons également mise à jour. Vous avez maintenant accès à 100 nouvelles classes, y compris divers
composants de matériaux . Vous pouvez explorer tous nos composants dans
la galerie de composants .
Le sélecteur de date de matériau est l'un des composants disponibles pour votre application Web.
Boîte à outils pour Dart 2
Avec Dart 2, Dart devient le langage compilé en JavaScript de première classe, avec le cycle de développement attendu par les développeurs Web et d'excellentes fonctionnalités de performance d'exécution. Ceci est réalisé grâce aux avantages que la plupart des langages orientés JS ne fournissent pas: un système de type
explicite et un excellent support pour les applications mobiles natives.
Avec Dart 2, nos outils Web couvrent un modèle de développement 100% JavaScript avec deux compilateurs JavaScript supplémentaires. Le compilateur de développement,
dartdevc , fournit une compilation incrémentielle rapide lors de la génération de JavaScript facile à lire et à déboguer. Cela permet à notre compilateur
dart2js de se concentrer sur la création de JavaScript hautement optimisé pour les applications Web avancées pour les applications de bureau d'entreprise mobiles et complexes. Les deux compilateurs utilisent le système de type Dart explicite pour optimiser leur sortie.
Nos outils Web sont basés sur un
nouveau système de construction conçu pour être rapide, débogué et extensible. Désormais, les tâches telles que la génération de code de sérialisation, la compilation de Sass en CSS et la compilation de Dart en JavaScript, se déroulent toutes dans une seule chaîne d'outils, qui prend en charge les mises à jour rapides et incrémentielles au fur et à mesure des modifications de votre application. Le système de génération est également conçu pour prendre en charge une utilisation en dehors du Web. Exemple: il est utilisé par les développeurs Flutter pour générer du code pour la
sérialisation en JSON .
Avec Dart 2, nous avons un ensemble étendu d'outils pour les développeurs. En plus de prendre en charge
les outils
Android Studio et JetBrains, notamment
IntelliJ IDEA et
WebStorm , nous prenons également en charge
Visual Studio Code avec l'extension
Dart Code . Et nous avons également une plateforme d'expérimentation:
DartPad , qui a été complètement mise à jour pour Dart 2.
Enfin, le SDK Dart est livré avec un ensemble d'autres outils utiles: un gestionnaire de packages qui fonctionne avec notre
site Web , un
analyseur statique , un linter que vous pouvez utiliser à partir de la ligne de commande ou en tant que package, ainsi que des outils de
documentation Web et de
mise en forme conformes
aux normes linguistiques. Dart .
En savoir plus
Consultez notre guide de démarrage
Flutter et la
boîte à outils Web Dart .
Les
notes de publication fournissent des informations techniques détaillées sur de nombreuses autres améliorations mineures apportées depuis Dart 1, dont certaines sont essentielles. Si vous rencontrez des problèmes que Google ne peut pas résoudre, nous vous recommandons de commencer avec
StackOverflow . Inscrivez-vous à la newsletter
Dart Announcements et suivez-nous sur
Twitter pour recevoir des mises à jour. Nous aimerions également vous voir dans nos communautés, par exemple, dans
Gitter et
r / dartlang reddit .
Je vous remercie
Dart est devenu un langage polyvalent optimisé pour le développement sur le Web et sur les appareils mobiles. Nous travaillons sur Dart 2 depuis plusieurs années, période pendant laquelle il a affecté tous les aspects de notre écosystème et a nécessité la migration de millions de lignes de code et de centaines de packages.
Nous remercions les communautés
Dart et
Flutter , ainsi que les centaines d'ingénieurs Google qui nous ont aidés dans cette aventure. Nous n'aurions pas pu le faire sans vous!
De la communauté
Je tiens à féliciter l'équipe de développement de Dart pour un événement aussi important, c'est vraiment une étape majeure pour le développement du langage. Bien sûr, la plupart des mots de cet article peuvent vous sembler assez
discutables , vous pouvez en discuter à la fois dans les commentaires et dans nos chats
Telegram ,
Slack et
Google+ .
Et l'annonce promise: en plus des petits mitaps, nous organisons des grands événements annuels dédiés au langage, aux outils, Flutter, AngularDart et tout ce qui s'y rattache. L'année dernière, nous avons reçu la visite d'ingénieurs de Google, nous avons
brassé une bière spéciale, et en général c'était amusant. Cette année, nous allons essayer de faire encore mieux! Par conséquent, réservez fin novembre - début décembre et restez à l'écoute pour les annonces.