Dlaczego Java jest szybsza, gdy używa JIT vs. kompilacji do kodu maszynowego?

Słyszałem, że Java musi używać JIT, aby być szybkim. Ma to sens w porównaniu z interpretacją, ale dlaczego ktoś nie może stworzyć kompilatora wyprzedzającego, który generuje szybki kod Java? wiem ogcj, ale nie sądzę, aby jego wyjście było zazwyczaj szybsze niż na przykład Hotspot.

Czy są rzeczy dotyczące języka, które utrudniają to? Myślę, że sprowadza się to tylko do tych rzeczy:

OdbicieŁadowanie klas

czego mi brakuje? Jeśli uniknę tych funkcji, czy możliwe byłoby jednokrotne skompilowanie kodu Java do natywnego kodu maszynowego i wykonanie?

questionAnswers(10)

yourAnswerToTheQuestion