Bom, nesse caso não há muito o que uma linguagem de programação AOT possa fazer para competir com linguagens que usa JIT. Mas há casos e casos:
- Se seu programa precisa ser leve com pouco gasto de RAM e Memória: AOT
- Se seu programa for criado para iniciar super rápido e ser usado rapidamente: AOT
Em outros casos, não há problema nenhum em usar JIT sabendo que:
-
Apesar do aumento de performance, o JIT vai consumir mais cpu e memória para otimizar o seu código em execução
-
A inicialização de um processo com JIT é mais lento que a inicialização de um projeto AOT por conter estruturas adicionais para compilação in-runtime do projeto
Mas se seu código vai ficar por muito tempo vivo, de preferência continuamente executando alguma coisa então não tem nada de errado em usar JIT.
Inclusive o canal do Andreas Kling que eu citei em outro post, para lidar com o ladybird, seu webbrowser ele decidiu criar um interpretador javascript próprio chamado LibJS que contém um JIT próprio e você pode acompanhar por exemplo este Vídeo sobre ele prototipando um JIT
E voltando ao assunto principal, não tem com uma linguagem AOT competir com um JIT porque as abordagens são diferentes:
AOT: Passei uma vez pelo código e o binário vai ser justamente isso aqui x.
JIT: Tive que passar várias vezes pelo mesmo trecho de código então acho que posso otimizar isso aqui x.