@qinyun
2018-02-23T11:14:07.000000Z
字数 3316
阅读 1911
未分类
今天,Google正式发布了Dart 2,最新的版本诠释了Google对Dart这门语言的新认识:Dart是针对Web和移动客户端开发进行独特优化的语言。
以下全文来自Dart产品经理Anders Thorhauge Sandholm对Dart 2的一些解读。
Dart 2大大加强和精简了类型系统,清理了语法,并重建了大部分开发工具链,使移动和Web开发变得更加愉快和高效。Dart 2还融合了包括Flutter、AdWords和AdSense在内的语言早期使用者的经验教训,以及针对客户反馈的成千上万大大小小的问题进行了改进。
Google为什么认为Dart能够满足客户端开发人员的需求?Google认为除了现代通用语言所必需的属性之外,客户端开发还应受益于语言的以下特性:
高效。语法必须清晰简洁,工具简单,开发周期接近即时。
快速。即使在小型移动设备上,运行时的性能和启动也必须非常出色且可预测。
便携。客户开发人员今天必须考虑三种平台:iOS、Android和Web,这门语言需要在所有这些平台上运行良好。
易用。如果这门语言希望让数百万开发人员受用,那么它就不能脱离实际。
反应式。这种语言应该支持反应式的编程风格。
Dart已经用于Google和其他公司的Web、iOS和Android平台上许多高质量、关键性的应用程序,它对移动和Web开发有着巨大的益处:
Dart加快了开发人员的速度,因为它具有清晰、简洁的语法,并且能够使用JIT编译器在VM上运行。后者允许在移动开发过程中进行有状态的热重载,从而实现超短的开发周期,您可以在设备上运行的应用程序中编辑、编译和替换代码。
凭借其能够提前有效地编译为本地代码的能力,Dart在移动设备具有可预测性、高性能和快速启动的能力。
Dart支持编译为本地代码(ARM,x86等)以实现快速的移动性能,并且可以将其转换为用于Web的高效的JavaScript。
Dart对于许多现有的开发人员来说是易用的,这要归功于其不容忽视的面向对象和语法特点—— 它允许任何使用C ++、C#、Objective-C或Java的开发人员在几天之内迅速提高工作效率。
Dart适用于反应式编程,其核心库包括streams和futures 它也通过其世代垃圾收集器来管理短暂对象。
在Dart 2中,Google采取了进一步措施巩固Dart作为客户端开发语言的霸主地位。特别增加了一些新功能,包括强大的打字功能,以及将UI定义为代码。
AdWords和AdSense背后的团队已经使用Dart构建了一些Google最大和最先进的Web应用,以管理那些给Google带来大部分收入的广告。就是在与这些团队进行密切合作合作之后,Google发现了增强Dart类型系统的大好机会,这有助于Dart开发人员在开发过程早期发现bug,并更好地扩展到大型团队构建的应用程序中,提高整体代码质量。
当然这不是唯一的方式,在广袤的Web生态系统中,向JavaScript添加类型注释的趋势也在增长。例如,TypeScript和Flow都使用类型注释和推理来扩展JavaScript,以提高分析代码的能力。
在下面的小例子中,Dart 2的类型推断有助于发现一些微小的错误,并因此帮助提高整体代码质量。
void main() {
List<int> prices = ['99', '27', '10000', '20000000'];
// Sort in place from smallest to largest
prices.sort();
print('Lowest price is ${prices[0]}!');
}
这段代码代表了什么?你可以合理地预期它会打印“27”,但是,如果没有启用Dart 2的声音类型系统,它将打印“10000”,因为按照字典顺序排列,这恰好是字符串列表中最小的元素。但是,使用Dart 2时,此代码会给出类型错误。
在创建UI时,你必须在单独的用户界面标记语言和编写应用程序的编程语言之间进行切换,Google正在努力使UI变成一种愉快的体验,以显著减少对上下文切换的需求。Dart 2可选new
和const
。这个非常强大的功能本身非常有价值,也为其他事情的发展指明了方向。例如,有了new
和const
两种选择,我们可以清理UI小部件的定义,以便它不再使用单个关键字。
// Before Dart 2
Widget build(BuildContext context) {
return new Container(
height: 56.0,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: new BoxDecoration(color: Colors.blue[500]),
child: new Row(
...
),
);
}
// After Dart 2
Widget build(BuildContext context) =>
Container(
height: 56.0,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
child: Row(
...
),
);
view raw
Dart最重要的用途之一就是Flutter,它是谷歌新的移动UI框架,为iOS和Android制作高质量的原生界面。
开发人员曾使用Flutter构建一个非常受欢迎的节目 Hamilton的官方应用程序,并在构建时间上打破了记录。Flutter使用反应式编程风格并逐个像素控制整个UI。对于Flutter而言,Dart在易学性、反应式编程、出色的开发速度以及具有快速的垃圾回收器、高性能运行系统等方面都符合要求。
推荐阅读:
为什么说Flutter是革命性的?
为什么原生应用开发者需要关注Flutter?
Dart是经过关键性Web应用程序验证的平台。它拥有为Web量身打造的库,如dart:html
,以及完整的基于Dart的Web框架,使用Dart进行Web开发的团队会对速度的改进感到非常激动。正如Google AdWords工程副总裁Manish Gupta所说的那样:
AdWords前端庞大而复杂,对Google的大部分收入至关重要。
我们之所以选择Dart是因为其高性能、可预测性和易学性,完善的类型系统,以及完美地支持Web和移动应用。
现在,我们的工程师比以前的工作效率高出两到三倍,这让我们十分欣慰。
借助Flutter和Dart,开发人员终于有机会使用共享代码库,为Android、iOS和Web编写高质量的应用程序。此后,团队成员可以在平台之间进行无障碍的切换,并通过代码审查等互助。到目前为止,我们已经看到AdWords Express和AppTree等团队在移动和Web中共享其代码的50%到70%。
Dart是一个开源项目和开放的ECMA标准。Google欢迎对Dart核心项目和Dart软件包生态系统的改进提出建议的开发者。
你可以在命令行中试用Flutter中的 Dart 2 和Dart SDK。至于Dart SDK,可从开发通道获取最新的Dart 2预发行版,并确保使用具有--preview-dart-2
标志的版本运行代码。
今天发布的Dart 2是一款高效、简洁、已通过实战检验的语言,能够应对现代应用程序开发的挑战。它已经被这个星球上一些最苛刻的开发者所喜爱,希望你也会喜欢它。
Flutter:
https://github.com/flutter/flutter/wiki/Trying-the-preview-of-Dart-2-in-Flutter
Dart SDK :
https://www.dartlang.org/install
原文链接: