特别注意:
-
JIT 和 AOT指的是程序运行方式,和编程语言并非强关联的。
-
有些语言可以以JIT方式 & AOT方式一起运行,如Java,它可在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码
-
通常区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT
Dart语言的特点
Dart语言具备开发效率高、高性能 & 类型安全的特点
具体如下:
3. 原理解析
3.1 框架结构
Flutter框架主要分为两层:FrameWork层、Engine层,如下图所示:
说明:开发时,主要基于Framework层;运行时,则是运行在 Engine上。每层的具体介绍如下:
3.2 原理概述
开发时,主要基于Framework层;运行时,则是运行在 Engine上
Engine是Flutter的独立虚拟机,由它适配 & 提供跨平台支持;因为其存在,Flutter不使用移动端系统的原生控件, 而是使用自己 Engine 来绘制 Widget (Flutter的显示单元);Dart 代码是通过 AOT 编译为平台的原生代码,所以 Flutter可直接与平台通信,不需要JS引擎的桥接。
同时 Flutter 唯一要求系统提供的是 canvas,以实现UI的绘制。
编译时,具体如下: