Почему Java быстрее при использовании JIT против компиляции в машинный код?
Я слышал, что Java должна использовать JIT, чтобы быть быстрым. Это имеет смысл при сравнении с интерпретацией, но почему кто-то не может создать опережающий компилятор, который генерирует быстрый Java-код? Я знаю оgcj
, но я не думаю, что его вывод, как правило, быстрее, чем Hotspot, например.
Есть ли какие-то вещи в языке, которые затрудняют это? Я думаю, что это сводится только к этим вещам:
отражениезагрузки классовЧто мне не хватает? Если я буду избегать этих функций, возможно ли будет скомпилировать Java-код один раз в машинный код?