Introduction à Dart

380 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 nous verrons :

comment Dart permet de développer des applications clientes aussi bien que serveurs,
quelques éléments du langage,
mais aussi les outils permettant un développement industrialisé et une productivité accrue.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
380
On SlideShare
0
From Embeds
0
Number of Embeds
55
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduction à Dart

  1. 1. Introduction à DART Yohan BESCHI – Développeur Java @yohanbeschi +Yohan Beschi2/13/13 Introduction à DART 1
  2. 2. Pourquoi ce talk ?CellTable<User> table = new CellTable<User>();TextColumn<User> idColumn = new TextColumn<User>() { @Override public String getValue(User user) { return user.id; }};TextColumn<User> firstNameColumn = new TextColumn<User>() { @Override public String getValue(User user) { return user.firstName; }};TextColumn<User> lastNameColumn = new TextColumn<User>() { @Override public String getValue(User user) { return user.lastName; }};TextColumn<User> ageColumn = new TextColumn<User>() { @Override public String getValue(User user) { return user.age; }};idColumn.setSortable(true);firstNameColumn.setSortable(true);lastNameColumn.setSortable(true);ageColumn.setSortable(true);table.addColumn(idColumn, "ID");table.addColumn(firstNameColumn, "First name");table.addColumn(lastNameColumn, "Lats name");table.addColumn(ageColumn, "Age");ListDataProvider<User> dataProvider = new ListDataProvider<User>();dataProvider.addDataDisplay(table);List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);2/13/13} Introduction à DART 2ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);
  3. 3. Pourquoi ce talk ?CellTable<User> table = new CellTable<User>();TextColumn<User> idColumn = new TextColumn<User>() { @Override public String getValue(User user) { return user.id; } es};TextColumn<User> firstNameColumn = new TextColumn<User>() { @Override gn public String getValue(User user) { return user.firstName; li }}; 0TextColumn<User> lastNameColumn = new TextColumn<User>() { @Override 10 public String getValue(User user) { return user.lastName; }}; d eTextColumn<User> ageColumn = new TextColumn<User>() { @Override s public String getValue(User user) { return user.age; lu }}; PidColumn.setSortable(true);firstNameColumn.setSortable(true);lastNameColumn.setSortable(true);ageColumn.setSortable(true);table.addColumn(idColumn, "ID");table.addColumn(firstNameColumn, "First name");table.addColumn(lastNameColumn, "Lats name");table.addColumn(ageColumn, "Age");ListDataProvider<User> dataProvider = new ListDataProvider<User>();dataProvider.addDataDisplay(table);List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);2/13/13} Introduction à DART 3ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);
  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);2/13/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 lignes2/13/13 Introduction à DART 5
  6. 6. Le gagnant pour moi ?2/13/13 Introduction à DART 6
  7. 7. Il était une fois…2/13/13 Introduction à DART 7
  8. 8. Productivité du programmeur2/13/13 Introduction à DART 8
  9. 9. Application évolutive2/13/13 Introduction à DART 9
  10. 10. Rapidité dexécution2/13/13 Introduction à DART 10
  11. 11. Performance au démarrage2/13/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 web2/13/13 Introduction à DART 12
  13. 13. Classes abstraitesabstract class Validatable {}2/13/13 Introduction à DART 13
  14. 14. Classes abstraitesabstract class Validatable { List<Object> valuesToValidate();}2/13/13 Introduction à DART 14
  15. 15. Classes abstraitesabstract class Validator<T extends Validatable> {}2/13/13 Introduction à DART 15
  16. 16. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { }}2/13/13 Introduction à DART 16
  17. 17. Classes abstraitesabstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { } }}2/13/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())) { } } }}2/13/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; }}2/13/13 Introduction à DART 19
  20. 20. Classes concrètesclass User {}2/13/13 Introduction à DART 20
  21. 21. Classes concrètesclass User implements Validatable {}2/13/13 Introduction à DART 21
  22. 22. Classes concrètesclass User implements Validatable { String username; String password;}2/13/13 Introduction à DART 22
  23. 23. Classes concrètesclass User implements Validatable { String username; String password; User(this.username, this.password);}2/13/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]; }}2/13/13 Introduction à DART 24
  25. 25. Mais ce n’est pas tout⦿ Mixins⦿ Optionnellement typé⦿ Gouverné par des fonctions de haut niveau⦿ Mono processus2/13/13 Introduction à DART 25
  26. 26. Librairies disponibles⦿ Core⦿ HTML⦿ Async⦿ IO⦿ Crypto⦿ JSON⦿ Mirrors⦿ UTF⦿ TU et Mocks⦿ Math⦿ Logging⦿ URI⦿ I18N⦿ etc.2/13/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() }); }); }); }); });});2/13/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(); };}2/13/13 Introduction à DART 28
  29. 29. Isolates2/13/13 Introduction à DART 29
  30. 30. Machines Virtuelles2/13/13 Introduction à DART 30
  31. 31. Dartium⦿ Cliquez pour modifier les styles du texte du masque ⦿ Deuxième niveau ⦿ Troisième niveau ⦿ Quatrième niveau ⦿ Cinquième niveau 2/13/13 Introduction à DART 31
  32. 32. DartEditor2/13/13 Introduction à DART 32
  33. 33. Plugins2/13/13 Introduction à DART 33
  34. 34. dart2js2/13/13 Introduction à DART 34
  35. 35. dart2js2/13/13 Introduction à DART 35
  36. 36. dart2js⦿ Cible HTML5⦿ Tree Shaking⦿ Agrégation/Minification⦿ Optimisation2/13/13 Introduction à DART 36
  37. 37. pub2/13/13 Introduction à DART 37
  38. 38. pubpubspec.yamlname: pacifista_rocksdescription: The best application in the whole worldversion: 0.0.1dependencies: great_lib: any2/13/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() {}2/13/13 Introduction à DART 39
  40. 40. dartdoc⦿ Cliquez pour modifier les styles du texte du masque ⦿ Deuxième niveau ⦿ Troisième niveau ⦿ Quatrième niveau ⦿ Cinquième niveau 2/13/13 Introduction à DART 40
  41. 41. Utilisation⦿ Création de sites Single-Page⦿ Création dapplication complètes⦿ Jeux HTML2/13/13 Introduction à DART 41
  42. 42. RoadmapAujourdhui : M2 Mi-fevrier : M3 Été : V1 ! 2/13/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 weekly2/13/13 Introduction à DART 43
  44. 44. Merci Des questions ?2/13/13 Introduction à DART 44

×