Предположим, у нас есть система с несколькими процессорами.Будет ли у каждого из этих процессоров отдельная JVM?
Нет, для каждого запуска программы будет запущен один экземпляр JVM, но JVM может (в зависимости от реализации) использовать несколько процессов и, безусловно, работает с несколькими потоками , оба из которых могут использовать многопроцессорные средства системы.
Если нет, тогда возникает другой вопросэто на компьютере с двумя разными ОС (скажем, Windows и RedHat), и мы должны запустить приложение Java на любой из них.JVM будет отличаться для обеих платформ, тогда как это будет работать?
Вы устанавливаете отдельную JVM для каждой ОС.Опять же, в каждой ОС можно ожидать запуска одного экземпляра JVM для каждого выполнения программы, и вышеизложенное применимо снова.
Java «компилируется один раз, запускается где угодно», при условии, что версии JVM совместимыс тем, что вы скомпилировали, не имеет значения, на какой ОС и соответствующей JVM вы выполняете его, он будет работать точно так же.
Это потому, что байт-код Java не зависит от платформы / ОС (он интерпретируетсяJVM), в то время как сама JVM зависит от платформы / ОС.