Поэтому я немного запутался относительно проверки байт-кода, который происходит внутри JVM. Согласно книге Deitel и Deitel, Java-программа проходит пять этапов (редактирование, компиляция, загрузка, проверка и выполнение) (глава 1). Верификатор байт-кода проверяет байт-код на этапе проверки. Нигде в книге не упоминается, что верификатор байт-кода является частью загрузчика классов.
Однако согласно docs of oracle , загрузчик классов выполняет задачу по загрузке, связыванию и инициализации, и в процессе связывания он должен проверять байт-код.
Теперь, это проверка байт-кода, о которой говорят Deitel и Deitel, и проверка байт-кода, которая этот документ оракула говорит о том же процессе?
Или проверка байт-кода происходит дважды, один раз во время процесса связывания, а другой - с помощью верификатора байт-кода?
Изображение, описывающее фазы программы java, упомянутые в книге Дителя и Дителя (я взял этот рисунок из одного из ответов ниже nobalG:))