Lisp also has good AOT compilers, but you need to provide the necessary (optional) type annotations.
So in the end you end up with code that looks no different than from static languages.
With ML-like type inference and dynamic type support, there is hardly any disadvantage with static type languages and you get the tooling support.
Dynamic languages can have very nice tooling, and we are yet to regain what was possible in Xerox and Genera environments, but your environment needs a live image of the code to produce good results, hence JIT.
So in the end you end up with code that looks no different than from static languages.
With ML-like type inference and dynamic type support, there is hardly any disadvantage with static type languages and you get the tooling support.
Dynamic languages can have very nice tooling, and we are yet to regain what was possible in Xerox and Genera environments, but your environment needs a live image of the code to produce good results, hence JIT.