2. Agenda
• What is Dart?
• Why did Google create Dart?
• Does the web really need another language?
• What is NEW about Dart?
• Why does Dart look so familiar?
• How can I play with Dart? Is there a real
editor?
3. Agenda
• What is in the platform? **
• Should I use Dart for my application today?
• Who is using Dart in production?
• Learn more…
4.
5. What is Dart?
• Open-source web programming language
developed by Google.
• First appearing in GOTO conference in Aarhus,
Denmark, October 10-12, 2011.
• Class-based, single-inheritance, object
oriented language with C-style syntax.
• It supports interfaces, abstract classes, reified
generics, and optional typing.
6. What is Dart?
• “Batteries included.”
– Language and libraries
– Tools
– VM
– Compiler to JavaScript
7. Why did Google create Dart?
• “We want you to be able to create great web
apps. Great web apps improve the web, and
when the web does better, everyone wins.”
(Walrath, K; Ladd, S)
8. Why did Google create Dart?
• “Dart helps developers from all platforms
build complex, high performance client apps,
for the future web,” (Ladd, S)
– All platforms: iOS, Android, Java, .NET, C#, C++…
– More features, functionalities, integrated
– Zero latency, fast computational execution
9. Why did Google create Dart?
• In another words…
• “Runs web applications at least 2 times faster
as it’s possible with JS in V8”
• JavaScript makes the work hard when the
application
10. Does the web really need another
language?
• Yes, it does!
• Pros:
– Developing small applications is easy
– Platform independence
– Non installation of applications
– Supports incremental development
– It is EVERYWHERE…
11. Does the web really need another
language?
• Cons:
– Developing large-scale applications is hard
– No support for libraries
– Startup performance is bad
• That said, Dart comes to fill those gaps
– No competition with JavaScript (kind of…)
12. What is NEW about Dart?
• Dart uses a different type checker - “Innocent
until proven guilty”
• Nice and compact way to implement a
function that evaluates and return a single
expression
• Snapshots
• Generics, but easy!
• HTML library, reusability…
13. Why does Dart look so familiar?
• They want more than 5 users…
• Designed for mass adoption
• Scripting language users (JavaScripters), and
structured language users (Java developers)
• Anyone familiar with Java, or a C language
should be able to quickly understand Dart
14. Why does Dart look so familiar?
class Point {
Point(this.x, this.y);
distanceTo(other) {
var dx = x - other.x;
var dy = y - other.y;
return Math.sqrt(dx * dx + dy * dy);
}
var x, y;
}
main() {
var p = new Point(2, 3);
var q = new Point(3, 4);
print(‘distance from p to q = ${p.distanceTo(q)}’);
}
15. How can I play with Dart? Is there a
real editor?
• DartPad
– Executes Dart code interactive in any modern
browser
– dartpad.dartlang.org
– Provides some code examples
16. How can I play with Dart? Is there a
real editor?
17. How can I play with Dart? Is there a
real editor?
18. How can I play with Dart? Is there a
real editor?
19. How can I play with Dart? Is there a
real editor?
20. How can I play with Dart? Is there a
real editor?
• Dart Editor
– Available for Windows, Mac, and Linux
– It’s made simple: just select a file and click ‘Run’
– Dart Editor compile your Dart code to JavaScript
– Features and tools that helps editing Dart code
21. How can I play with Dart? Is there a
real editor?
• ]
22. How can I play with Dart? Is there a
real editor?
• Dartium
23. How can I play with Dart? Is there a
real editor?
• Dartium
24. How can I play with Dart? Is there a
real editor?
• It’s integrated with Chromium (also
nicknamed Dartium)
• Dart SDK
25. What is in the platform?
• Language specifications
• Libraries
• Compiler to JavaScript
• VM
• Integration with Chromium
• Dart Editor
26. Should I use Dart for my application
today?
• The definitely is YES!
• There are a lot of companies using Dart in
production
• The benefits are relevant as showed
31. Benchmarking
• DeltaBlue is a one-way constraint solver, originally
written in Smalltalk by John Maloney and Mario
Wolczko. The main focus in DeltaBlue is on
polymorphism and object-oriented programming.
• FluidMotion is a 2D Navier-Stokes equations solver,
originally written in JavaScript by Oliver Hunt. The main
focus is on accessing numeric arrays, as well as doing
floating-point arithmetic.
• Havlak algorithm is an extension of Tarjan’s interval-
finding algorithm that deals with irreducible graphs,
and constructs a loop-nesting forest for an arbitrary
flow graph
32. Benchmarking
• Richards is an OS kernel simulation benchmark, originally written in
BCPL by Martin Richards. The main focus in Richards is on property
access and calling functions and methodspolymorphism and object-
oriented programming.
• Tracer is a ray tracer benchmark, originally written in JavaScript by
Adam Burmister. Both Adam’s and the Octane version in JavaScript
use the class emulation pattern from the prototype.js library.
Because Dart has a native class system, it’s unfair to do a direct
performance comparison with the Octane version. We therefore
compare Dart performance with an improved JavaScript version
called Tracer. The improved version uses only constructors and
prototypes without any abstraction layers in between; it runs 50%
faster than the original Raytrace JavaScript benchmark in Octane.
33.
34.
35.
36.
37.
38. Who is using Dart in production?
• A bunch of companies listed on Dart’s website
https://www.dartlang.org/community/who-
uses-dart.html
• Google Fiber
39. Learn more…
• The main place to go for Dart information is
dartlang.org
• Official news: Dart News & Updates
• Dartosphere (single feed of many Dart blogs)
• Good interviews and videos about Dart:
– InfoWorld interview with Lars Bak (15 Nov 2011)
– Dartisans hangout with Seth Ladd, Vijay Menon, and
Anton Muhin (15 Feb 2012)
– Transcription of Gilad Bracha’s quick tour of Dart (2
Nov 2011)
40. References
• Dart’s website: https://www.dartlang.org.
• Walrath, K; Ladd, S. What is Dart? O’Reilly, March 2012,
CA, EUA.
• Walrath, K. What is Dart? Available on:
http://radar.oreilly.com/2012/03/what-is-dart.html.
O’Reilly, March 21, 2012. Accessed on May 27, 2015.
• InfoWorld interview: Why Google Dart beats JavaScript,
by Paul Krill. Available on:
http://www.javaworld.com/article/2078464/mobile-
java/infoworld-interview--why-google-dart-beats-
javascript.html.
41. References
• IODev Blog. Dart… Dart… Dart… What is Dart?. June
11, 2012. Available on: http://iodev-
blog.blogspot.com.br/2012/06/dartdartdartwhat-is-
dart.html.
• Seth Ladd’s Blog. Available on:
http://blog.sethladd.com.
Notas del editor
This is the book I used to prepare this presentation. It’s written by Kethy Walrath and Set Ladd (It’s a free copy – at least I think)
Kathy is a technical writer who's worked on docs for Chrome and other developer APIs at Google since 2006. Before that, she worked at Sun, NeXT, and HP. Back when the web was young, she wrote the first doc to help developers write Java applets. She also co-created The Java Tutorial and maintained it for a very long time.
Seth is a web engineer and is currently a Chrome Developer Advocate, helping developers of all sizes launch awesome modern web apps. He produced Aloha on Rails, the Hawaii Ruby on Rails and Web Development Conference, and New Game, the conference for HTML5 game developers. Seth has also authored Dart Up and Running and Expert Spring MVC.
GOTO conferences are conferences that take place all around the world and to discuss about software development
Class based, different than JavaScript that is prototype based
Reified generics – types can be defined later
Optional type doesn’t relay on language to get tasks done
Operator overriding -> class + class – Not possible with JavaScript
It’s not only a language, but it also has standard libraries that supports the language
Tools: editor that gives auto completion
VM that helps startup web apps more rapidly
If the browser doesn’t the Dart VM, your code can be compiled to JavaScript easily and still runs faster than usual JavaScript Engines
- All developers platforms should be developing for the web
Complex means: more features, more functionalities, more HTML benefícios, all integrated to your app, so your app can use better all features of file systems, webGL, CSS3
More apps developed for the modern browsers and mobile browsers
Architecting web apps is quite challenging, specially when they’re complex and has to be large-scalable, so Dart comes to make it easier to bring those kind of web apps to reality
Make the web faster, “Our goal is to make applications run at least 2 times faster, as it’s possible with JS” as John McCartin said, he’s a Google Engineer that works on VM
Platform independence: it can run in any web browser installed in any OS without difficulties
Conventional type checker is a lobotomized theorem proven:
Trying proving a program obeying type system
If it can’t construct a proof – program is considered invalid “Guilty until proven innocent”
Snapshots: Currently, web browsers parse web app’ source code before running it. Dart code can be snapshotted to speedup startup around 10 times faster
Native Dart library to access and manipulate HTML DOM – interface for updating the content, structure and style of a webpage - , so elements, attributes and nodes feel natural to work with
Previously called “Dartboard”, March, 2012.
Embedded in the Dart website, so you can try it just going
Simple Hello World iteration
Hello World Example using HTML library
Hello World Example
HTML code
Hello World Example
CSS code
Runs your Dart code via the Dart Virtual Machine or it can compile it to JavaScript and launch it in your web browser if it doesn’t have the Dart VM embedded.
It’s the way some companies are doing today: when ready for production, just compile it to JS and make the code available to the entire modern web.
Features such as auto-completion, Dart editor highlights Dart syntax, quickly shows APIs and Types declarations, it also outlines program’s classes, fields, and methods
A game example written in Dart using HTML library that runs in Dartium
Language specifications: Dart language is familiar as we could see, there’s just a few new features such as optional typing and isolates
Libraries dedicated to make the process faster
Compiler to JS: Reutilization of JS codes, Dart2JS Compiler
VM: Runs command-line for server-side applications and can also be embedded into browsers for client-side applications
Integration with Chromium: It has VM embedded, allowing applications to run without first being compiled to JS
Dart Editor: Lightweight editor, syntax highlighting and code completion, launch the application in the VM or the web app in Dartium, and also it can compile your web app to JavaScript to be use in another web browser
You’ll be able to at least runs as fast as JS, but it’s expected to run faster
You’ll be able to at least runs as fast as JS, but it’s expected to run faster
You’ll be able to at least runs as fast as JS, but it’s expected to run faster
You’ll be able to at least runs as fast as JS, but it’s expected to run faster
You’ll be able to at least runs as fast as JS, but it’s expected to run faster