Weitere ähnliche Inhalte Ähnlich wie Introduction à dart (7) Kürzlich hochgeladen (20) Introduction à dart1. DART
Yohan BESCHI – Développeur Java
@yohanbeschi
+Yohan Beschi
2013-02-13 Introduction à DART 1
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. 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. 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. 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 lignes
2013-02-13 Introduction à DART 5
12. L'arrivée de DART
⦿ Open Source (BSD)
⦿ Structuré
⦿ Anti-Révolutionnaire
⦿ Dans la mouvance des frameworks JS
⦿ N’a pas pour objectif de casser le web
2013-02-13 Introduction à DART 12
17. Classes abstraites
abstract class Validator<T extends Validatable> {
bool validate(T object) {
for (Object obj in object.valuesToValidate()) {
}
}
}
2013-02-13 Introduction à DART 17
18. Classes abstraites
abstract 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. Classes abstraites
abstract 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
23. Classes concrètes
class User implements Validatable {
String username;
String password;
User(this.username, this.password);
}
2013-02-13 Introduction à DART 23
24. Classes concrètes
class 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. Mais ce n’est pas tout
⦿ Mixins
⦿ Optionnellement typé
⦿ Gouverné par des fonctions de haut niveau
⦿ Mono processus
2013-02-13 Introduction à DART 25
26. Librairies disponibles
⦿ Core ⦿ TU et Mocks
⦿ HTML ⦿ Math
⦿ Async ⦿ Logging
⦿ IO ⦿ URI
⦿ Crypto ⦿ I18N
⦿ JSON ⦿ etc.
⦿ Mirrors
⦿ UTF
2013-02-13 Introduction à DART 26
27. Futures / Callback Hell - JS
getWinningNumber( (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. Futures / Callback Hell - Dart
void 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
36. dart2js
⦿ Cible HTML5
⦿ Tree Shaking
⦿ Agrégation/Minification
⦿ Optimisation
2013-02-13 Introduction à DART 36
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
41. Utilisation
⦿ Création de sites Single-Page
⦿ Création d'application complètes
⦿ Jeux HTML
2013-02-13 Introduction à DART 41
43. Aller plus loin
DartLangFR
⦿ 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.net
DartLang
⦿ 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 weekly
2013-02-13 Introduction à DART 43