Dart 语言简介
概念:Dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。使用Dart语言,我们可用的网页脚本语言将不只是JavaScript了,在使用Chromium的浏览器中(谷歌发布了一个特殊的Chromium版本 - Dart VM 。使用Dartium可以在浏览器上进行测试之前,不必将代码编译为JavaScript),你可以直接运行Dart程序,而且有可靠的虚拟机帮助你提升程序性能和安全性。
特性:
- Dart是一种面向对象的语言,具有C语言风格的语法,可以选择将它编译成JavaScript
- 支持各种编程辅助工具,如:接口,类,集合,泛型和可选类型
- Dart也可以被转换为JavaScript代码
- Dart还可以用来编写桌面应用程序,类似JavaScript的Node.js
Dart 历史及由来
历史发展:
- 2011年10月10日,Google 发布了Dart语言,文章的标题为《Dart: A language for structured web programming》(Dart:结构化的Web编程语言)。
- 2013年11月14日,谷歌发布Dart 1.0版本,其标题为《Dart 1.0: A stable SDK for structured web apps》(Dart 1.0:一个稳定的web应用结构开发SDK)Dart 1.0版本发布,不但推出了Dart语言1.0版本而且还推出了相关开源工具箱和配套的编辑器。还介绍了已经有Blossom, Montage, Soundtrap, Mandrill, 谷歌内部 CRM 应用 and Google Elections等应用使用Dart进行了开发。
- 2018年8月8日,谷歌发布Dart2.0版本,其标题为《Announcing Dart 2 Stable and the Dart Web Platform》(Dart2 稳定版本和Dart Web平台发布);此次更新,可谓是让Dart浴火重生。从13至18年,Dart不问不火,特别是其运行效率成为了被人诟病的槽点。2018年谷歌对Dart进行全新改版,从底层重构了Dart语言,加入了很多面向未来的新特别,语言性能大幅提供。此次发布谷歌不仅发布了Dart 2.0稳定版,而且还重写了Dart web platform。新版的web platform 提供了一套高性能、可扩展的生产力工具。Dart 2 终点聚焦下面三个方面:功能不断加强和越来越严谨的语言;同时支持web和移动客户端开发;丰富工具箱和组件,全面融合谷歌全家桶。
- 2018年12月4日,谷歌发布Flutter 1.0版本,其标题为《Flutter 1.0: Google’s Portable UI Toolkit》(Flutter 1.0:谷歌的可移植UI工具箱);Flutter是谷歌开源的移动应用开发SDK,使用Flutter 可以直接开发Android和iOS应用。其最大的特点就是一套代码多平台运行、高性能和Hot Reload(热重载)。谷歌即将发布Fuchsia系统就以Flutter为主要开发框架。Flutter采用Dart作为其底层语言。Dart也由于Flutter美好未来而得到众多开发者的青睐。
- 2011年9月,网络上出现了一封标题为“未来的JavaScript”的谷歌内部电子邮件,邮件中表明由于Javascript语言发展缓慢,因此谷歌打算设计一个更好的web开发语言。这种新语言旨在成为下一代的JavaScript。它的主要目标是“保持JavaScript的动态特性,但具有更好的性能配置文件,并且适合大型项目的工具。”它还能够交叉编译为JavaScript。这种语言作为技术预览发布给更广泛的世界,并命名为Dart。
Dart 版本更新说明
Dart 2.8 发布了,除了还在跟进中的 null safety 特性需要进行一些破坏性变更,此版本还有亮点:pub 客户端改进,性能提高,以及确保依赖关系及时更新的新工具。
null safety 破坏性变更
应用崩溃的常见原因是尝试使用变量为 null 的代码,在某些情况下,null 很有用,但是在其它时候却比较麻烦。过去一年,开发团队一直致力于为 Dart 提供 null 安全(null safety)特性支持,这种特性需要扩展类型系统,增加表示始终不可为 null 变量的能力,而同时,类型系统完全是可靠的,Dart 编译器和运行时将信任这些类型,并且能够在类型系统保证变量不为 null 的情况下生成优化的代码。
为了确保可以使用清晰的语义来构建 null safety,开发团队决定对 Dart 语言和库进行一些破坏性更改,这些更改对 Dart 类型系统的一些特殊情况和一些 Dart 核心库进行了较小的调整,以确保与可空性相关的可用性和性能。
Pub 工具性能改进
Dart 平台通过 pub 客户端工具和 pub.dev 软件包存储库内置了对软件包管理的支持,该软件包存储库在过去一年中增长了 200%,现在拥有近 10 000 个软件包。
此版本中,通过添加对运行时并行获取软件包pub get的支持,并且延迟了pub run预编译,优化了 Pub 工具的性能。
在使用flutter pub get、flutter create创建的新项目上运行的非正式基准测试中,总执行时间从 Flutter 1.12(Dart 2.7)中的大约 6.5 秒减少到 Flutter 1.17(Dart 2.8)的 2.5 秒。在 Flutter gallery 这样更大型的应用中,时间从大约 15 秒减少到大约 3 秒。
管理依赖项的 pub outdated
此版本中,Pub 还新增了一个 pub outdated 命令,它通过将当前使用的软件包版本与 pub.dev 上可用的最新版本进行比较,可以始终使用最新的稳定版本软件包,同时也可以知道其它版本情况。
$ pub outdated Dependencies Current Upgradable Resolvable Latest foo 1.3.0 1.3.1 1.3.1 1.3.1 bar 2.0.1 2.1.0 3.0.3 3.0.3 1 upgradable dependency is locked (in pubspec.lock) to an older version. To update it, use `pub upgrade`. 1 dependency is constrained to a version that is older than a resolvable version.
以上输出信息显示可以使用 pub upgrade 自动升级到 foo 1.3.1,这是 foo 的最新版本;同时还告诉我们,虽然我们可以自动升级到 bar 2.1.0,但还可以使用 3.0.3 版本。由于升级到 bar 3.0.3 是主要版本升级,因此需要通过编辑 pubspec.yaml 文件来选择升级:
dependencies: foo: ^1.3.0 bar: ^3.0.3
在进行编辑并运行 pub upgrade 之后,pub outdated 现在报告所有依赖项都是最新的:
$ pub outdated Dependencies Current Upgradable Resolvable Latest all up-to-date
完整的更新说明查看:https://medium.com/dartlang/announcing-dart-2-8-7750918db0a