YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Introduction à dart

2013-02-13 Introduction à DART 1

DART

Yohan BESCHI – Développeur Java

@yohanbeschi

+Yohan Beschi

Page 2: Introduction à dart

Pourquoi ce talk ?

2013-02-13 Introduction à DART 2

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);

}

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;

}

});

columnSortHandler.setComparator(firstNameColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;

}

return -1;

}

});

columnSortHandler.setComparator(lasteNameColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;

}

return -1;

}

});

columnSortHandler.setComparator(ageColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.age.compareTo(o2.age) : 1;

}

return -1;

}

});

table.addColumnSortHandler(columnSortHandler);

table.getColumnSortList().push(firstNameColumn);

Page 3: Introduction à dart

Pourquoi ce talk ?

2013-02-13 Introduction à DART 3

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);

}

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;

}

});

columnSortHandler.setComparator(firstNameColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;

}

return -1;

}

});

columnSortHandler.setComparator(lasteNameColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;

}

return -1;

}

});

columnSortHandler.setComparator(ageColumn,

new Comparator<Tester.User>() {

public int compare(User o1, User o2) {

if (o1 == o2) {

return 0;

}

if (o1 != null) {

return (o2 != null) ? o1.age.compareTo(o2.age) : 1;

}

return -1;

}

});

table.addColumnSortHandler(columnSortHandler);

table.getColumnSortList().push(firstNameColumn);

Page 4: Introduction à dart

Pourquoi ce talk ?

2013-02-13 Introduction à DART 4

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);

Page 5: Introduction à dart

Pourquoi ce talk ?

2013-02-13 Introduction à DART 5

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

Page 6: Introduction à dart

Le gagnant pour moi ?

2013-02-13 Introduction à DART 6

Page 7: Introduction à dart

Il était une fois…

2013-02-13 Introduction à DART 7

Page 8: Introduction à dart

Productivité du programmeur

2013-02-13 Introduction à DART 8

Page 9: Introduction à dart

Application évolutive

2013-02-13 Introduction à DART 9

Page 10: Introduction à dart

Rapidité d'exécution

2013-02-13 Introduction à DART 10

Page 11: Introduction à dart

Performance au démarrage

2013-02-13 Introduction à DART 11

Page 12: Introduction à dart

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

Page 13: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 13

abstract class Validatable {

}

Page 14: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 14

abstract class Validatable {

List<Object> valuesToValidate();

}

Page 15: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 15

abstract class Validator<T extends Validatable> {

}

Page 16: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 16

abstract class Validator<T extends Validatable> {

bool validate(T object) {

}

}

Page 17: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 17

abstract class Validator<T extends Validatable> {

bool validate(T object) {

for (Object obj in object.valuesToValidate()) {

}

}

}

Page 18: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 18

abstract class Validator<T extends Validatable> {

bool validate(T object) {

for (Object obj in object.valuesToValidate()) {

if (StringUtils.isEmpty(obj.toString())) {

}

}

}

}

Page 19: Introduction à dart

Classes abstraites

2013-02-13 Introduction à DART 19

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;

}

}

Page 20: Introduction à dart

Classes concrètes

2013-02-13 Introduction à DART 20

class User {

}

Page 21: Introduction à dart

Classes concrètes

2013-02-13 Introduction à DART 21

class User implements Validatable {

}

Page 22: Introduction à dart

Classes concrètes

2013-02-13 Introduction à DART 22

class User implements Validatable {

String username;

String password;

}

Page 23: Introduction à dart

Classes concrètes

2013-02-13 Introduction à DART 23

class User implements Validatable {

String username;

String password;

User(this.username, this.password);

}

Page 24: Introduction à dart

Classes concrètes

2013-02-13 Introduction à DART 24

class User implements Validatable {

String username;

String password;

User(this.username, this.password);

List<Object> valuesToValidate() {

return [username, password];

}

}

Page 25: Introduction à dart

Mais ce n’est pas tout

2013-02-13 Introduction à DART 25

⦿Mixins

⦿Optionnellement typé

⦿Gouverné par des fonctions de haut niveau

⦿Mono processus

Page 26: Introduction à dart

Librairies disponibles

⦿Core

⦿HTML

⦿Async

⦿ IO

⦿Crypto

⦿ JSON

⦿Mirrors

⦿UTF

⦿TU et Mocks

⦿Math

⦿Logging

⦿URI

⦿ I18N

⦿etc.

2013-02-13 Introduction à DART 26

Page 27: Introduction à dart

Futures / Callback Hell - JS

2013-02-13 Introduction à DART 27

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()

});

});

});

});

});

});

Page 28: Introduction à dart

Futures / Callback Hell - Dart

2013-02-13 Introduction à DART 28

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();

};

}

Page 29: Introduction à dart

Isolates

2013-02-13 Introduction à DART 29

Page 30: Introduction à dart

Machines Virtuelles

2013-02-13 Introduction à DART 30

Page 31: Introduction à dart

Dartium

2013-02-13 Introduction à DART 31

Page 32: Introduction à dart

DartEditor

2013-02-13 Introduction à DART 32

Page 33: Introduction à dart

Plugins

2013-02-13 Introduction à DART 33

Page 34: Introduction à dart

dart2js

2013-02-13 Introduction à DART 34

Page 35: Introduction à dart

dart2js

2013-02-13 Introduction à DART 35

Page 36: Introduction à dart

dart2js

⦿Cible HTML5

⦿Tree Shaking

⦿Agrégation/Minification

⦿Optimisation

2013-02-13 Introduction à DART 36

Page 37: Introduction à dart

pub

2013-02-13 Introduction à DART 37

Page 38: Introduction à dart

pub

2013-02-13 Introduction à DART 38

name: pacifista_rocks

description: The best application in the whole world

version: 0.0.1

dependencies:

great_lib: any

pubspec.yaml

Page 39: Introduction à dart

dartdoc

2013-02-13 Introduction à DART 39

/// This is a single-line documentation comment.

/**

* This is a multi-line documentation comment.

* To generate the documentation:

* $ dartdoc <filename>

*/

void main() {

}

Page 40: Introduction à dart

dartdoc

2013-02-13 Introduction à DART 40

Page 41: Introduction à dart

Utilisation

⦿Création de sites Single-Page

⦿Création d'application complètes

⦿ Jeux HTML

2013-02-13 Introduction à DART 41

Page 42: Introduction à dart

Roadmap

2013-02-13 Introduction à DART 42

Aujourd'hui : M2 Mi-fevrier : M3 Été : V1 !

Page 43: Introduction à dart

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

Page 44: Introduction à dart

Des questions ?

2013-02-13 Introduction à DART 44


Related Documents