Я думаю, что некоторые компиляторы Java делают, Microsoft .NET нет, и это лучше, чем предварительно скомпилированные, когда вы сравниваете яблоки с апельсинами. Предварительно скомпилированный может поставляться с вариантами библиотеки, настроенными на разные процессоры (или, более вероятно, разные наборы команд), и проверка во время выполнения, чтобы выбрать, какую библиотеку загружать, намного дешевле, чем JIT. Например, mplayer делает это (Google для mplayer enable-runtime-cpudetection).