Цитата:
Сообщение от
belugin
JIT и AOT взаимоисключающие понятия.
Если брать Андроиды то да.
А если брать контекст дискуссии особенностей компиляторов в .NET и Java, то нет.
В разном контексте ширина толкования JIT компиляции - разная.
Цитата:
JIT compilation is a combination of the two traditional approaches to translation to machine code – ahead-of-time compilation (AOT), and interpretation – and combines some advantages and drawbacks of both.
https://en.wikipedia.org/wiki/Just-in-time_compilation
Стратегия компиляции .NET (не уверен насчет NET.Core) это AOT. Хотя по ходу этот термин может означать как минимут два подхода. Ngen.exe as Pre-JIT и
собственно внутренняя реализация JIT.
Цитата:
CLR design mandates that the JIT happens before the relevant code executes,
JVM's in contrast would be free to interpret the code for a while while a separate thread creates a machine code representation.
При этом конечно то что кто-то пишет что
Цитата:
the CLR compiles all of the machine code once when it’s called at runtime
слишком упрощенно. Думаю что многое изменилось в .NET и тот же NET.Core скорее всего использует более продвинутую копмиляцию в стиле "мы еще более Java".
При этом процесс компиляции CLR называют JIT компиляцией.
Но момент этой компиляции и необходимость ее перед запуском это AOT.
В отличие от интерпретации.
То есть AOT снаружи JIT и есть AOT внутри JIT.
Цитата:
The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
https://en.wikipedia.org/wiki/Common_Language_Runtime