IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dart Discussion :

Dart 2.6 et s'accompagne de la possibilité de compiler des programmes Dart en exécutables autonomes


Sujet :

Dart

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    9 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 9 009
    Points : 208 299
    Points
    208 299
    Par défaut Dart 2.6 et s'accompagne de la possibilité de compiler des programmes Dart en exécutables autonomes
    Le SDK de Dart 2.6 est disponible et s'accompagne de la possibilité de compiler des programmes Dart en exécutables autonomes
    grâce à dart2native

    Google a annoncé la disponibilité de la version 2.6 de Dart, son langage de programmation Web. En fait, Dart propose déjà un ensemble complet de compilateurs permettant de créer du code optimisé en production pour les appareils mobiles et le Web. Ces compilateurs flexibles permettent de cibler un large éventail de formats : applications Flutter sur Android et iOS, applications Flutter sur le Web et sur desktop, applications AngularDart sur le Web et Google Assistant sur des systèmes embarqués.

    La disponibilité de Dart 2.6 s'est accompagnée de dart2native, une extension de l'ensemble de compilateurs existants, avec la possibilité de compiler des programmes Dart en exécutables autonomes contenant du code machine compilé à l'avance. Avec dart2native, vous pouvez créer des outils pour la ligne de commande sous macOS, Windows ou Linux à l'aide de Dart.

    Dart supporte la compilation AOT (ahead-of-time) en code machine natif depuis plusieurs années et Dart Native est donc une technologie relativement mature. Cependant, dans le passé, l'équipe a choisi de n’exposer cette fonctionnalité qu’aux appareils mobiles iOS et Android, via Flutter.

    Avec dart2native, l'équipe étend donc la prise en charge de la compilation native pour prendre en charge les systèmes d’exploitation desktop traditionnels exécutant macOS, Windows et Linux. Les exécutables créés avec dart2native étant autonomes, ils peuvent être exécutés sur des machines sur lesquelles Dart SDK n’est pas installé. Et comme ils sont compilés avec le compilateur AOT de Dart, les exécutables se lancent en quelques millisecondes. Comme avec d'autres compilateurs et runtimes Dart, le même ensemble de bibliothèques principales riches et cohérentes est disponible dans Dart lors de la compilation en code natif.

    Nom : dart.gif
Affichages : 16089
Taille : 1,87 Mo

    Création d'applications de ligne de commande avec dart2native

    Le compilateur dart2native est donc un moyen de créer et déployer des applications basées sur Dart pour la ligne de commande. Ces applications utilisent souvent des bibliothèques telles que dart:io (E/S de base), package:http (mise en réseau) et package:args (analyse des arguments). Passons en revue les bases de la compilation d’une application «hello, world» en un exécutable:

    Le code source hello.dart:

    Code Dart : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    main() {
      print(‘Hello Dart developers’);
    }

    Compilez hello.dart en un hello exécutable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ dart2native src/hello.dart -o hello
    Generated: /Users/mit/hello
    Exécuter la mesure du temps d'exécution de hello:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ time ./hello
    Hello Dart developersreal 0m0.049s
    user 0m0.018s
    sys 0m0.020s
    Interopérabilité avec le code C via dart:ffi

    Les applications natives doivent souvent accéder aux fonctionnalités natives du système d'exploitation environnant. Ces API système sont généralement exposées dans des bibliothèques natives basées sur C et Dart prend en charge l’interopérabilité avec ces bibliothèques via dart:ffi, le nouveau mécanisme d’interopérabilité C qui a été lancé en préversion dans Dart 2.5. Le compilateur dart2native est compatible avec dart:ffi, vous pouvez donc créer et compiler nativement des applications Dart qui l’utilisent.

    Un membre de l’équipe a récemment utilisé dart:ffi pour créer une bibliothèque dart_console destinée au développement d’applications pour console, qui permet notamment de connaître les dimensions de la fenêtre, de lire et de définir l’emplacement du curseur, de gérer les couleurs et de lire les clés et les séquences de contrôle. La possibilité d'utiliser dart:ffi fait de Dart un langage très puissant pour les applications en console.

    kilo: un éditeur de code de 7 Mo écrit en moins de 500 lignes de code Dart

    En utilisant les bibliothèques Dart Core, dart:ffi et la bibliothèque dart_console, l'équipe assure qu'il est possible de créer des applications de console très intéressantes. Le paquet dart_console comprend une démo complète de kilo, un éditeur de texte de console écrit en seulement 500 lignes de code Dart. Le nom kilo vient de son origine, kilo.c, qui était une implémentation en C dans environ 1000 lignes de code.

    Selon l'équipe, avec le nouveau compilateur dart2native, nous pouvons facilement le conditionner, et nous nous retrouvons avec un éditeur de code autonome de 7 Mo.

    Nom : ffi.jpg
