Successfully reported this slideshow.

Introduction à dart

462 views

Published on

Dart, le nouveau langage Web de Google présenté au public en octobre 2011 a pour objectif de proposer une alternative au JavaScript.

Bien que la version finale ne soit pas encore disponible (pour cela il faudra attendre cet été), Dart est utilisable dès aujourd'hui.

Au cours de cette présentation sont introduits les éléments suivants :
- comment Dart permet de développer des applications clientes aussi bien que serveurs,
- le langage,
- les outils permettant un développement industrialisé et une productivité accrue.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Introduction à dart

  1. 1. DART Yohan BESCHI – Développeur Java @yohanbeschi +Yohan Beschi2013-02-13 Introduction à DART 1
  2. 2. Pourquoi ce talk ?CellTable<User> table = new CellTable<User>(); } });TextColumn<User> idColumn = new TextColumn<User>() { columnSortHandler.setComparator(firstNameColumn, @Override new Comparator<Tester.User>() { public String getValue(User user) { public int compare(User o1, User o2) { return user.id; if (o1 == o2) { } return 0;}; }TextColumn<User> firstNameColumn = new TextColumn<User>() { if (o1 != null) { @Override return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1; public String getValue(User user) { } return user.firstName; return -1; } }}; }); columnSortHandler.setComparator(lasteNameColumn,TextColumn<User> lastNameColumn = new TextColumn<User>() { new Comparator<Tester.User>() { @Override public int compare(User o1, User o2) { public String getValue(User user) { if (o1 == o2) { return user.lastName; return 0; } }}; if (o1 != null) {TextColumn<User> ageColumn = new TextColumn<User>() { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1; @Override } public String getValue(User user) { return -1; return user.age; } } });}; columnSortHandler.setComparator(ageColumn, new Comparator<Tester.User>() {idColumn.setSortable(true); public int compare(User o1, User o2) {firstNameColumn.setSortable(true); if (o1 == o2) {lastNameColumn.setSortable(true); return 0;ageColumn.setSortable(true); }table.addColumn(idColumn, "ID"); if (o1 != null) {table.addColumn(firstNameColumn, "First name"); return (o2 != null) ? o1.age.compareTo(o2.age) : 1;table.addColumn(lastNameColumn, "Lats name"); }table.addColumn(ageColumn, "Age"); return -1; }ListDataProvider<User> dataProvider = new ListDataProvider<User>(); });dataProvider.addDataDisplay(table); table.addColumnSortHandler(columnSortHandler); table.getColumnSortList().push(firstNameColumn);List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);}ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);columnSortHandler.setComparator(idColumn, new Comparator<Tester.User>() { public int compare(User o1, User o2) { if (o1 == o2) { return 0; } if (o1 != null) { return (o2 != null) ? o1.id.compareTo(o2.id) : 1; } return -1;2013-02-13 Introduction à DART 2
  3. 3. Pourquoi ce talk ?CellTable<User> table = new CellTable<User>(); } });TextColumn<User> idColumn = new TextColumn<User>() { columnSortHandler.setComparator(firstNameColumn, @Override new Comparator<Tester.User>() { public String getValue(User user) { public int compare(User o1, User o2) { return user.id; if (o1 == o2) { } return 0;}; }TextColumn<User> firstNameColumn = new TextColumn<User>() { if (o1 != null) { @Override return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1; public String getValue(User user) { } return user.firstName; return -1; } }}; }); columnSortHandler.setComparator(lasteNameColumn,TextColumn<User> lastNameColumn = new TextColumn<User>() { new Comparator<Tester.User>() { @Override public int compare(User o1, User o2) { public String getValue(User user) { if (o1 == o2) { return user.lastName; return 0; } }}; if (o1 != null) {TextColumn<User> ageColumn = new TextColumn<User>() { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1; @Override } public String getValue(User user) { return -1; return user.age; } } });}; columnSortHandler.setComparator(ageColumn, new Comparator<Tester.User>() {idColumn.setSortable(true); public int compare(User o1, User o2) {firstNameColumn.setSortable(true); if (o1 == o2) {lastNameColumn.setSortable(true); return 0;ageColumn.setSortable(true); }table.addColumn(idColumn, "ID"); if (o1 != null) {table.addColumn(firstNameColumn, "First name"); return (o2 != null) ? o1.age.compareTo(o2.age) : 1;table.addColumn(lastNameColumn, "Lats name"); }table.addColumn(ageColumn, "Age"); return -1; }ListDataProvider<User> dataProvider = new ListDataProvider<User>(); });dataProvider.addDataDisplay(table); table.addColumnSortHandler(columnSortHandler); table.getColumnSortList().push(firstNameColumn);List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);}ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);columnSortHandler.setComparator(idColumn, new Comparator<Tester.User>() { public int compare(User o1, User o2) { if (o1 == o2) { return 0; } if (o1 != null) { return (o2 != null) ? o1.id.compareTo(o2.id) : 1; } return -1;2013-02-13 Introduction à DART 3
  4. 4. Pourquoi ce talk ?Table<User> table = new Table (sorting:true) ..addColumn(ID, new TextCell((User o) => o.id)) ..addColumn(First name, new TextCell((User o) => o.firstName)) ..addColumn(Last name, new TextCell((User o) => o.lastName)) ..addColumn(Age, new TextCell((User o) => o.age)) ..setData(objs);2013-02-13 Introduction à DART 4
  5. 5. Pourquoi ce talk ?Table<User> table = new Table (sorting:true) ..addColumn(ID, new TextCell((User o) => o.id)) ..addColumn(First name, new TextCell((User o) => o.firstName)) ..addColumn(Last name, new TextCell((User o) => o.lastName)) ..addColumn(Age, new TextCell((User o) => o.age)) ..setData(objs); 6 lignes2013-02-13 Introduction à DART 5
  6. 6. Le gagnant pour moi ?2013-02-13 Introduction à DART 6
  7. 7. Il était une fois…2013-02-13 Introduction à DART 7
  8. 8. Productivité du programmeur2013-02-13 Introduction à DART 8
  9. 9. Application évolutive2013-02-13 Introduction à DART 9
  10. 10. Rapidité dexécution2013-02-13 Introduction à DART 10
  11. 11. Performance au démarrage2013-02-13 Introduction à DART 11
  12. 12. Larrivée de DART⦿ Open Source (BSD)⦿ Structuré⦿ Anti-Révolutionnaire⦿ Dans la mouvance des frameworks JS⦿ N’a pas pour objectif de casser le web2013-02-13 Introduction à DART 12
  13. 13. Classes abstraitesabstract class Validatable {}2013-02-13 Introduction à DART 13
  14. 14. Classes abstraitesabstract class Validatable { List<Object> valuesToValidate();}2013-02-13 Introduction à DART 14
  15. 15. Classes abstraitesabstract class Validator<T extends Validatable> {}2013-02-13 Introduction à DART 15
  16. 16. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { }}2013-02-13 Introduction à DART 16
  17. 17. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { } }}2013-02-13 Introduction à DART 17
  18. 18. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { if (StringUtils.isEmpty(obj.toString())) { } } }}2013-02-13 Introduction à DART 18
  19. 19. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { if (StringUtils.isEmpty(obj.toString())) { return false; } } return true; }}2013-02-13 Introduction à DART 19
  20. 20. Classes concrètesclass User {}2013-02-13 Introduction à DART 20
  21. 21. Classes concrètesclass User implements Validatable {}2013-02-13 Introduction à DART 21
  22. 22. Classes concrètesclass User implements Validatable { String username; String password;}2013-02-13 Introduction à DART 22
  23. 23. Classes concrètesclass User implements Validatable { String username; String password; User(this.username, this.password);}2013-02-13 Introduction à DART 23
  24. 24. Classes concrètesclass User implements Validatable { String username; String password; User(this.username, this.password); List<Object> valuesToValidate() { return [username, password]; }}2013-02-13 Introduction à DART 24
  25. 25. Mais ce n’est pas tout⦿ Mixins⦿ Optionnellement typé⦿ Gouverné par des fonctions de haut niveau⦿ Mono processus2013-02-13 Introduction à DART 25
  26. 26. Librairies disponibles⦿ Core ⦿ TU et Mocks⦿ HTML ⦿ Math⦿ Async ⦿ Logging⦿ IO ⦿ URI⦿ Crypto ⦿ I18N⦿ JSON ⦿ etc.⦿ Mirrors⦿ UTF2013-02-13 Introduction à DART 26
  27. 27. Futures / Callback Hell - JSgetWinningNumber( (int result1) { updateResult(1, result1); getWinningNumber( (int result2) { updateResult(2, result2); getWinningNumber( (int result3) { updateResult(3, result3); getWinningNumber( (int result4) { updateResult(4, result4); getWinningNumber( (int result5) { updateResult(5, result5); getWinningNumber( (int result6) { updateResult(6, result6); //snip getResultsString() }); }); }); }); });});2013-02-13 Introduction à DART 27
  28. 28. Futures / Callback Hell - Dartvoid main() { getFutureWinningNumber() .then(next(1)) .then(next(2)) .then(next(3)) .then(next(4)) .then(next(5)) .then(next(6));}Function next(int position) { return (int result) { updateResult(position, result); return getFutureWinningNumber(); };}2013-02-13 Introduction à DART 28
  29. 29. Isolates2013-02-13 Introduction à DART 29
  30. 30. Machines Virtuelles2013-02-13 Introduction à DART 30
  31. 31. Dartium2013-02-13 Introduction à DART 31
  32. 32. DartEditor2013-02-13 Introduction à DART 32
  33. 33. Plugins2013-02-13 Introduction à DART 33
  34. 34. dart2js2013-02-13 Introduction à DART 34
  35. 35. dart2js2013-02-13 Introduction à DART 35
  36. 36. dart2js⦿ Cible HTML5⦿ Tree Shaking⦿ Agrégation/Minification⦿ Optimisation2013-02-13 Introduction à DART 36
  37. 37. pub2013-02-13 Introduction à DART 37
  38. 38. pubpubspec.yamlname: pacifista_rocksdescription: The best application in the whole worldversion: 0.0.1dependencies: great_lib: any2013-02-13 Introduction à DART 38
  39. 39. dartdoc/// This is a single-line documentation comment./** * This is a multi-line documentation comment. * To generate the documentation: * $ dartdoc <filename> */void main() {}2013-02-13 Introduction à DART 39
  40. 40. dartdoc2013-02-13 Introduction à DART 40
  41. 41. Utilisation⦿ Création de sites Single-Page⦿ Création dapplication complètes⦿ Jeux HTML2013-02-13 Introduction à DART 41
  42. 42. RoadmapAujourdhui : M2 Mi-fevrier : M3 Été : V1 ! 2013-02-13 Introduction à DART 42
  43. 43. Aller plus loinDartLangFR ⦿ Mailing-list : dartlangfr (https://groups.google.com/forum/?fromgroups=&hl=en#!forum/dartlangfr) ⦿ Google+ : DartlangFR (https://plus.google.com/u/0/communities/104813951711720144450) ⦿ Twitter : @dartlang_fr ⦿ Blog : dartlangfr.netDartLang ⦿ Site officiel : www.dartlang.org ⦿ Mailing-list : dartlang (https://groups.google.com/a/dartlang.org/forum/?fromgroups&hl=en#!forum/misc) ⦿ Google+ : Dart (https://plus.google.com/+dartlang) ⦿ Google+ : Dartisans (https://plus.google.com/communities/114566943291919232850) ⦿ Twitter : @dart_lang ⦿ Blog : blog.dartwatch.com ⦿ Newsletter : Dart weekly2013-02-13 Introduction à DART 43
  44. 44. Des questions ?2013-02-13 Introduction à DART 44

×