Как Java независима от платформы, когда ей нужна JVM для запуска? - PullRequest
76 голосов
/ 01 мая 2010

Я только начал изучать Java и запутался в теме независимости от платформы.

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

Например, нам нужен Turbo C Compiler для того, чтобы скомпилировать исходный код C / C ++ и затем выполнить его. На машине должен быть установлен компилятор C.

Может ли кто-нибудь сказать, что имеется в виду, когда Java описывается как «независимый от платформы»?

Ответы [ 23 ]

0 голосов
/ 06 июня 2013

Java не зависит от платформы в аспекте Java-разработчика, но это не относится к конечному пользователю, который должен иметь зависимую от платформы JVM для запуска Java-кода В основном, когда Java-код компилируется, генерируется байт-код, который обычно не зависит от платформы. Таким образом, разработчик должен написать единый код для всей серии платформ. Но это преимущество связано с головной болью для конечного пользователя, которому необходимо установить JVM для запуска этого скомпилированного кода. Эта JVM отличается для каждой платформы. Таким образом, зависимость вступает в силу только для конечного пользователя.

0 голосов
/ 21 мая 2013

Просто примечание к обсуждению JVM и JIT Compilation. Это тот же принцип, что и в C # и CLR, и в некоторой степени в Python, и когда кто-то говорит, что код выполняется «непосредственно на оборудовании», это на самом деле верно в том, что уже скомпилированные инструкции смогут использовать преимущества оптимизации на машине / процессоре он запускается. Таким образом, даже если начальная компиляция модуля довольно медленная, при следующем запуске этого модуля выполняемый код будет работать с собственной скоростью и, таким образом, будет работать, так сказать, непосредственно на оборудовании.

0 голосов
/ 29 мая 2012
Байт-код

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

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