Я читал в интернете, и некоторые говорят, что Java-приложение выполняется виртуальной машиной Java (JVM). Слово "выполнить" меня немного смущает. Как я знаю, операционная система может выполнять не-Java-приложение (то есть написанное на C, С++...). На нижнем уровне это означает, что ОС загрузит двоичную программу в память, а затем направит процессор для выполнения инструкций в памяти.
Итак, теперь с JVM, что произойдет? Как я знаю, JVM (содержит среду выполнения) будет сначала вызываться ОС. С этого момента JVM создаст один (или много) поток для приложения. Интересно, играет ли роль ОС в игре? Мне кажется, что JVM "обходила" ОС и напрямую поручила процессору выполнить приложение. Если да, зачем нам нужна ОС?
Взяв немного больше, JVM будет использовать свой JIT для компиляции кодов байтов приложения в машинные коды, а затем выполнить эти машинные коды. Так как это уже машинные коды, нужна ли нам JVM? Поскольку вместо JVM ОС может дать указание CPU выполнять эти машинные коды. Я здесь ошибаюсь?
Я хотел бы узнать больше от людей здесь. Пожалуйста, поправьте меня, если я ошибаюсь. Большое вам спасибо!