人类对性能的期望永无止境。尽管早期用编译型语言C/C++已经达到性能要求,中间件语言Java/C#也随着硬件性能提升施展拳脚,人类发现,字节码或者中间语言代码完全可以直接转换成机器码,岂不实现了C/C++的性能? AOT技术应运而生。
AOT(Ahead-Of-Time)编译是一种编译技术,它将程序源代码或中间表示(如 Java 字节码或 .NET 的 IL 代码)直接编译成目标平台的机器代码。这与 JIT(Just-In-Time)编译相对,JIT 编译是在程序运行时进行的,将中间代码转换成机器代码。
.NET平台CoreRT就是AOT技术, 它是一个运行时,能够将 C# 代码编译为本机机器代码而不需要任何运行时解释器或 JIT (Just-In-Time) 编译器。Java平台GraalVM也是AOT技术的代表。
Android平台ART技术也是AOT技术,自Android 4.4 KitKat开始成为默认运行时,比之前的Dalvik虚拟机JIT效率更高。