Почему JVM не зависит от платформы, учитывая, что Java (язык) не зависит от платформы? - PullRequest
12 голосов
/ 23 января 2010

Просто любопытно узнать, когда java становится независимым от платформы, и есть ли какие-то конкретные причины, по которым JVM становится зависимым от платформы ..

Ответы [ 12 ]

18 голосов
/ 23 января 2010

JVM выполняет код Java, но написан на языках, специфичных для платформы, таких как C / C ++ / ASM и т. Д. JVM не написана на Java и, следовательно, не может быть независимой от платформы.

15 голосов
/ 07 июля 2010

Я обнаружил, что это был отличный ответ на вопрос:

JVM переводит байт-код на машинный язык

Каждая Java-программа скомпилирован в промежуточный язык под названием Java bytecode. JVM используется для перевода байт-кода на машинный язык для конкретный компьютер, и на самом деле выполнить соответствующий инструкции на машинном языке. JVM и байт-код в сочетании дать Java статус «переносимого» языка.

Машинный язык зависит от ОС

Учитывая предыдущую информацию, должно быть легче вывести ответ на вопрос. Поскольку JVM должна перевести байт-код в машинный язык, и так как машинный язык зависит от операционная система ясно, что JVM является платформой (операционная система) зависит. Этот факт можно проверить, попытавшись загрузите JVM - вам будет предоставлен список JVM, соответствующий различные операционные системы, и вы, очевидно, выберете любую из JVM предназначен для используемой операционной системы.

Цитируется из Зависима ли платформа JVM?

15 голосов
/ 23 января 2010

Если у вас нет ЦП, который может напрямую выполнять байт-код Java (есть такие вещи), вы должны иметь возможность взаимодействовать с ОС (для таких вещей, как чтение файлов, подключение к сети, отображение на экране и т. Д.). .).

Вы можете написать JVM на других языках (таких как Java или JavaScript ), но в конечном итоге должно быть что-то, что может взаимодействовать с базовой ОС.

9 голосов
/ 23 января 2010

JVM должна зависеть от платформы, чтобы ваша Java работала на конкретной платформе.JVM для Windows переведет вашу Java в другие системные вызовы, чем JVM для OS X.

4 голосов
/ 09 мая 2012

Нет, JVM не являются независимыми от платформы. Фактически они являются платформой среды выполнения, предоставляемой поставщиком. Каждая платформа (Windows, UNIX, Mac и т. Д.) Имеет свою собственную JVM для запуска приложений Java. Хотя байт-код поддерживает подключение к нескольким базам данных.

Подумайте о музыке, воспроизводимой в MP3-плеере, CD-плеере и старых верных кассетных проигрывателях (Boom Box). Выход всегда одинаковый, т.е. музыка. Но входные данные (мультимедиа, т.е. файлы .mp3 для MP3-плееров, CD для CD-плееров и кассет для кассетных плееров) различаются в зависимости от системы [здесь это будут различные операционные системы, такие как Windows, UNIX, Mac и т. Д.]. Надеюсь, я смог решить вашу проблему ..

3 голосов
/ 23 января 2010

Поскольку должен быть какой-то способ преобразования вызовов Java независимого от платформы приложения в вызовы, совместимые с базовой ОС.

1 голос
/ 28 октября 2017

JVM не зависит от платформы

Ключевым моментом здесь является то, что JVM зависит от операционной системы - поэтому, если вы работаете в Mac OS X, у вас будет другая JVM, чем если вы используете Windows или другую операционную систему. Этот факт можно проверить, попытавшись загрузить JVM для вашего конкретного компьютера - при попытке загрузить его вам будет предоставлен список JVM, соответствующих различным операционным системам, и вы, очевидно, выберете тот, который JVM предназначен для операционной системы, ты бежишь.

1 голос
/ 29 апреля 2016

JVM зависит от операционной системы.Чтобы код был независимым, что-то должно быть зависимым, и это JVM.При загрузке JDK запрашивается, для какой ОС вы хотите его скачать.Что явно означает, что JVM зависит от платформы.

0 голосов
/ 22 января 2016

Нет, JVM зависит от платформы. Код, написанный на Java, не зависит от платформы. Если вы пишете код Java в операционной системе Windows, вы можете запустить этот код в Linux или других операционных системах. Но JVM для Windows и Linux отличается. JVM находятся в JRE, и когда вы загружаете JRE из Oracle, в нем говорится, что JRE для Windows, Linux и других операционных систем

0 голосов
/ 29 апреля 2014

JVM переводит байтовый код, который универсален, в машинный код, который зависит от машины, следовательно, JVM зависит от платформы. Благодаря этому байт-коду Java не зависит от платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...