JIT和AOT

程序主要有两种运行方式:静态编译动态解释

1. 静态编译

的程序在执行前全部被翻译为机器码,通常将这种类型称为AOT (Ahead of time)即 “提前编译”.
代表:c/c++开发的应用

2.动态解释

解释执行的则是一句一句边翻译边运行,通常将这种类型称为JIT(Just-in-time)即“即时编译”.
代表:JavaScript、python等,所有脚本语言都支持JIT模式

注意:

的是JIT和AOT指的是程序运行方式,和编程语言并非强关联的,有些语言既可以以JIT方式运行也可以以AOT方式运行,如Java、Python,它们可以在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码,也许有人会说,中间字节码并非机器码,在程序执行时仍然需要动态将字节码转为机器码,是的,这没有错,不过通常我们区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT。

3.Flutter为什么选择Dart语言?

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

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

b.高性能
Dart支持AOT,提供流畅、高保真的的UI体验.

c.快速内存分配
Flutter框架使用函数式流,这使得它在很大程度上依赖于底层的内存分配器.

d.类型安全
Dart是类型安全的语言,支持静态类型检测,所以可以在编译前发现一些类型的错误,并排除潜在问题,这一点对于前端开发者来说可能会更具有吸引力。

你可能感兴趣的:(JIT和AOT)