написать один раз запустить где угодно

JVM, JRE, JDK (первая часть)

Сегодня я рассмотрю важную тему, которую мне было трудно понять в школе: важность загрузки JDK для запуска первой Java-программы «Hello, world» и ее значение.

Мы рассмотрим, почему JDK необходим и как он работает, включая известный лозунг «Напиши один раз, работай везде». К концу этой статьи у вас должно быть четкое представление об этих концепциях.

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

Статья будет построена следующим образом:

С какими проблемами мы сталкивались до появления JVM?

Что такое JVM и как она решает эти проблемы?

С какими проблемами мы сталкивались до появления JVM

Одной из самых больших проблем, с которыми столкнулась Java до появления JVM, была совместимость. Это было связано с тем, что компьютеры в то время производились разными компаниями на разном оборудовании и имели разные операционные системы. Следовательно, когда программисты разрабатывают программу, она может работать на одном компьютере, но не на другом. То, как компьютер выполнял программу, было другим, особенно если у него была другая операционная система.

Компьютер может понимать только двоичный код, специфичный для архитектуры компьютера и операционной системы. Например, двоичный код для выполнения «Hello World» зависит от архитектуры машины и операционной системы, для которой он скомпилирован. Различные архитектуры машин имеют свои собственные наборы инструкций и форматы двоичного кода, поэтому двоичный код для «Hello World» может различаться на разных машинах.

Таким образом, для решения проблемы совместимости было доступно несколько вариантов. Один из них заключался в разработке программы на виртуальной машине, но это было непрактичным решением, поскольку для виртуальной машины требовался набор аппаратных ресурсов, что было бы нецелесообразно для более крупных приложений.

В качестве решения JVM решила все эти проблемы.

Что такое JVM и как она решает эти проблемы?

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

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

Виртуальная машина Java (JVM) – это программа, которая эмулирует поведение физической машины, позволяя выполнять байт-код Java в любой системе, на которой установлена ​​JVM.

Вопрос: Как JVM выполняет байт-код в любой системе?

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

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

В нашей следующей статье мы рассмотрим эту тему более подробно, включая обсуждение JRE и JDK. Следите за обновлениями!