Он говорит, что нецелесообразно компилировать весь байт-код на машинный язык во время выполнения. Вы можете предварительно скомпилировать все, но это не тот подход, который использует JIT.
С одной стороны, неизвестно, насколько велика программа. Люди будут очень расстроены при 30-минутном запуске, так как он скомпилирует каждую найденную библиотеку (данная Java-программа не находится в одном файле, она имеет доступ ко всему в пути к классам)
С другой стороны, даже если вы точно сказали системе, какие компоненты будет использовать ваша программа, невозможно сказать, сколько вашей программы можно было бы использовать для данного запуска - люди будут более расстроены при 30-минутном запуске, чтобы запустить программа командной строки с параметрами, состоящими из "--help"
Наконец, он может сделать несколько хороших трюков, компилируя во время работы. с помощью метода, подобного этому:
public testMeh(int param) {
if(param == 35)
do bunches of crap;
else if (param > 5)
do much more crap;
else
return;
}
Компилятор может вызвать его один или два раза и на лету распознать, что значения 5 и ниже просто возвращаются. Если он вызывается все время со значением 2, он может заменить вызов метода ENTIRE на if (param! = 2) testMeh (param);
, что исключает весь вызов метода для этого номера. Позже можно выяснить, что отсутствие вызова этого метода означает, что некоторые переменные-члены не могут измениться, и это может свести на нет другие части кода.
Это просто чертовски сложно, если вы прекомпилируете материал. Я имею в виду, что вы можете писать код исключения везде, когда узнаете шаблоны, но ваш код быстро станет кошмаром.
Теперь, если вы спрашиваете, почему бы не предварительно скомпилировать всю программу, когда вы компилируете ее в байт-код - это другой вопрос, а не то, к чему обращалась цитата вообще, - но вы можете сделать это. Это было сделано и работает довольно хорошо. Вы торгуете мобильностью и гибкостью во время выполнения для более быстрого запуска.