2. AGENDA
► What is Dart?
► How Dart Works
► Dart Features
► Language Tour
► CASE DEMOS
► Questions
3. WHAT IS DART?
“...an open-source, batteries-included
developer platform for
building HTML5 web apps.”
dartlang.org
4. BY GOOGLE
Gilad Bracha
Software Engineer
Lars Bak
Computer Programmer
► HotSpot
VM
► V8
JavaScript
Engine
► Dart
VM
► Newspeak
Language
► Java
Language
Spec
► Dart
Language
Spec
8. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
9. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
10. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
11. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
12. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
13. “Hey, I want
a web app”
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
14. “Hey, I want
a web app”
jQueryUI
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
15. “Hey, I want
a web app”
jQueryUI
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
Leaflet.JS
16. “Hey, I want
a web app”
jQueryUI
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
Leaflet.JS
Jasmine BDD
17. “Hey, I want
a web app”
jQueryUI
Backbone.JS
“Backbone’s only hard dependency is Underscore.js”
Raphael.JS
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
Leaflet.JS
Jasmine BDD
18. “Hey, I want
a web app”
jQueryUI
DOCS
DOCS DOCS
Backbone.JS
DOCS
“Backbone’s only hard dependency is Underscore.js”
Raphael.JS
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
Leaflet.JS
Jasmine BDD
DOCS
DOCS
DOCS
DOCS DOCS
19. “Hey, I want
a web app”
jQueryUI
DOCS
DOCS DOCS
Backbone.JS
DOCS
“Backbone’s only hard dependency is Underscore.js”
Raphael.JS
Underscore.JS
jQuery
“For RESTful persistence, history support via
Backbone.Router and DOM manipulation with
Backbone.View, include jQuery...”
Moment.JS
Modernizr
Leaflet.JS
Jasmine BDD
DOCS
DOCS
DOCS
DOCS DOCS
23. DART BUNDLE
IDE
Dartium
Dart SDK
► Eclipse-based editor
► Supports code completion,
static analysis, Checked/
Production Mode etc…
► Plugins for third-party IDE
and Text-Editors
24. DART BUNDLE
IDE
Dartium
Dart SDK
► Eclipse-based editor
► Supports code completion,
static analysis, Checked/
Production Mode etc…
► Plugins for third-party IDE
and Text-Editors
► Custom build of
Chromium with
the Dart VM
25. DART BUNDLE
IDE
Dartium
Dart SDK
► Eclipse-based editor
► Supports code completion,
static analysis, Checked/
Production Mode etc…
► Plugins for third-party IDE
and Text-Editors
► Custom build of
Chromium with
the Dart VM
► Dart VM, Core
Libraries and
Command line
tools
67. class Person {!
!speak() => print(“person is speaking”);!
}!
!
class Customer extends Person {!
!String _name;!
!Customer(this._name);!
}!
!!
68. class Person {!
!speak() => print(“person is speaking”);!
}!
!
class VIPPermissions extends Person {!
!luxuryTreatment() => print(“Your royal suite is ready!”);!
}!
!
class Customer extends VIPPermissions {!
!String _name;!
!Customer(this._name);!
}!
!!
69. class Person {!
!speak() => print(“person is speaking”);!
}!
!
class VIPPermissions extends Person {!
!luxuryTreatment() => print(“Your royal suite is ready!”);!
}!
!
class Customer extends VIPPermissions {!
!String _name;!
!Customer(this._name);!
}!
!!
Customer
IS
NOT
a
VIPPermissions
!!!
70. abstract class VIPPermissions {!
!luxuryTreatment() => print(“Your royal suite is ready!”);!
}!
!
class Person {!
!speak() => print(“person is speaking”);!
}!
!
class Customer extends Person with VIPPermissions {!
!String _name;!
!Customer(this._name);!
}!
!!
71. abstract class VIPPermissions {!
!luxuryTreatment() => print(“Your royal suite is ready!”);!
}!
!
class Person {!
!speak() => print(“person is speaking”);!
}!
!
class Customer extends Person with VIPPermissions {!
!String _name;!
!Customer(this._name);!
}!
!
void main() {!
!Customer customer = new Customer(‘Charles’)..luxuryTreatment();!
}!
!!
72. abstract class VIPPermissions {!
!luxuryTreatment() => print(“Your royal suite is ready!”);!
}!
!
class Person {!
!speak() => print(“person is speaking”);!
}!
!
class Customer extends Person with VIPPermissions {!
!String _name;!
!Customer(this._name);!
}!
!
void main() {!
!Customer customer = new Customer(‘Charles’)..luxuryTreatment();!
}!
!!
73. BUT THAT’S NOT ALL!
► Generics
► Mirrors/Reflections
► Transformations
► Metadata/
Annotations
► Factories
► Lazy-loading
► Interoperate with JS
► Observatory
► Automatic
Sanitization
► Web Components
► SIMD
► and lots more…
74. JOIN THE DART SIDE
► dartlang.org/codelabs
► api.dartlang.org
► pub.dartlang.org
► @dartlang on Twitter