Affichages : 2885
Taille : 25,4 Ko

    Développer des services avec dart2native

    Une autre utilisation potentielle du compilateur dart2native concerne les petits services, par exemple, un backend supportant une application frontend écrite en utilisant Flutter. Ces dernières années, l'utilisation de services fonctionnant sur des ordinateurs sans serveur est une tendance croissante. Il s’agit de services entièrement gérés qui s’échelonnent automatiquement, offrant ainsi la possibilité de réduire considérablement les coûts, car ils ne sont facturés que lorsqu’ils sont réellement exécutés.

    Pour les backend sans serveur, il est essentiel que le service démarre rapidement. Traditionnellement, les services basés sur Dart fonctionnaient avec le compilateur JIT, mais l’exécution basée sur JIT a une latence élevée au démarrage, car le code doit être compilé et mis en température avant de pouvoir être exécuté. En compilant le code de votre service ahead-of-time en code natif, vous pouvez éviter cette latence. De plus, avec du code natif, vous pouvez créer des services Dart dotés d’une empreinte de disque réduite et qui sont autonomes, ce qui réduit considérablement la taille du conteneur dans lequel le service Dart est exécuté. Le développeur de Dart, Paul Mundt, a récemment documenté ses expériences avec l’utilisation du compilateur dart2native; il était en mesure de réduire la taille de son image Docker de 220 Mo à 91 % en utilisant du code compilé par JIT, à seulement 20 Mo en utilisant du code natif!

    Télécharger le SDK de Dart 2.6

    Source : Google

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Vu l'évolution et le support de Dart par Google, je mets ma main à couper que ce langage est promis à un avenir radieux.
    Il est presque deux fois plus véloce que Javascript, possède une syntaxe très légère, fortement typée et optionnelle, le moteur d'inférence est un des meilleurs que j'ai vu.
    La VM pour l'instant n'existe qu'en standalone mais je pense sérieusement que Google finira par l'implémenter dans Chrome (ils avaient déjà fait un pas dans ce sens mais ont finalement fait marche arrière).
    En tout cas, vu l'adoption de Flutter (entièrement basé sur Dart) et maintenant la possibilité de pondre des exécutables, c'est certain, Dart va continuer a étendre son emprise (au détriment de Java...)

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    Mai 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 429
    Points : 1 630
    Points
    1 630
    Par défaut
    @rawsrc, +1, Concernant l'avenir radieux de Dartlang chez Google.

    Par contre quand tu écrit
    Il est presque deux fois plus véloce que Javascript, possède une syntaxe très légère, fortement typée et optionnelle, le moteur d'inférence est un des meilleurs que j'ai vu.
    J'ai dû louper le côté "syntaxe très légère".
    Ils ont choisis une syntaxe JAVAesque à dessein certes, mais elles est loin de faire l'unanimité.
    De ce que j'en est vu, la communauté du début (avant Dart 1) attendez soit un successeur syntaxique à Smalltalk mais avec une VM mise aux gouts du jour, soit un langage beaucoup plus inspiré du côté fonctionnel de la force.
    Et je croit donc que pas mal de monde a été déçu de ce côté là.
    De plus il a vraiment fallut attendre l'ouverture de Flutter par Google, avec Dart 2, pour que les gens recommence à s'y intéresser (de nouveau).
    Mais tu a raison, ça n'enlève rien au fait que la plateforme qu'est en train de mettre en place Google avec Dart est très intéressante et ce pose de plus en plus comme une alternatives multiplateforme sérieuse (on peut l'évoquer en réunion sans passé pour un alien ) face à Node, JAVA et/ou .Net.

  4. #4
    Membre émérite
    Profil pro
    retraité
    Inscrit en
    Décembre 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 842
    Points : 2 423
    Points
    2 423
    Par défaut
    Exact il va prendre de l'essor surtout qu'il y a maintenant des implémentations pour le Desktop. Ce que j'aimerais, car je maîtrise mieux le C++ que le Dart, c'est un flutter "natif" en C++, sans être obligé de faire une IHM en flutter+Dart et le métier en C++, mais directement tout faire en C++. Et là cela concurrencerait Qt sans problème vu la licence permissive.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    Mai 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 429
    Points : 1 630
    Points
    1 630
    Par défaut
    De mémoire il me semble qu'il y a toujours eu une implémentation "Desktop", la dartvm en standalone.
    Par contre le manque de FFI et le fait que des Widgets soit livrer d'office avec Flutter facilite vraiment la chose, c'est vrai.
    Cependant ça a toujours était "possible" puisque Dart était à l'origine destiné à être "embedded" dans les navigateurs/apps qui lui fournissaient donc la partie GUI (ce que fait Flutter, pour les parties bas niveau).
    Par contre, je ne voit pas l'intérêt de faire du Flutter en full C++, autant faire du Qt/Gtk/wxWidget/FLTK/...etc.
    Si c'est un problème de tarif, c'est vrai que Qt n'est pas donné (en licence Commerciale), mais j'aurais tendance à dire que tout travail (très bon qu'y plus est) mérite salaire.
    Au pire Flutter utilise en bas niveau des lib en C++ tout à fait utilisable dans un projet tiers (licence BSD/MIT/Apache, à vérifier), mais la ça demandera beaucoup plus de travail je pense .

  6. #6
    Membre émérite
    Profil pro
    retraité
    Inscrit en
    Décembre 2010
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 842
    Points : 2 423
    Points
    2 423
    Par défaut
    Disons que l'intérêt de pouvoir coder en C++ amènerait une communauté supplémentaire car au final en C++ côté GUI à part Qt qui explose la concurrence en même temps que ces tarifs, le reste a l'air un peu mort ou ne fonctionne pas bien en multi-plâteforme. Qt s'oriente beaucoup sur l'automobile et les entreprises je trouve, ce qui le détache un peu du départ. Après tout travail mérite salaire c'est sûr et s'ils y trouvent plus d'intérêts c'est complètement logique.
    De plus Qt n'est pas entièrement adapté au monde du mobile, flutter permet du hot-reloading qui est très intéressant

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    Mai 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 429
    Points : 1 630
    Points
    1 630
    Par défaut
    Je crois comprendre ce que tu veut dire, mais pour le coups, ce serait bien deux communauté distinct utilisant quelques libs bas niveau, au mieux.
    On perdrait tous les avantages d'avoir un langage compilable simplement/rapidement à la voler (et donc le hot-reloading, le multi-plateforme simple, ...etc)
    Et au vu de la complexité et des contraintes qu'imposeraient le C++ sur une plateforme tel que Flutter, je ne voit pas comment ce serait possible.
    Mais je suis loin d'avoir la science infuse et si ça ce trouve c'est très faisable , je ne l'ai juste jamais vu.

  8. #8
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Vu l'évolution et le support de Dart par Google, je mets ma main à couper que ce langage est promis à un avenir radieux.
    Il est presque deux fois plus véloce que Javascript, possède une syntaxe très légère, fortement typée et optionnelle, le moteur d'inférence est un des meilleurs que j'ai vu.
    La VM pour l'instant n'existe qu'en standalone mais je pense sérieusement que Google finira par l'implémenter dans Chrome (ils avaient déjà fait un pas dans ce sens mais ont finalement fait marche arrière).
    En tout cas, vu l'adoption de Flutter (entièrement basé sur Dart) et maintenant la possibilité de pondre des exécutables, c'est certain, Dart va continuer a étendre son emprise (au détriment de Java...)
    J'ai réfléchi quelques-temps comment développer pour iOS:
    angular ou react, finalement react native mais c'est du javascript, donc lent...
    Ensuite Swift mais des prob pour installer Xcode...
    Et Flutter: c'est rapide, pas trop gourmand, ressemble à Java, cross-plateformes et ne semble pas lourd-dingue, avec de jolis effets qui seraient difficiles sous Android...

    Je vais m'intéresser à ce FW + Dart.

    Rem: j'ai déjà vu une applic similaire à ce que je veux porter.
    Agréablement fluide...

    Que du bon pour l'instant.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/10/2019, 16h52
  2. [Turbo Pascal] Cherche disquette d'accompagnement livre "Turbo initiation programmation Pascal"
    Par Bruno PICART dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 23/10/2008, 19h41
  3. index partitionné, seul ou accompagné ?
    Par olivanto dans le forum Administration
    Réponses: 7
    Dernier message: 27/02/2008, 15h13
  4. Réponses: 0
    Dernier message: 01/01/2008, 13h00
  5. Réponses: 2
    Dernier message: 28/07/2006, 19h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo