Index: src/site/docs/technical-overview/index.html |
diff --git a/src/site/docs/technical-overview/index.html b/src/site/docs/technical-overview/index.html |
index 5e02e5583aebd2901b065e93f02cb91585f8e157..1bbe132d3d46df170f31095862eacc397dbbd988 100644 |
--- a/src/site/docs/technical-overview/index.html |
+++ b/src/site/docs/technical-overview/index.html |
@@ -6,101 +6,95 @@ title: "Technical Overview" |
<section> |
<p> |
- Dart is a new class-based programming language |
- for creating structured web applications. |
- Developed with the goals of simplicity, efficiency, and scalability, |
- the Dart language combines powerful new language features |
+ Dart helps developers productively build |
+ high-performance apps for the modern web. |
+ Targeting modern desktop and mobile browsers, |
+ Dart apps can run natively in a Dart virtual machine (VM) |
+ or be compiled to JavaScript. |
+ </p> |
+ |
+ <p> |
+ Developed with the goals of <b>simplicity</b>, |
+ <b>efficiency</b>, and <b>scalability</b>, |
+ the Dart language combines powerful new features |
with familiar language constructs into a clear, readable syntax. |
+ But Dart's not just a language. |
+ The Dart open-source project also includes <b>libraries</b>, |
+ a <b>package manager</b>, |
+ and <b>tools</b> such as a full-featured <b>editor</b>. |
</p> |
+<p> |
+Additional open-source projects and the Pub package manager |
sethladd
2012/12/16 22:23:03
this confused me briefly. What about "Additional /
Kathy Walrath
2012/12/18 00:21:56
Done.
|
+help developers be even more productive. |
+For example, developers can use Pub to get packages for |
+<b>JavaScript interoperability</b>, |
+a <b>web UI</b> framework, |
+a <b>unit testing</b> library, |
+libraries for <b>game development</b>, |
+and much more. |
+</p> |
+ |
<aside> |
<div class="alert alert-info"> |
<strong>Note:</strong> |
- This document is part of an early preview of |
- the Dart language and programming environment. |
- Some elements are missing from the current release, |
- and the details are subject to change based on the feedback we receive. |
+ Although the Dart language will continue to change, |
sethladd
2012/12/16 22:23:03
You say this, but then in the next paragraph, you
Kathy Walrath
2012/12/18 00:21:56
Done.
|
+ we expect the changes to be backward compatible. |
+ The Dart libraries, on the other hand, |
+ are not yet stable. |
</div> |
</aside> |
+<p> |
+Now that the language has stabilized, |
+the Dart team is working on <b>performance</b>. |
+The Dart VM is already much faster than Chrome’s JavaScript engine, V8, |
+on two important benchmarks. |
+See the <a href="/performance/">performance page</a> |
+for the latest measurements of Dart and JavaScript code. |
+</p> |
+ |
+</section> |
+ |
+ |
<h4> Contents </h4> |
<ol class="toc"> |
- <li> <a href="#key">Key features</a> </li> |
<li> <a href="#goals">Design goals</a> </li> |
- <li> <a href="#code">Show me the code </a> |
+ <li> <a href="#key">Language features</a> |
+ <ol> |
+ <li> <a href="#lang-classes">Classes </a></li> |
+ <li> <a href="#lang-optional-types">Optional types</a> </li> |
+ <li> <a href="#lang-lexical-scope">Lexical scoping</a> </li> |
+ <li> <a href="#lang-libraries">Libraries</a> </li> |
+ <li> <a href="#lang-isolates">Isolates</a> </li> |
+ <li> <a href="#lang-tooling">Toolability</a> </li> |
+ </ol> </li> |
+ <li> <a href="#code">Examples of Dart code</a> |
<ol> |
- <li> <a href="#classes">Classes and interfaces </a> </li> |
- <li> <a href="#optional-types">Optional types </a> </li> |
+ <li> <a href="#classes">Using classes </a></li> |
+ <li> <a href="#optional-types">Adding types</a> </li> |
+ <li> <a href="#browser">Writing web apps</a> </li> |
</ol> |
</li> |
- <li> <a href="#howtouse">How can I use Dart? </a> |
+ <li> <a href="#tools">Tools</a> |
<ol> |
+ <li> <a href="#running">Dart code execution</a> </li> |
<li> <a href="#editor">Dart Editor</a> </li> |
- <li> <a href="#mimetype">New MIME type </a> </li> |
- </ol> |
- </li> |
- <li> <a href="#tools">Tools </a> </li> |
- <li> <a href="#libraries">Libraries </a> </li> |
- <li> <a href="#involved">Get involved </a> </li> |
+ <li> <a href="#pub">The Pub package manager</a> </li> |
+ </ol></li> |
+ <li> <a href="#libraries">Libraries</a> </li> |
+ <li> <a href="#get-started">Get started with Dart</a> </li> |
+ <li> <a href="#involved">More information</a> </li> |
</ol> |
</section> |
- |
-<section id="key"> |
- <h2> Key features </h2> |
- |
- <p> |
- Key features of the Dart language include: |
- </p> |
- |
- |
- <h3>Classes</h3> |
- <p> |
- Classes and interfaces provide a well understood mechanism |
- for efficiently defining APIs. |
- These constructs enable encapsulation and reuse of methods and data. |
- </p> |
- |
- <h3>Optional types</h3> |
- <p> |
- Dart programmers can optionally add static types to their code. |
- Depending on programmer preference and stage of application development, |
- the code can migrate from a simple, untyped experimental prototype |
- to a complex, modular application with typing. |
- Because types state programmer intent, |
- less documentation is required to explain what is happening in the code, |
- and type-checking tools can be used for debugging. |
- </p> |
- |
- <h3>Libraries</h3> |
- <p> |
- Developers can create and use libraries |
- that are guaranteed not to change during runtime. |
- Independently developed pieces of code can therefore |
- rely on shared libraries. |
- </p> |
- |
- <h3>Tooling</h3> |
- <p> |
- Dart will include a rich set of |
- execution environments, libraries, and development tools |
- built to support the language. |
- These tools will enable productive and dynamic development, |
- including edit-and-continue debugging and beyond—up |
- to a style where you program an application outline, run it, |
- and fill in the blanks as you run. |
- </p> |
-</section> |
- |
- |
<section id="goals"> |
<h2> Design goals </h2> |
<p> |
- The Dart programming language is presented here in its early stages. |
- The following design goals will guide |
- the continued evolution and refinement of this open source project: |
+ The following design goals guide |
+ the continued evolution and refinement of this project: |
</p> |
<ul> |
@@ -114,8 +108,8 @@ title: "Technical Overview" |
<li>Make Dart appropriate for the |
<b>full range of devices on the web</b>—including |
phones, tablets, laptops, and servers.</li> |
- <li>Provide tools that make Dart run fast |
- <b>across all major modern browsers</b>. </li> |
+ <li>Provide tools that make Dart run fast across |
+ <b>all major modern browsers</b>. </li> |
</ul> |
<p> |
@@ -131,14 +125,13 @@ title: "Technical Overview" |
so that different teams can work on them independently. |
It’s difficult to be productive |
when a web application gets large.</li> |
- <li>Scripting languages are popular |
- because their lightweight nature makes it easy to write code quickly. |
- Generally, the contracts with other parts of an application |
- are conveyed in comments rather than in the language structure itself. |
- As a result, it’s difficult for someone other than the author |
+ <li> |
+ In scripting languages, the contracts with other parts of an application |
+ are usually conveyed in comments rather than in the language structure itself. |
+ As a result, it can be difficult for someone other than the author |
to read and maintain a particular piece of code.</li> |
- <li>With existing languages, |
- the developer is forced to make a choice between |
+ <li>Before Dart, |
+ the developer was forced to make a choice between |
static and dynamic languages. |
Traditional static languages require heavyweight toolchains |
and a coding style that can feel inflexible and overly constrained.</li> |
@@ -149,43 +142,147 @@ title: "Technical Overview" |
<li>Different languages and formats entail context switches |
that are cumbersome and add complexity to the coding process.</li> |
</ul> |
+ |
+</section> |
+ |
+ |
+ |
+<section id="key"> |
+ <h2> Language features </h2> |
+ |
+ <p> |
+ Key features of the Dart language include |
+ classes, optional types, lexical scoping, libraries, isolates, and toolability. |
+ </p> |
+ |
+ <p> |
+ Although Dart is designed to be familiar, |
+ we took the opportunity to fix |
+ some problematic features of common languages. |
+ We also introduced a few good features from lesser known languages. |
+ Some Dart features you might not expect include |
+ top-level functions, |
+ optional parameters, |
+ string interpolation, |
+ multi-line strings, |
+ dynamic method handling (<code>noSuchMethod</code>), |
+ a cascade operator (<code>..</code>), and |
+ a function shorthand syntax (<code>=></code>). |
+ Details are in the |
+ <a href="/docs/dart-up-and-running/ch02.html">language tour</a>. |
+ </p> |
+ |
+ |
+ <h3 id="lang-classes">Classes</h3> |
+ <p> |
+ Classes provide a well understood mechanism |
+ for efficiently defining APIs. |
+ Each class implicitly defines an interface. |
+ Together, classes and interfaces |
+ enable encapsulation and reuse of methods and data. |
+ </p> |
+ |
+ <h3 id="lang-optional-types">Optional types</h3> |
+ <p> |
+ Optional types can help a Dart program scale from a quick prototype |
+ into a complex, modular application. |
+ While a small program or prototype might not have type annotations, |
+ you always have the option of adding them. |
+ Types make the code's intent clearer, |
+ which helps developers to understand the code. |
+ Types also enable more powerful tools |
+ for writing and debugging code. |
+ </p> |
+ |
+ <h3 id="lang-lexical-scope">Lexical scoping</h3> |
+ <p> |
+ Scoping rules in Dart make sense. |
+ Each identifier is scoped to the block it's declared in, |
+ which means that you can tell a variable's scope |
+ by looking at the braces in your code <code>{...}</code>. |
+ Even in a closure within a loop, |
+ the value of a variable is what you intuitively expect. |
+ </p> |
+ |
+ |
+ <h3 id="lang-libraries">Libraries</h3> |
+ <p> |
+ Developers can create and use libraries |
+ that are guaranteed not to change during runtime. |
+ Independently developed pieces of code can therefore |
+ rely on shared libraries. |
+ </p> |
+ |
+ <h3 id="lang-isolates">Isolates</h3> |
+ <p> |
+ Modern web browsers, even on mobile platforms, |
+ run on multi-core CPUs. |
+ To take advantage of all those cores, |
+ developers traditionally use shared-memory threads running concurrently. |
+ However, shared-state concurrency is error prone |
+ and can lead to complicated code. |
+ Instead of threads, all Dart code runs inside of isolates. |
+ Each isolate has its own memory heap, |
+ ensuring that no isolate’s state is accessible from any other isolate. |
+ </p> |
+ |
+ <h3 id="lang-tooling">Toolability</h3> |
+ <p> |
+ Dart is designed to work well with tools. |
+ A rich set of execution environments, libraries, and development tools |
+ have already been built to support the language. |
+ Dart's toolability enables productive and dynamic development, |
+ including edit-and-continue debugging and beyond—up |
+ to a style where you program an application outline, run it, |
+ and fill in the blanks as you run. |
+ </p> |
</section> |
<section id="code"> |
-<h2>Show me the code</h2> |
+<h2>Examples of Dart code</h2> |
<p> |
-Here are several code snippets |
+Here are some code snippets |
to give you a feel for what Dart code looks like. |
</p> |
<section id="classes"> |
-<h3>Classes and interfaces</h3> |
+<h3>Using classes</h3> |
<p> |
-Dart’s interfaces and classes provide you with |
+Dart’s classes provide |
a set of reusable and extensible building blocks. |
-An <em>interface</em> defines a basic set of methods and constants, |
-sometimes by inheriting from other interfaces. |
-A <em>class</em> can implement multiple interfaces, |
-but it only inherits from a single superclass. |
+A <em>class</em> defines methods and data |
+and can provide method implementations. |
+Every <em>object</em> is an instance of a class. |
</p> |
<p> |
-The following example defines an interface, |
-along with a class and subclass that implement it: |
+Each class implicitly defines an <em>interface</em>. |
+A class can implement multiple interfaces, |
+but it only <em>extends</em>—inherits implementation from—a |
+single superclass. |
+</p> |
+ |
+<p> |
+The following example shows the code for three classes. |
+The first class, Shape, is an <em>abstract class</em>—a |
+class that can't be instantiated. |
+The second class, Rectangle, |
+implements the interface defined by Shape. |
+The third class, Square, is a subclass of Rectangle. |
</p> |
{% highlight dart %} |
-interface Shape { |
+abstract class Shape { |
num perimeter(); |
} |
class Rectangle implements Shape { |
final num height, width; |
- Rectangle(num this.height, num this.width); // Compact constructor syntax. |
- num perimeter() => 2*height + 2*width; // Short function syntax. |
+ Rectangle(this.height, this.width); // Compact constructor syntax. |
+ num perimeter() => 2*height + 2*width; // Function shorthand syntax. |
} |
class Square extends Rectangle { |
@@ -197,7 +294,7 @@ class Square extends Rectangle { |
<section id="optional-types"> |
-<h3>Optional types</h3> |
+<h3>Adding types</h3> |
<p> |
Dart provides, at the programmer’s option, |
@@ -205,15 +302,15 @@ a mixture of static and dynamic checking. |
When experimenting, |
the programmer can write untyped code for simple prototyping. |
As the application becomes larger and more stable, |
-types can be added to aid debugging and impose structure where desired. |
+types can be added to aid debugging and impose structure. |
</p> |
<p> |
For example, here is a sample of untyped code in Dart |
sethladd
2012/12/16 22:23:03
Thoughts on a more compelling, or simple, example
Kathy Walrath
2012/12/18 00:21:56
You wouldn't really have 'function' here, would yo
sethladd
2012/12/18 00:31:45
Right, sorry, the first is JavaScript.
|
-that creates a new Point class that has parameters |
-<code>x</code> and <code>y</code> |
-and two methods: |
-<code>scale()</code> and <code>distance()</code>. |
+that creates a new Point class that has two instance variables |
+(<code>x</code> and <code>y</code>) |
+and two methods |
+(<code>scale()</code> and <code>distance()</code>). |
</p> |
{% highlight dart %} |
@@ -233,12 +330,11 @@ main() { |
{% endhighlight %} |
<p> |
-Here is what this code looks like with types added |
-that ensure that |
-<code>x</code>, <code>y</code>, and <code>factor</code> |
-are of type <code>num</code>, |
-and that a <code>Point</code> contains two values |
-of type <code>num</code>: |
+Here is what this code looks like with a few types added |
+to make the API of Point clearer. |
+For example, this code specifies that |
+<code>x</code> and <code>y</code> |
+are of type <code>num</code>. |
</p> |
{% highlight dart %} |
@@ -246,121 +342,125 @@ import 'dart:math'; |
class Point { |
num x, y; |
- Point(num this.x, num this.y); |
+ Point(this.x, this.y); |
Point scale(num factor) => new Point(x*factor, y*factor); |
num distance() => sqrt(x*x + y*y); |
} |
-void main() { |
- Point a = new Point(2,3).scale(10); |
+main() { |
+ var a = new Point(2,3).scale(10); |
print(a.distance()); |
} |
{% endhighlight %} |
</section> <!-- optional types --> |
-</section> <!-- code --> |
-<section id="howtouse"> |
-<h2>How can I use Dart?</h2> |
+<section id="browser"> |
+<h3>Writing web apps</h3> |
<p> |
-You can run Dart code in several ways: |
+Dart code can be compiled to JavaScript |
+that runs in any modern browser. |
+Dart code can also run directly in browsers that have a Dart VM, |
+including Dartium and eventually Chrome. |
+Here's an example of an HTML file that loads Dart code: |
</p> |
-<ul> |
- <li> |
- <p> |
- Compile Dart code to JavaScript that can run in any modern browser:<br /> |
- Chrome, Safari 5+, and Firefox 4+ (more browser support coming shortly) |
- </p> |
- </li> |
- <li> |
- <p> |
- Execute Dart code directly in a VM on your computer |
- </p> |
- </li> |
- <li> |
- <p> |
- With a <a href="#mimetype">new MIME type</a>, |
- use Dart in a browser |
- without first compiling to JavaScript |
- </p> |
- </li> |
-</ul> |
+{% highlight html %} |
+<!DOCTYPE html> |
+<html> |
+ <head> <title>Simple Dart Web App</title> </head> |
+ <body> |
+ <h1>Simple Dart Web App</h1> |
+ <button id="button-text"></button> |
+ <output id="msg"></output> |
-<section id="editor"> |
-<h3>Dart Editor</h3> |
+ <script type="application/dart" src="app.dart"></script> |
+ <script src="https://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> |
-<p> |
-Dart Editor is a tool for |
-creating, modifying, and launching Dart web apps. |
-With one click, you can compile a Dart web app to JavaScript |
-and launch the app in a browser. |
-Taking advantage of Dart’s structured nature, |
-Dart Editor supports method name completion and refactoring. |
-</p> |
+ </body> |
+</html> |
+{% endhighlight %} |
<p> |
-For information about downloading and using Dart Editor, see the |
-<a href="/docs/editor/getting-started/">Dart Editor tutorial</a>. |
+ The first <script> tag in this example |
+ loads the code from app.dart. |
+ If the browser has an embedded Dart VM, |
+ then the browser loads Dart code, |
+ which has the MIME type <code>application/dart</code>. |
+ Otherwise, the browser loads the code's JavaScript equivalent, |
+ thanks to the <code>dart.js</code> script |
+ in the second <script> tag. |
</p> |
-</section> |
- |
-<section id="mimetype"> |
-<h3>New MIME type</h3> |
<p> |
-You will be able to link to a Dart program directly from an HTML page. |
-Here is the proposed new MIME type, |
-“application/dart”: |
+Here is the code in app.dart: |
</p> |
-{% highlight html %} |
-<!DOCTYPE html> |
+{% highlight dart %} |
+import 'dart:html'; |
-<html> |
- <head> |
- <title>Simple Dart Web App</title> |
- </head> |
- <body> |
- <h1>Simple Dart Web App</h1> |
- <h2 id="status">dart is starting up...</h2> |
- <script type="application/dart" src="SimpleDartWebApp.dart"></script> |
- <script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> |
- </body> |
-</html> |
+main() { |
+ query('#button-text') |
+ ..text = "Click me!" |
+ ..on.click.add(respond); |
+} |
+ |
+respond(event) { |
+ query("#msg").text = "You clicked the button!"; |
+} |
{% endhighlight %} |
<p> |
-The dart.js file above will swap out the <code>application/dart</code> |
-tag with a <code>text/javascript</code> tag if the browser does not |
-have an embedded Dart virtual machine. |
+ The main() function's call to query() |
+ returns the HTML element that has the ID "button-text". |
+ The code then uses the cascade operator (<code>..</code>) |
+ to perform multiple operations on that element. |
+ The first operation initializes |
+ the element's <code>text</code> property, |
+ and the second adds an event handler to the element. |
</p> |
<p> |
-The following is the Dart code for the page above: |
+ Libraries and frameworks will |
+ ease the task of developing sophisticated web apps. |
+ For example, the libraries and tools in the |
+ <a href="http://www.dartlang.org/articles/dart-web-components/">Web UI</a> |
+ package provide web components, templates, data binding, |
+ and encapsulation. |
+ Just to give you a taste of the Web UI package, |
+ here's an example of one-way data binding in an HTML file: |
</p> |
-{% highlight dart %} |
-import 'dart:html'; |
+{% highlight html %} |
sethladd
2012/12/16 22:23:03
for reference, there is a way to wrap this in {{ r
Kathy Walrath
2012/12/18 00:21:56
Done.
|
+<!-- HTML code... --> |
+<div> |
+ The current time is: {{'{{'}}currentTime}} |
sethladd
2012/12/16 22:23:03
This would be more compelling if you rewrote the a
Kathy Walrath
2012/12/18 00:21:56
I couldn't see a way of using Web UI at this point
|
+</div> |
+<!-- more HTML code... --> |
+{% endhighlight %} |
-class SimpleDartWebApp { |
- void run() { |
- write("Hello World!"); |
- } |
+<p> |
+In the rendered page, |
+<code>{{'{{'}}currentTime}}</code> is replaced by |
+the value of the top-level <code>currentTime</code> variable |
+from the following Dart code: |
+</p> |
- void write(String message) { |
- // the HTML library defines a global "document" variable |
- document.query('#status').innerHTML = message; |
- } |
-} |
+{% highlight dart %} |
+String currentTime; |
void main() { |
- new SimpleDartWebApp().run(); |
+ Date today = new Date.now(); |
+ currentTime = formatTime(today.hour, today.minute, today.second); |
} |
+ |
+// ...The formatTime() function and any other code goes here... |
{% endhighlight %} |
-</section> <!-- howtouse --> |
-</section> <!-- mimetype --> |
+ |
+</section> <!-- browser --> |
+ |
+</section> <!-- code --> |
<section id="tools"> |
@@ -374,31 +474,120 @@ Offerings include: |
</p> |
<ul> |
- <li>The Dart Editor</li> |
- <li>The dart2js compiler</li> |
- <li>The Dart VM</li> |
- <li>Dartium: Chromium with an embedded Dart VM</li> |
+ <li><b>Dart Editor:</b> A Dart-savvy editor that supports creating, modifying, running, and debugging Dart apps</li> |
+ <li><b>Pub:</b> A package manager that features libraries published on <a href="http://pub.dartlang.org/">pub.dartlang.org</a></li> |
+ <li><b>dart2js:</b> The Dart-to-JavaScript compiler</li> |
+ <li><b>dart:</b> The Dart VM</li> |
+ <li><b>Dartium:</b> Chromium with an embedded Dart VM</li> |
</ul> |
+<section id="running"> |
+<h3>Dart code execution</h3> |
+ |
<p> |
On the client side, you can deploy Dart apps in two ways. |
For browsers without an embedded Dart VM, |
you can compile the Dart code to JavaScript, |
-using the dart2js compiler. This compiler generates ECMAScript5-compatible |
-JavaScript from the Dart code. Dart code can run |
-directly in browsers that have a Dart VM, |
-including Dartium (a special build of Chromium) |
-and eventually Chrome. |
+using the <b>dart2js</b> compiler. |
+This compiler generates ECMAScript5-compatible |
+JavaScript from the Dart code. |
+This JavaScript code works in the latest versions of |
+Chrome, Safari, and Firefox, |
+plus IE9+, mobile Safari, and Chrome for Android. |
+Dart code can run directly in browsers |
+that have a Dart VM, |
+including Dartium and eventually Chrome. |
</p> |
<p> |
On the server side, the Dart code runs directly on the command line, |
+using the <b>dart</b> tool, |
for fast iteration and for cloud-based tasks. |
</p> |
+<p> |
<img src="images/source-flow.png" |
- alt="Dart source -> Dart Editor; Dart Editor -> either [Dart VM] or [JavaScript source -> Browser (JavaScript Engine)]" |
- width="266" height="417" > |
+ alt="Dart source -> either [Dart VM] or [dart2js -> JavaScript source -> Browser (JavaScript Engine)]"> |
+</p> |
+ |
+</section> |
+ |
+<section id="editor"> |
+<h3>Dart Editor</h3> |
+ |
+<p> |
+Dart Editor is based on Eclipse components, |
+but it has a simplified user interface. |
+</p> |
+ |
+<aside> |
+ <div class="alert alert-info"> |
+ <strong>Note:</strong> |
+ You aren't limited to using Dart Editor. |
+ If you prefer Eclipse, IntelliJ, or WebStorm, |
+ you can download Dart plugins for those IDEs. |
+ Dart configurations also exist for popular text editors |
+ such as Vim, Emacs, TextMate, and Sublime. |
+ </div> |
+</aside> |
+ |
+<p> |
+Features of Dart Editor include: |
+</p> |
+ |
+<ul> |
+ <li> Easy launching of both web apps and command-line apps </li> |
+ <li> Interactive debugging of both web apps (with Dartium) |
+ and command-line apps </li> |
+ <li> Static analysis to catch errors and potential problems </li> |
+ <li> Code completion </li> |
+ <li> Code navigation </li> |
+ <li> Refactoring </li> |
+ <li> Auto-update of the editor, SDK, and Dartium </li> |
+ <li> Code update help for breaking changes |
+ to the language and core libraries </li> |
+</ul> |
+ |
+<p> |
+The following screenshot shows |
+Dart Editor being used to debug a web app. |
+</p> |
+ |
+<p> |
+<img src="images/DartEditor-debugger.png" |
+ alt="screenshot of Dart Editor debugging a web app"> |
+</p> |
+ |
+<p> |
+To get the tools and find more information, go to the |
+<a href="/downloads.html">downloads page</a>.</p> |
+ |
+</section> |
+ |
+<section id="pub"> |
+<h3>The Pub package manager</h3> |
+ |
+<p> |
+ Pub is a package mananger for Dart. |
+ It helps developers reuse existing Dart code |
+ and bundle Dart apps and libraries |
+ for reuse and sharing with other people. |
+ Pub handles versioning and dependency management. |
+</p> |
+ |
+<p> |
+ You can use Pub either at the command line |
+ or through Dart Editor. |
+ Because Pub is part of the SDK, |
+ it's updated whenever Dart Editor or the SDK is updated. |
+</p> |
+ |
+<p> |
+ For more information, go to |
+ <a href="http://pub.dartlang.org/">pub.dartlang.org</a>. |
+</p> |
+ |
+</section> |
</section> |
@@ -406,93 +595,139 @@ for fast iteration and for cloud-based tasks. |
<h2>Libraries</h2> |
<p> |
-Dart provides the following libraries |
-to support web and web server development: |
+Dart provides several libraries |
+to support web and web server development. |
+The |
+<a href="/docs/dart-up-and-running/ch03.html">library tour</a> |
+and the |
+<a href="http://api.dartlang.org">API reference</a> |
+have details on all the bundled Dart libraries. |
+Bundled libraries include the following (and more): |
</p> |
<dl> |
- <dt> <a href="http://api.dartlang.org/dart_core.html">Core Library</a> </dt> |
- <dd> Contains interfaces to support |
- common data structures and operations. |
+ <dt> <a href="http://api.dartlang.org/dart_core.html">Core library</a> </dt> |
+ <dd> Common data structures and operations. |
</dd> |
- <dt> <a href="http://api.dartlang.org/html.html">HTML Library</a> </dt> |
- <dd> Contains interfaces to the HTML5 DOM, |
+ <dt> <a href="http://api.dartlang.org/dart_html.html">HTML library</a> </dt> |
+ <dd> The interface to the HTML5 DOM, |
loosely based on the proposed HTML5 standard |
as specified by the W3C/WHATWG. |
- These interfaces will evolve in parallel with |
+ This library is evolving in parallel with |
the HTML5 standards.</dd> |
- <dt> <a href="http://api.dartlang.org/io.html">I/O Library</a> </dt> |
- <dd> Contains interfaces to read and write files, open directories, |
- open network sockets, and run HTTP servers. This library is for |
- command-line Dart programs. |
+ <dt> <a href="http://api.dartlang.org/dart_io.html">I/O library</a> </dt> |
+ <dd> Server-side support for I/O: |
+ read and write files, open directories, |
+ open network sockets, and run HTTP servers. |
</dd> |
- <dt> <a href="http://api.dartlang.org/dart_isolate.html">Isolate Library</a> </dt> |
+ <dt> <a href="http://api.dartlang.org/dart_isolate.html">Isolate library</a> </dt> |
<dd> |
- Contains interfaces for spawning and communicating with isolates, |
+ Support for spawning and communicating with isolates, |
the mechanism for concurrency and security in a Dart program. |
</dd> |
- <dt> <a href="http://api.dartlang.org/crypto.html">Crypto Library</a> </dt> |
- <dd> |
- Contains interfaces for creating one-way hashes (SHA1, MD5, SHA256) |
- and HMAC support. |
- </dd> |
- |
- <dt> <a href="http://api.dartlang.org/json.html">JSON Library</a> </dt> |
+ <dt> <a href="http://api.dartlang.org/dart_json.html">JSON library</a> </dt> |
<dd> |
- Contains the ability to parse and produce JSON-encoded text. |
+ Support for parsing and producing JSON-encoded text. |
</dd> |
- <dt> <a href="http://api.dartlang.org/unittest.html">Unit Test Library</a> </dt> |
+ <dt> <a href="http://api.dartlang.org/dart_math.html">Math library</a> </dt> |
<dd> |
- Contains functions and classes for writing unit tests in Dart. |
+ Common functionality such as sine and cosine, |
+ maximum and minimum, |
+ and constants such as <em>pi</em> and <em>e</em>. |
</dd> |
</dl> |
<p> |
- See the |
- <a href="/docs/dart-up-and-running/ch03.html">library tour</a> |
- and the |
- <a href="http://api.dartlang.org">API reference</a> docs for |
- details on all the bundled |
- Dart libraries. |
+ The <a href="http://pub.dartlang.org">pub.dartlang.org</a> site |
+ has many additional libraries and tools. |
+ Here are just a few: |
</p> |
+<dl> |
+ <dt> <a href="http://pub.dartlang.org/packages/js">JavaScript Interop</a> |
+ </dt> |
+ <dd> Use JavaScript from Dart code. </dd> |
+ |
+ <dt> <a href="http://pub.dartlang.org/packages/unittest">Unit test</a> </dt> |
+ <dd> Write unit tests for Dart code. </dd> |
+ |
+ <dt> <a href="http://pub.dartlang.org/packages/web_ui">Web UI</a> </dt> |
+ <dd> Build web apps using an API based on Web Components, |
+ with additional features inspired by model-driven views. </dd> |
+ |
+ <dt> <a href="http://pub.dartlang.org/packages/meta">Meta</a> </dt> |
+ <dd> Use annotations to give tools |
+ additional semantic information about your program. </dd> |
+</dl> |
+ |
</section> <!-- libraries --> |
+<section id="get-started"> |
+<h2>Get started with Dart</h2> |
+ |
+<p> |
+You can get started with Dart in two easy steps: |
+</p> |
+ |
+<ol> |
+ <li> <a href="/docs/editor/">Download Dart Editor</a> </li> |
+ <li> <a href="/docs/tutorials/">Follow the tutorials</a> </li> |
+</ol> |
+ |
+<p> |
+Then join the community, |
+so you can get help, meet other Dart developers, |
+and find out the latest news: |
+</p> |
+ |
+<ul> |
+ <li> |
+ <a href="https://plus.google.com/+dartlang">Dart page on Google+</a> |
+ </li> |
+ <li> |
+ <a href="https://plus.sandbox.google.com/communities/114566943291919232850">Dartisans community on Google+</a> </li> |
+ <li> |
+ <a href="http://stackoverflow.com/questions/tagged/dart">Dart on Stack Overflow</a> </li> |
+</ul> |
+ |
+</section> <!-- get-started --> |
+ |
+ |
<section id="involved"> |
-<h2>Get involved</h2> |
+<h2>More info</h2> |
<p> |
-This project is open source |
-and will evolve with feedback and participation from the community. |
-We have released the draft language specification at an early stage |
-to gather responses from the developers |
-who will be using this new language and infrastructure for web programming. |
-Here are some additional links for learning more about Dart |
-and providing your feedback: |
+Here are some additional resources for learning about Dart |
+and providing feedback: |
</p> |
<ul> |
<li> |
- Other pages in the Dart website, |
- such as the <a href="/docs/dart-up-and-running/ch02.html">language tour</a>, |
+ This website, |
+ especially the |
+ <a href="/docs/dart-up-and-running/ch02.html">language tour</a>, |
<a href="/docs/dart-up-and-running/ch03.html">library tour</a>, |
- tutorials, and <a href="/docs/spec/">language specification</a>. |
+ <a href="/articles/">articles</a>, |
+ and <a href="/docs/dart-up-and-running/ch05.html">Dart Chat walkthrough</a> |
</li> |
<li> |
- <a href="https://code.google.com/p/dart/">Dart project</a> |
- with issue tracker and source code </li> |
+ The <a href="https://groups.google.com/a/dartlang.org/group/misc/">Dart |
+ discussion group</a> (misc at dartlang.org) |
+ </li> |
<li> |
- <a href="https://groups.google.com/a/dartlang.org/group/misc/">Dart |
- discussion group</a> (misc at dartlang.org) </li> |
+ The Dart open-source project at |
+ <a href="https://code.google.com/p/dart">code.google.com/p/dart</a> |
+ </li> |
<li> |
- <a href="https://plus.google.com/109866369054280216564/">+Dart</a> on Google+ </li> |
+ Additional open-source projects from the Dart team at |
+ <a href="https://github.com/dart-lang">github.com/dart-lang</a> |
+ </li> |
</ul> |
</section> <!-- involved --> |
- |