Preface
Developing a web application (or software in general) is still a challenging task. There is a client- or browser-side and a server-side with databases. There are many different technologies to master in order to feel comfortable with a full client-server stack. There are different frameworks with different objectives. There are different programming languages as well that a developer must learn, each one more suitable either for the server-side or for the client-side.
Learning Dart will make a developer become more productive by using Dart both for clients and servers. Using the same language, a developer will lose neither performance nor flexibility. Dart can be used within its virtual machine or its code may be compiled to JavaScript. In both the cases, the performance benchmarks show promising scores (https://www.dartlang.org/performance/). Dart is both an object-oriented and a functional language. A mix of both the approaches is possible with Dart, providing great professional freedom and programming background flexibility. In addition, Dart provides many libraries and tools (http://pub.dartlang.org/) to allow a developer focus on the tasks at hand and not be concerned with all the aspects of software development.
With Polymer.dart (https://www.dartlang.org/polymer-dart/), a new approach of developing web applications with web components will allow a developer to divide a web page in sections and reuse an already developed and tested web component for each section. In the near future, different catalogs of web components will appear, enabling, after waiting for many years, an engineering approach to software development. A web component may be derived from other web components. It may pass data to its components. A web component may inherit its behavior from another web component. It may access an already instantiated web component.