Dart 是(可能唯一)一种同时支持 JIT/AOT 编译的语言. JIT 开发模式时能快速编译生效,是Hot Reload体验的关键。AOT 生成高效的原生代码,和 C/C++ 生成的代码不遑多让。
Dart 在谷歌内部和外部都有成功的使用场景。
用 Dart 写布局很容易上手,写多了,会感觉比 XML 更爽,还能在布局里写简单逻辑。Dart2 让这个优势更明显了。已经有人称之为最容易学习的语言。
App 最重要的因素可能是平滑(smooth),Flutter 的线程体系里控制 GPU 和 Dart 在不同线程,可以说界面永远能刷新(不卡顿),也不会出现动画速度过快的不协调。
JavaScript 可能是最广泛使用的语言。Flutter 比起 ReactNative 少了一层 JavaScript Bridge, 这个 Bridge 涉及多种语言,多个线程,会导致代价最为高昂的线程切换,这也是RN性能的硬伤。
Dart 之所以比 Java 好,
1 吸取了新生代语言的优点,语法简洁优雅
2 单线程,也没有锁,GC 相对平滑,没有了 JVM 的卡顿
3 拥有完全权利,不会惹出88亿美元的官司
Fuchsia 里没有一行代码支持Java,看得我心里不知道有多乐。
虽然安装包大小在安卓上有明显差距,但是iOS上差距会变小,因为苹果会再打开安装包加密,会增大很多,11M的包发布时能到>20M.
其它
我之前做的 Flutter App,两三天就更新一个版本。
产品很担心两个问题:上传包太多会占用苹果服务器大量空间。三天两头审核,苹果会不会故意把这个App的审核速度放慢。
但是产品同学想想自从有了Flutter,改变了很多事情。以前测试一个版本要找2个端的开发人员去安装,现在一个全部搞定,同时测试。界面调整时,几乎瞬时能看到结果,大大节约了时间。所以产品同学心安理得的接受了这玩意。