手机

为什么Flutter开发APP效能最接近原生 前端程序员请关注

为什么Flutter开发APP效能最接近原生 前端程序员请关注

一、Flutter是什么

Flutter是Google公司推出的跨终端的开发框架,支援Android、iOS和WEB终端。1.0版在2018年12月5日释出,目前的最新版本是1.5,它采用的开发语言是Dart,Dart也是Google开发的计算机程式语言,语法类似C,是编译型语言:

hello world例子,打印字串“Hello World!”:

main() {

print(Hello World!);

}

二、为什么Flutter效能好

1、没有桥接层

React Native、Weex等技术都是跨终端的框架,然而效能跟原生App存在很大差距。这是由于它们的工作原理决定的:

图1 React Native互动原理图

React Native、Weex等技术多了一个桥接层,所以界面渲染会慢一些,由于UI渲染非常频繁,想要不卡顿,基本上比较难,效能和使用者体验跟原生程式码有差距。而这恰恰是Flutter的优势所在:

图2 Flutter互动原理图

Dart可以被编译成不同平台的原生代码,让Flutter不通过桥接层直接跟平台通讯,自然效能会快一些。

2、编译执行

JavaScript是解释执行的,Dart是编译执行的,效能谁好一目了然。

3、Flutter Engine虚拟机器

Flutter是依靠Flutter Engine虚拟机器在iOS和Android上执行的,Flutter Engine使用C/C++编写,开发人员通过Flutter框架直接和API在内部进行互动,所以具有输入低延迟和UI渲染高帧速率的特点。除了这特点之外,Flutter还提供了自己的小部件,Flutter小部件是使用从React获取灵感的现代框架构建的。 中心思想是您使用小部件构建UI。

视窗小部件根据其当前配置和状态描述了它们的检视。 当视窗小部件的状态发生更改时,视窗小部件会重建其描述,框架将根据前面的描述进行区分,以确定底层呈现树从一个状态转换到下一个状态所需的最小更改。可以直接在OS平台提供的画布上进行描绘,也就是一些核心类库直接放到虚拟机器里面,呼叫起来更快。

图3 Flutter系统架构图

从它的系统结构可以看出,类似安卓的ART(Android Run Time)虚拟机器,同样采用AOT(Ahead of TIme)技术,会在APP安装时就编译成机器语言,不再解释执行,从而优化了APP执行的效能。

4、自带渲染引擎

Flutter使用Google自己的Skia渲染引擎,而Android系统自带Skia引擎,iOS平台上Flutter也会把Skia引擎打包到APP中,从而实现了高效渲染。而React Native通过桥接层访问原生UI,操作频繁就容易出效能问题。

综合所述,Flutter是效能最接近原生程式码的一种开发框架,未来也会是构建GoogleFuchsia应用的主要方式,前途不可限量,唯一的问题就是需要学习一门新的语言:Dart,而有Java或者C#语言基础的程序员会比较容易学习。