未来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)将无法使用。

➡️

继续阅读