⚡️ ПОЧЕМУ JAVA ТАКАЯ БЫСТРАЯ?
Есть много языков, которые не компилируется в машинный код, а исполняются на виртуальной машине или интерпритаторе - C#, Python, JavaScript и так далее, но самый быстрый из них Java.
😮 Почему?
В начале 2000-х на рынке JVM существовало несколько ключевых игроков:
Sun Microsystems HotSpot
IBM J9
Oracle JRockit
Excelsior JET
Но в декабре 2006 года, с выходом Java 6, HotSpot вырвалась вперед, разгромив конкурентов, благодаря JIT-компиляции.
🤔 Как работает JIT?
Just In Time компиляция — это механизм, который компилирует часто исполняющиеся участки кода в машинный код во время выполнения программы, что значительно ее ускоряет.
Рассмотрим метод:
public void exampleMethod(int value) {
if (value > 0) {
// Исполняется часто
System.out.println("Positive value");
} else {
// Исполняется редко
System.out.println("Non-positive value");
}
}
При первом вызове exampleMethod JVM интерпретирует байт-код
Если exampleMethod вызывается многократно с положительными значениями, JIT-компилятор определяет это как "горячую точку"
После достижения порога вызовов этой точки с условием value > 0 компилируется машинный код для метода
Если позже будет вызван метод с отрицательным значением (что не ожидалось), произойдет
uncommon trap
, и управление передастся интерпретатору для обработки этого случая
☕️ То есть, JVM в рантайме определяет путь, который чаще всего проходит программа, и именно этот путь компилируется нативно и максимально оптимизируется.
⚡Благодаря такой оптимизации джава уничтожает бенчмарки, потому что в них обычно повторяется один и тот же код.
👨💻 Джуниор