0
Introduction à                        DART          Yohan BESCHI – Développeur Java                   @yohanbeschi        ...
Pourquoi ce talk ?CellTable<User> table = new CellTable<User>();TextColumn<User> idColumn = new TextColumn<User>() {    @O...
Pourquoi ce talk ?CellTable<User> table = new CellTable<User>();TextColumn<User> idColumn = new TextColumn<User>() {    @O...
Pourquoi ce talk ?Table<User> table = new Table (sorting:true)  ..addColumn(ID, new TextCell((User o) => o.id))  ..addColu...
Pourquoi ce talk ?Table<User> table = new Table (sorting:true)  ..addColumn(ID, new TextCell((User o) => o.id))  ..addColu...
Le gagnant pour moi ?2/13/13              Introduction à DART   6
Il était une fois…2/13/13               Introduction à DART   7
Productivité du programmeur2/13/13             Introduction à DART   8
Application évolutive2/13/13              Introduction à DART   9
Rapidité dexécution2/13/13              Introduction à DART   10
Performance au démarrage2/13/13             Introduction à DART   11
Larrivée de DART⦿ Open Source (BSD)⦿ Structuré⦿ Anti-Révolutionnaire⦿ Dans la mouvance des frameworks JS⦿ N’a pas pour obj...
Classes abstraitesabstract class Validatable {}2/13/13                Introduction à DART   13
Classes abstraitesabstract class Validatable {  List<Object> valuesToValidate();}2/13/13                 Introduction à DA...
Classes abstraitesabstract class Validator<T extends Validatable> {}2/13/13                Introduction à DART          15
Classes abstraitesabstract class Validator<T extends Validatable> {  bool validate(T object) {     }}2/13/13              ...
Classes abstraitesabstract class Validator<T extends Validatable> {  bool validate(T object) {    for (Object obj in objec...
Classes abstraitesabstract class Validator<T extends Validatable> {  bool validate(T object) {    for (Object obj in objec...
Classes abstraitesabstract class Validator<T extends Validatable> {  bool validate(T object) {    for (Object obj in objec...
Classes concrètesclass User {}2/13/13             Introduction à DART   20
Classes concrètesclass User implements Validatable {}2/13/13                Introduction à DART   21
Classes concrètesclass User implements Validatable {  String username;  String password;}2/13/13                Introducti...
Classes concrètesclass User implements Validatable {  String username;  String password;     User(this.username, this.pass...
Classes concrètesclass User implements Validatable {  String username;  String password;     User(this.username, this.pass...
Mais ce n’est pas tout⦿ Mixins⦿ Optionnellement typé⦿ Gouverné par des fonctions de haut niveau⦿ Mono processus2/13/13    ...
Librairies disponibles⦿ Core⦿ HTML⦿ Async⦿ IO⦿ Crypto⦿ JSON⦿ Mirrors⦿ UTF⦿ TU et Mocks⦿ Math⦿ Logging⦿ URI⦿ I18N⦿ etc.2/13...
Futures / Callback Hell - JSgetWinningNumber( (int result1) {  updateResult(1, result1);  getWinningNumber( (int result2) ...
Futures / Callback Hell - Dartvoid main() {    getFutureWinningNumber()         .then(next(1))         .then(next(2))     ...
Isolates2/13/13              Introduction à DART   29
Machines Virtuelles2/13/13              Introduction à DART   30
Dartium⦿ Cliquez pour modifier les styles du texte du masque  ⦿ Deuxième niveau  ⦿ Troisième niveau         ⦿ Quatrième ni...
DartEditor2/13/13                Introduction à DART   32
Plugins2/13/13             Introduction à DART   33
dart2js2/13/13             Introduction à DART   34
dart2js2/13/13             Introduction à DART   35
dart2js⦿ Cible HTML5⦿ Tree Shaking⦿ Agrégation/Minification⦿ Optimisation2/13/13             Introduction à DART   36
pub2/13/13         Introduction à DART   37
pubpubspec.yamlname: pacifista_rocksdescription: The best application in the whole worldversion: 0.0.1dependencies:      g...
dartdoc/// This is a single-line documentation comment./** * This is a multi-line documentation comment. * To generate the...
dartdoc⦿ Cliquez pour modifier les styles du texte du masque  ⦿ Deuxième niveau  ⦿ Troisième niveau         ⦿ Quatrième ni...
Utilisation⦿ Création de sites Single-Page⦿ Création dapplication complètes⦿ Jeux HTML2/13/13                 Introduction...
RoadmapAujourdhui : M2 Mi-fevrier : M3                         Été : V1 ! 2/13/13                           Introduction à...
Aller plus loinDartLangFR     ⦿ Mailing-list : dartlangfr (https://groups.google.com/forum/?fromgroups=&hl=en#!forum/dartl...
Merci          Des questions ?2/13/13        Introduction à DART   44
Upcoming SlideShare
Loading in...5
×

Introduction à Dart

214

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
214
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×