未来AOT编译会取代JIT吗?
💡
原文中文,约1300字,阅读约需4分钟。
📝
内容提要
AOT编译器与JIT编译器相比有限制,如编译时间长、运行时性能稍差、与某些框架不兼容。但AOT编译器具有快速启动时间的优势,适用于自动扩展微服务和无服务器解决方案。与其他运行时竞争更重要的是JIT对工作负载优化更快。CRaC是比AOT更有前途的解决方案,更易实现且没有AOT的缺点。HotSpot不是真正的JIT编译器,AOT编译器可能生成较差的代码。AOT编译器已存在20年,现有两种免费替代品。Android从5开始使用AOT,从7开始混合使用JIT和AOT。JIT可能永远不会被取代,AOT仅在少数情况下表现出色。使用JIT,甚至不需要使用javac运行单文件应用程序。
🎯
关键要点
-
AOT编译器在某些领域不如JIT编译器,但其快速启动时间适合自动扩展微服务和无服务器解决方案。
-
AOT编译器的缺点包括编译时间长、运行时性能稍差和与某些框架不兼容。
-
JIT编译器对工作负载优化更快,能够动态反应,AOT只能进行最佳猜测。
-
应用程序部署环境受云供应商计费模型驱动,而非最佳性能模型。
-
CRaC提供更快的启动时间,通过快照技术实现,可能是比AOT更有前途的解决方案。
-
Java的HotSpot并不是真正的JIT编译器,AOT可能生成较差的代码,因为不支持去优化。
-
Java的AOT编译器已存在约20年,现有两种免费替代品(GraalVM和OpenJ9)。
-
Android从5开始使用AOT,从7开始混合使用JIT和AOT,因编译时间较长。
-
JIT编译器在使用上更方便,AOT仅在少数情况下表现出色,代价是可移植性和构建复杂性增加。
-
没有JIT,某些工具(如JShell)将无法使用。
➡️