Вы здесь очень много. Я просто предлагаю следующее:
JVM является подмножеством JRE, JRE является подмножеством JDK.
Это достаточно справедливо. JVM (Java Virtual Machinve) входит в JRE (Java Runtime Environment) для запуска байт-кода (файлы .class). JRE включен, если вы загружаете весь JDK (Java Development Kit), который также включает инструменты разработки, такие как компилятор.
JVM используется для преобразования байтового кода (* .class) в код объекта (машинный код) с использованием JRE.
В принципе, да. JVM выполняет байт-код, и часть этого процесса включает преобразование его в машинный код. Вам нужно JDK для компиляции .java-файлов (исходный код) в .class-файлы (байт-код), чтобы их можно было запустить на JVM.
У JRE есть операционная система (ОС), указывающая DLL, которая используется JVM для преобразования кода байта в код объекта.
JVM при выполнении байтового кода имеет компилятор JIT (точно в момент времени), который превращает байт-код с платформой-агностиком в машинный код платформы. В Windows это будет включено в DLL, да. Также в JRE включены ОС-специфические реализации собственных методов, таких как те, которые указаны в java.lang.Object
.
Если предполагается, что завтра, если какая-либо новая ОС запустится, имеющиеся в настоящее время JRE могут не поддерживать JVM для байтового кода для преобразования машинного кода. Поэтому JRE может потребоваться усилить поддержку новой будущей ОС.
Да, для новой операционной системы потребуется встроенная реализация JVM. Однако вы можете скомпилировать OpenJDK на этой новой ОС.
Итак, из приведенного выше моего анализа я заключу, что JVM является общим для всех ОС, но JRE имеет OS-специфическую DLL, которая будет использоваться JVM во время байтового кода для преобразования объектного кода.
Я бы не сказал, что JVM является общей для всех операционных систем, а есть JRE (и поэтому JVM) для каждой основной ОС. Эти ОС-родные JVM будут использовать библиотеки, специфичные для ОС, когда они будут исполнять байт-код Java-OS-agnostic.
Можете ли вы отформатировать это, чтобы его было немного легче читать? – jgitter
Вот документ, не нужно анализировать, просто прочтите http://docs.oracle.com/javase/7/docs/ – Vitaly
. Кажется, вы одержимы «преобразованием байтового кода в преобразование объектного кода». Но JVM не нужно делать это для выполнения программ байт-кода, что является их единственной задачей. – Ingo