Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dart, one language to rule them all

Dart, one language to rule them all

5778521f67d80de0ee3b213e4f159a59?s=128

Sébastien Deleuze

May 18, 2013
Tweet

Transcript

  1. Dart One language to rule them all … Sébastien Deleuze

    - @sdeleuze
  2. Worldline   Lyon   ! Architecte logiciel (qui code)  

    Innovation Labs   ! Projets Open Sources Sébastien Deleuze
  3. Un langage structuré et flexible pour les développements Web (mais

    pas que)   ! Destiné aux navigateurs modernes   ! Pour améliorer la
 maintenabilité et l’efficacité de nos développements Dart, c’est quoi exactement ?
  4. Une plateforme Open Source Langage Outillage Machine
 virtuelle Documentation API

    Framework
 web Compilateur
 Dart / Javascript Dépôt de paquets
  5. Comparaison = Orienté Objet = Facile à apprendre = Performance

    de la JVM != Dette technologique = Les fonctions sont «first class citizens» = API asynchrone != Dart est fourni «battery-included» Modèle de thread Gestion de la concurence
  6. Environnements d’exécution Chrome (VM Dart) Autres navigateurs
 (dart2js + VM

    Javascript)
  7. Environnements d’exécution Chrome (VM Dart) Serveur Autres navigateurs
 (VM Javascript)

    Android PaaS ? ?
  8. Langage Orienté objet, typage optionnel et interpolation de chaines import

    'dart:math';
 ! class Point {   num x, y;   ! Point(this.x, this.y);   ! num distanceTo(Point other) {   var dx = x - other.x;   var dy = y - other.y;   return sqrt(dx * dx + dy * dy);   }   }   ! main() {   var a = new Point(2, 3);   var b = new Point(3, 4);   print('distance from a to b = ${a.distanceTo(b)}');   }
  9. Langage Interfaces implicites class Person {   final _name;  

    Person(this._name);   String greet(who) => 'Hello, $who. I am $_name.';   }   ! class Bro implements Person {   String greet(who) => 'Hi $who. What’s up?';   }
  10. Langage Fonctions // Display 0 2 4 6 in the

    console main() {
 [0, 1, 2, 3, 4, 5, 6].where((n) => n.isEven).forEach(print);
 } // Display 0 2 4 6 in the console main() { var array = [0, 1, 2, 3, 4, 5, 6]; for(var n in array) { if(n.isEven) { print(n); }
 } } Version longue Version courte
  11. Langage Paramètres optionnels et valeurs par défaut String say(String from,

    String msg, [String channel='email']) {   // ...   }   ! main() {   say('Bob', 'Howdy');   say('Bob', 'Howdy', 'smoke signal');   } enableFlags({bool bold: false, bool hidden: false}) {   // ...   }   ! main() {   enableFlags();   enableFlags(bold: true);   enableFlags(bold: true, hidden: false);   } Paramètres nommés et valeurs par défaut
  12. Un langage facile à apprendre I am watching you !

  13. Langage Mais aussi - Constructeurs nommés - Mixins - Modèle

    de thread léger proche d’Erlang - Métadatas - Generics - Reflection
  14. API dart:html import 'dart:html';   ! main() {   !

    var message = query('#msg');   ! var b = new ButtonElement()   ..classes.add('important')   ..text = 'Bro Code'   ..onClick.listen((e) => message.text = '''A bro does not dare/challenge another bro to do anything they wouldn’t try them self''');   ! document.body.children.add(b);   ! }
  15. API dart:io import 'dart:io';   ! main() {   HttpServer.bind('127.0.0.1',

    8080).then((server) {   server.listen((HttpRequest request) {   request.response   ..write('A bro cannot give another bro a Teddy bear')   ..close();   });   print('web server started !');   });   }
  16. Web components

  17. Polymer.dart

  18. Performance 0 175 350 525 700 Temps  de  chargement  d'un

     programme  de  55000  lignes  (ms) Sans  snapshot Avec  snapshot Démarrage
  19. Performance 0 50 100 150 200 250 DeltaBlue Richards Tracer

    Javascript dart2js Dart  VM Java Exécution
  20. Performance Single instruction, multiple data (SIMD) 1.0 5.0 6.0 2.0

    10.0 12.0 3.0 12.0 15.0 4.0 20.0 24.0 + = var a = new Float32x4(1.0, 2.0, 3.0, 4.0);
 var b = new Float32x4(5.0, 10.0, 15.0, 20.0);
 var c = a + b;
  21. Performance Taille javascript généré 0 45 90 135 180 Taille

     de  l'applicaJon  Todo  (Ko) AngularJS Dart AngularJS  +  jQuery
  22. Outillage IDE : Dart Editor

  23. Outillage IDE : pas obligé d’utiliser Eclipse Spark Support de

    Dart dans Idea Intellij
 et WebStorm
  24. Outillage pub name: myproject
 version: 1.1.0   description: Sample application

      author: Sébastien Deleuze   homepage: http://jyuro.org   documentation: http://jyuro.org/doc   dependencies:   route: 0.4.5
 mustache : '>=0.1.5'
 mylib:   git: git://github.com/jyuro/mylib.git   dev_dependencies:   unittest: any
  25. Outillage pub.dartlang.org

  26. Demos • Projet Dart « Fullstack»   • Three.dart

  27. Conclusion Sébastien Deleuze - @sdeleuze Quelques liens :   -

    http://news.dartlang.org   - http://gplus.to/dartlangfr - http://try.dartlang.org/ - https://github.com/sdeleuze/polymer-dart-blog Dart 1.0 est sorti, testez-le ...