Dart VM命令行工具
Dart命令支持JIT和AOT模式
1. JIT模式支持两种方式,
-
直接在dart VM中运行dart source code
//hello.dart int add(int a, int b) { return a + b; } void main() { var sum = add(5,100); print("sum is $sum"); }
$ dart hello.dart sum is 105
-
先把dart source code编译成dill binary,然后在dart VM中运行dill binary , 生成的dill文件中包含经过词法分析,语法分析和语义分析后的带标记的抽象语法树AST,dart称之为Kernel AST, dill binary是跨平台的格式, 可以在不同平台的dart VM中运行。
$ dart compile kernel hello.dart # generate hello.dill $ dart run hello.dill
2. AOT模式支持两种方式
-
直接把dart source code编译成可执行文件,可执行文件包含source code的机器码,以及简化版的dart runtime
$ dart compile exe hello.dart # generate executable hello $ ./hello sum is 105
-
把dart source code编译成snapshot,snapshot包含source code的机器码,以及代码运行过程中产生的heap object全部dump到snapshot,snapshot可以通过precompiled dart runtime快速加载运行。
$ dart compile aot-snapshot hello.dart # generate hello.aot $ dartaotruntime hello.aot
-
Dart还是支持把dart source code转化为js,然后用js引擎来执行:
一个简单的dart代码,转换为js的代码比较复杂,而同样的typescript也可以把转为js,生成的代码质量比较高。