Dart JUG 2013

835 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
835
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Dart JUG 2013

  1. 1. Dart One language to rule them all … Sébastien Deleuze - @sdeleuze
  2. 2. Sébastien Deleuze Worldline   Lyon   ! Architecte logiciel (qui code)   Innovation Labs   ! Projets Open Sources
  3. 3. Dart, c’est quoi exactement ? 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
  4. 4. Une plateforme Open Source Langage Documentation API Outillage Machine
 virtuelle Compilateur
 Dart / Javascript Framework
 web Dépôt de paquets
  5. 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. 6. Environnements d’exécution Chrome (VM Dart) Autres navigateurs
 (dart2js + VM Javascript)
  7. 7. Environnements d’exécution Chrome (VM Dart) Serveur ? PaaS Autres navigateurs
 (VM Javascript) ? Android
  8. 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. 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. 10. Langage Fonctions Version longue // 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 courte // Display 0 2 4 6 in the console main() {
 [0, 1, 2, 3, 4, 5, 6].where((n) => n.isEven).forEach(print);
 }
  11. 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');   } Paramètres nommés et valeurs par défaut enableFlags({bool bold: false, bool hidden: false}) {   // ...   }   ! main() {   enableFlags();   enableFlags(bold: true);   enableFlags(bold: true, hidden: false);   }
  12. 12. Un langage facile à apprendre I am watching you !
  13. 13. Langage Mais aussi - Constructeurs nommés - Mixins - Modèle de thread léger proche d’Erlang - Métadatas - Generics - Reflection
  14. 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. 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. 16. Web components
  17. 17. Polymer.dart
  18. 18. Performance Démarrage 700 525 Sans  snapshot Avec  snapshot 350 175 0 Temps  de  chargement  d'un  programme  de  55000  lignes  (ms)
  19. 19. Performance Exécution 250 200 150 Javascript dart2js Dart  VM Java 100 50 0 DeltaBlue Richards Tracer
  20. 20. Performance Single instruction, multiple data (SIMD) 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; 1.0 5.0 6.0 2.0 10.0 12.0 3.0 4.0 + 12.0 20.0 = 15.0 24.0
  21. 21. Performance Taille javascript généré 180 135 AngularJS Dart AngularJS  +  jQuery 90 45 0 Taille  de  l'applicaJon  Todo  (Ko)
  22. 22. Outillage IDE : Dart Editor
  23. 23. Outillage IDE : pas obligé d’utiliser Eclipse Support de Dart dans Idea Intellij
 et WebStorm Spark
  24. 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. 25. Outillage pub.dartlang.org
  26. 26. Demos • Projet Dart « Fullstack»   • Three.dart
  27. 27. Conclusion Dart 1.0 est sorti, testez-le ... Quelques liens :   - http://news.dartlang.org   - http://gplus.to/dartlangfr - http://try.dartlang.org/ - https://github.com/sdeleuze/polymer-dart-blog Sébastien Deleuze - @sdeleuze

×