Суть платформонезависимости Java

156
23 марта 2018, 12:17

Обычно, когда новичкам рассказывают про преимущества Java, упоминают платформонезависимость. Я правильно понял, что разработав Java-приложение, мы можем его собрать в несколько установочных файлов под каждую ОС, и теперь оно будет работать на каждой из этих ОС?

Answer 1

Платформонезависимость Java опирается на существование виртуальной машины Java (JVM) на каждой поддерживаемой платформе.

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

Можно считать, что Java и её платформа это два разных языка. Для первого компиляторы есть у разработчиков приложений, а для второго компиляторы есть и у пользователей. И с языком платформы мало кто работает напрямую, даже среди разработчиков (если только с какими-нибудь экзотическими целями вроде глубокого профилирования или разработки под JVM нового языка — коих, кстати, полно).

Ещё один нюанс: нативные (родные для платформы) расширения, которые расширяют возможности Java да пределы стандартных библиотек, платформозависимы. То есть, чтобы сохранить платформонезависимость Java в необходимой мере, нужно используемые расширения подготовить для каждой нужной платформы отдельно.

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

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

READ ALSO
Как сохранить String в PDF (Java)

Как сохранить String в PDF (Java)

Делаю некую задачу, после отправки POST запроса приходит ответ, его я сохраняю в String-е и дальше хочу сохранить в PDF(результат POST запроса PDF файл)

167
Изменение иконок в аккордеоне

Изменение иконок в аккордеоне

Всем приветСделал аккордеон, но не могу понять, как сделать так, чтобы иконка ПЛЮС менялась на МИНУС при открытии блока, и обратно

188
Php программирование и telegram API

Php программирование и telegram API

Есть код на php с использованием Telegram APIКод должен работать таким образом, чтобы он брал значения, введенные в контактную форму на сайте, компилировал...

206
Переход через header не работает

Переход через header не работает

Здравствуйте! Такая проблема не работают переходы через header, сам код работает, выдает ошибки и регистрирует

229