Dart语言概览

 

Dart特性

Dart同时支持JIT(Just In Time,即时编译)和AOT(Ahead of Time,运行前编译)两种编译模式。算法

JIT 在运行时即时编译,在开发周期中使用,能够动态下发和执行代码,开发测试效率高,但运行速度和执行性能则会由于运行时即时编译受到影响。编程

AOT 即提早编译,能够生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都须要提早编译,开发测试效率低。并发

Flutter在开发期使用JIT编译,能够缩短产品的开发周期,例如热重载就是基于该特性。在发布期使用AOT,具备运行速度快、执行性能好的特色。

内存分配与垃圾回收

Dart VM的内存分配策略为,建立对象时只须要在堆上移动指针,内存增加始终是线性的,省去了查找可用内存的过程。框架

在Dart中,并发是经过Isolate实现的。Isolate是相似于线程但不共享内存,独立运行的worker。这样的机制,就可让Dart实现无锁的快速分配。函数

Dart的垃圾回收采用多生代算法。新生代在回收内存时采用“半空间”机制,出发垃圾回收时,Dart会将当前半空间中的“活跃”对象拷贝到备用控件,而后总体释放当前空间的全部内存。回收过程当中,Dart只须要操做少许的“活跃”对象,没有引用的大量“死亡”对象则被忽略,这样的回收机制很适合Flutter框架中大量Widget销毁重建的场景。工具

单线程

Dart是单线程模型,不存在资源竞争和状态同步的问题。这就意味着,一旦某个函数开始执行,就将执行到这个函数结束,而不会被其余Dart代码打断。oop

Dart中并无线程,只有Isolate(隔离区)。Isolates以前不会共享内存,就像几个运行在不一样进程中的worker,经过事件循环(Event Looper)在事件队列(Event Queue)上传递消息通讯。布局

无需单独的声明式布局语言

  • 在Flutter中,界面布局直接经过Dart编码来定义。
  • Dart声明式编程布局易于阅读和可视化,使得Flutter并不须要相似JSX或XML的声明式布局语言。全部的布局都使用同一种格式,也使得Flutter很容易提供高级工具使布局更简单。
  • 开发过程也不须要可视化界面构建器,由于热重载可让咱们当即在手机上看到效果。
相关文章
相关标签/搜索