美文网首页
flutter 入门<一>为什么采用Dart语言

flutter 入门<一>为什么采用Dart语言

作者: _苏丽君_ | 来源:发表于2019-04-28 15:44 被阅读0次

首先,要先了解两个概念。
AOT(ahead of time)静态编译,AOT程序的典型代表是用C/C++开发的应用,它们必须在执行前编译成机器码。
JIT(just in time)动态编译。JIT的代表则非常多,如JavaScript、python等。
现在我们看看Flutter为什么选择Dart语言?笔者根据官方解释以及自己对Flutter的理解总结了以下几条(由于其它跨平台框架都将JavaScript作为其开发语言,所以主要将Dart和JavaScript做一个对比):

开发效率高

Dart运行时和编译器支持Flutter的两个关键特性的组合:

基于JIT的快速开发周期:Flutter在开发阶段采用,采用JIT模式,这样就避免了每次改动都要进行编译,极大的节省了开发时间;

基于AOT的发布包: Flutter在发布时可以通过AOT生成高效的ARM代码以保证应用性能。而JavaScript则不具有这个能力。

高性能

Flutter旨在提供流畅、高保真的的UI体验。为了实现这一点,Flutter中需要能够在每个动画帧中运行大量的代码。这意味着需要一种既能提供高性能的语言,而不会出现会丢帧的周期性暂停,而Dart支持AOT,在这一点上可以做的比JavaScript更好。

Flutter高性能主要靠两点来保证,首先,Flutter APP采用Dart语言开发。Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。但是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。速度的提升对高帧率下的视图数据计算很有帮助。其次,Flutter使用自己的渲染引擎来绘制UI,布局数据等由Dart语言直接控制,所以在布局过程中不需要像RN那样要在JavaScript和Native之间通信,这在一些滑动和拖动的场景下具有明显优势,因为在滑动和拖动过程往往都会引起布局发生变化,所以JavaScript需要和Native之间不停的同步布局信息,这和在浏览器中要JavaScript频繁操作DOM所带来的问题是相同的,都会带来比较可观的性能开销。

快速内存分配

Flutter框架使用函数式流,这使得它在很大程度上依赖于底层的内存分配器。因此,拥有一个能够有效地处理琐碎任务的内存分配器将显得十分重要,在缺乏此功能的语言中,Flutter将无法有效地工作。当然Chrome V8的JavaScript引擎在内存分配上也已经做的很好,事实上Dart开发团队的很多成员都是来自Chrome团队的,所以在内存分配上Dart并不能作为超越JavaScript的优势,而对于Flutter来说,它需要这样的特性,而Dart也正好满足而已。

类型安全

由于Dart是类型安全的语言,支持静态类型检测,所以可以在编译前发现一些类型的错误,并排除潜在问题,这一点对于前端开发者来说可能会更具有吸引力。与之不同的,JavaScript是一个弱类型语言,也因此前端社区出现了很多给JavaScript代码添加静态类型检测的扩展语言和工具,如:微软的TypeScript以及Facebook的Flow。相比之下,Dart本身就支持静态类型,这是它的一个重要优势。

Dart团队就在你身边

看似不起眼,实则举足轻重。由于有Dart团队的积极投入,Flutter团队可以获得更多、更方便的支持,正如Flutter官网所述“我们正与Dart社区进行密切合作,以改进Dart在Flutter中的使用。例如,当我们最初采用Dart时,该语言并没有提供生成原生二进制文件的工具链(这对于实现可预测的高性能具有很大的帮助),但是现在它实现了,因为Dart团队专门为Flutter构建了它。同样,Dart VM之前已经针对吞吐量进行了优化,但团队现在正在优化VM的延迟时间,这对于Flutter的工作负载更为重要。”

相关文章

  • Flutter 学习笔记 1

    本文的学习笔记来源于:Flutter 实战作者:wendux 一、Flutter 为什么采用 Dart 语言开发?...

  • flutter 入门<一>为什么采用Dart语言

    首先,要先了解两个概念。AOT(ahead of time)静态编译,AOT程序的典型代表是用C/C++开发的应用...

  • Dart基础入门

    Flutter应用是采用Dart语言来编写,在学习Flutter之前,我们有必要先学习一下Dart语言。Dart是...

  • Dart语言核心特性

    Flutter采用Dart语言开发,相信大家会有一个疑问,为什么不采用应用更为广泛的JavaScript、Java...

  • Flutte选择Dart简介

    说明 flutter采用的是dart语言,所以了解dart语言的基本语法就是必要的了。那为啥要采用这种语言了,其实...

  • Dart 基础

    为什么学习dart?谷歌推出了flutter,而flutter是基于dart语言的 dart是函数式编程语言 所有...

  • Dart 语言入门 (四)

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Dart 语言入门 (六) - Exceptions

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Dart 语言入门 (五)

    Dart 语言系列 Dart 语言入门 (一) Dart 语言入门 (二) Dart 语言入门 (三) Dart ...

  • Dart系列-方法

    周末学习了一下Dart语言,按照慕课网Flutter开发第一步-Dart编程语言入门[https://www.im...

网友评论

      本文标题:flutter 入门<一>为什么采用Dart语言

      本文链接:https://www.haomeiwen.com/subject/bctjnqtx.html