что такое java virtual machine

Виртуальная машина Java: установка и запуск Java Virtual Machine

Содержание

Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Что такое виртуальная машина Java?

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

Кроме того, поддержка этой платформы активно используется практически во всех мобильных телефонах, несмотря даже на наличие в них собственных операционных систем. Вы когда-нибудь обращали внимание на то, что на стареньких телефонах, в которых не было современных ОС вроде Android или iOS, можно было запросто устанавливать приложения (чаще всего игры) из файлов формата JAR и JAD? Именно поддержка Java и позволяла это сделать. И сегодня такая поддержка имеется во всех мобильных системах.

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

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

Предварительная проверка установленной версии

Для начала давайте проверим, установлена в вашей системе среда Java VM. Для проверки вызовите командную консоль (cmd) любым удобным для вас методом (необязательно от имени администратора), а затем задайте на выполнение команду java –version.

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

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

Что нужно для работы?

А вообще отдельно стоит сказать, что Java Virtual Machine представляет собой только один из множества компонентов всей платформы. Так, тем, кто занимается созданием приложений, необходимо установить специализированный пакет разработчика JDK (Java Development Kit), а обычному пользователю будет достаточно только наличия исполняемой среды JRE, где создавать собственные апплеты будет невозможно, зато появится возможность запуска и использования уже готовых программ, написанный на Java. А вот если вы хотите стать квалифицированным разработчиком, может понадобиться подобрать для себя комплект IDE (на данный момент наиболее распространенными и рекомендуемыми к установке и использованию являются Eclipse и NetBeans).

Где и что скачивать для инсталляции в Windows?

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 1. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 1. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 1. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Что же касается загрузки компонентов, необходимых для установки или обновления виртуальной машины Java, можете посетить сайт java.com, где в разделе загрузок сразу будет предложено загрузить установщик, соответствующий вашей операционной системе.

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 2. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 2. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 2. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Если же вам нужны дополнительные компоненты, можете обратиться к ресурсу oracle.com, где на данный момент доступен полный комплект Java SE (JDK) версии 12, некоторые более ранние модификации платформы и набор NetBeans.

Здесь стоит дать небольшое пояснение, поскольку у многих пользователей могут возникнуть сомнения по поводу того, какой именно комплект скачивать, ведь на сайте представлено целых три модификации! По всей видимости, вам понадобится только версия SE, поскольку EE представляет собой среду разработки, ориентированную на предприятия, а ME – аналогичная платформа для работы с мобильными системами.

Установка виртуальной машины Java

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

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 3. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 3. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 3. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Теперь установщик виртуальной машины Java для Windows 10 (как в приводимом ниже примере) необходимо запустить от имени администратора (если у вас встроенный аккаунт суперпользователя не деактивирован).

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 4. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 4. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 4. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

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

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 5. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 5. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 5. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

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

Примечание: имейте ввиду, что апплет, отвечающий за отслеживание обновлений, сразу же будет внесен в раздел автозагрузки системы. За ненадобностью можете его отключить, воспользовавшись соответствующим разделом либо в конфигурации (msconfig) для Windows 7, либо в «Диспетчере задач» (taskmgr) для Windows 8 и 10.

Ошибка при создании платформы

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

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

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 6. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 6. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 6. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

В примере указываемое значение соответствует 512 Мб выделяемого объема оперативной памяти, который машине разрешено использовать. При необходимости можете его увеличить.

Ошибка при открытии разделов реестра

Иногда виртуальная машина Java для Windows 7 и выше может выдавать ошибку доступа к реестру, особенно когда она работает посредством командной строки. В этой ситуации необходимо обратиться к каталогу System32 и удалить три исполняемых EXE-файла с такими именами: java, javaw и javaws. После этого нужно просто переустановить среду, используя ранее скачанный файл установщика.

Ошибка поиска основного класса

Еще один сбой, при котором виртуальная машина самопроизвольно и в аварийном режиме завершает работу, может быть устранен следующим способом.

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 7. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 7. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 7. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Сначала запустите средство поиска и удаления вредоносных программ, вписав в консоли «Выполнить» команду mrt, нажмите кнопку продолжения, а затем выберите полное сканирование. По окончании процесса полностью перезагрузите систему, затем войдите в конфигурацию (msconfig) или в «Диспетчер задач», после чего деактивируйте в списке компонент автозагрузки под названием WJView.exe. После этого рестарт системы нужно выполнить в обязательном порядке.

Ошибка открытия JAR-файлов

Наконец, ошибка, связанная с невозможностью открытия соответствующих платформе и виртуальной машине объектов формата JAR исправляется следующим способом.

что такое java virtual machine. virtualnaya mashina java ustanovka i zapusk java virtual machine 8. что такое java virtual machine фото. что такое java virtual machine-virtualnaya mashina java ustanovka i zapusk java virtual machine 8. картинка что такое java virtual machine. картинка virtualnaya mashina java ustanovka i zapusk java virtual machine 8. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Источник

Что такое JVM? Знакомство с виртуальной машиной Java

что такое java virtual machine. blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. что такое java virtual machine фото. что такое java virtual machine-blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. картинка что такое java virtual machine. картинка blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Java virtual machine (JVM) — это программа, которая разработана для выполнения и запуска других программ на основе Java. В основе JVM лежит простая и гениальная идея, которая всегда останется одним из величайших примеров программирования в стиле кунг-фу. JVM может также использоваться для выполнения программ, написанных на других языках программирования. Подробно рассказываем, как работает JVM, для чего используется эта технология и почему она является одним из главных компонентов в платформе Java. Материал основан на статье Java-разработчика Matthew Tyson «What is the JVM? Introducing the Java Virtual Machine».

Для чего используется Java virtual machine

JVM имеет две основные функции:

Во время выхода первой версии Java в 1995 году все программы писались для конкретной операционной системы, а памятью управлял разработчик программного обеспечения. Поэтому появление JVM стало революцией на рынке.

Существует два основных определения JVM — техническое и повседневное:

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

Кто разрабатывает и обслуживает JVM?

На сегодняшний день JVM массово используется и развивается в разных проектах — как коммерческих, так и Open Sourse. Например, существует проект OpenJDK, который представляет собой полностью совместимый Java Development Kit, состоящий исключительно из свободного и открытого исходного кода. При этом, несмотря на открытость кода этого проекта, его разработкой практически полностью занимается корпорация Oracle.

Сборка мусора

В Java памятью управляет JVM с помощью процесса, который называется сборкой мусора — он непрерывно определяет и удаляет неиспользуемую память в Java-приложениях. Сборка мусора происходит внутри работающей JVM.

В начале существования Java подвергалась серьезной критике за то, что не была «Close to the metal» как C++, поэтому не была такой быстрой. Особенно спорным критики называли процесс сборки мусора. С тех пор были предложены и использованы различные алгоритмы и подходы, которые значительно улучшили и оптимизировали сборку мусора.

Три главные части JVM

JVM состоит из трех основных частей: спецификация, реализация и экземпляр. Рассмотрим каждую из них.

Спецификация JVM

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

И так, все, что должна делать JVM — правильно запускать Java-программы. Это может показаться достаточно простым процессом, однако это очень масштабная задача, учитывая мощность и гибкость языка Java.

Реализация JVM

Реализация спецификации JVM приводит к созданию реальной программы, которая и является реализацией JVM. По сути, существует огромное количество реализаций спецификации JVM — как коммерческих, так и с открытым кодом.

Экземпляр JVM

После того, как спецификация JVM реализована и выпущена в качестве самостоятельной программы, вы можете загрузить ее как приложение. Эта загруженная программа является экземпляром виртуальной машины.

Чаще всего, когда разработчики говорят о JVM, они имеют ввиду экземпляр JVM, который работает в среде разработки. Вы можете сказать: «Привет, сколько памяти использует JVM на этом сервере?» или «Я не могу поверить, что сделал зацикленный вызов, а переполнение стека сломало мою JVM. А ведь это просто ошибка новичка!»

Загрузка и выполнение class-файлов в JVM

Мы говорили о роли JVM в запуске Java-приложений, но как виртуальная машина выполняет свою функцию? Для запуска Java-приложений JVM зависит от загрузчика классов и механизма выполнения Java.

Загрузчик классов в JVM

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

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

Механизм выполнения в JVM

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

Выполнение кода включает управление доступом к системным ресурсам. Механизм выполнения JVM находится между работой программы, с ее запросами на файловые, сетевые ресурсы и ресурсы памяти, и операционной системой, которая предоставляет эти ресурсы.

Управление системными ресурсами

Системные ресурсы могут быть разделены на две больших категории: память и все остальное.

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

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

Эволюция JVM: прошлое, настоящее, будущее

В 1995 году разработчики JVM представили две революционные концепции, которые с тех пор стали стандартом в разработке: «Написал один раз, запускай везде» и автоматическое управление памятью. В то время совместимость софта была смелой концепцией, но сейчас это стало нормой. Точно так же, как современное поколение живет с автоматической сборкой мусора.

Можно сказать, что если Джеймс Гослинг и Брендан Эйх изобрели современное программирование, то тысячи других разработчиков усовершенствовали и развили их идеи в последующие десятилетия. Изначально виртуальная машина Java предназначалась только для Java, но сегодня она эволюционировала до поддержки многих языков программирования, включая Scala, Groovy и Kotlin.

Изучайте Java на Хекслете Вступайте в профессию и изучайте один из самых востребованных в энтерпрайзе языков программирования.

Источник

Как работает виртуальная машина Java — взгляд изнутри

Авторизуйтесь

Как работает виртуальная машина Java — взгляд изнутри

что такое java virtual machine. jvm insides. что такое java virtual machine фото. что такое java virtual machine-jvm insides. картинка что такое java virtual machine. картинка jvm insides. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

Рассказывает Роман Иванов

Каждому Java-разработчику будет очень полезно понимать, что из себя представляет JVM, как в неё попадает код и как он исполняется. Статья больше подойдёт новичкам, но найти в ней что-то новое смогут и более опытные программисты. В статье вкратце описано, как устроен class-файл и как виртуальная машина обрабатывает и исполняет байт-код.

Основной задачей разработчиков Java было создание переносимых приложений. JVM играет центральную роль в переносимости — она обеспечивает должный уровень абстракции между скомпилированной программой и базовой аппаратной платформой и операционной системой. Несмотря на этот дополнительный «слой», скорость работы приложений необычайно высока, потому что байт-код, который выполняет JVM, и она сама отлично оптимизированы.

Рассмотрим схему работы JVM более подробно.

Структура class-файла

Напишем простейшее приложение и скомпилируем его. Компилятор заботливо создаст файл с расширением class и поместит туда всю информацию о нашем мини-приложении для JVM. Что мы увидим внутри? Файл поделён на десять секций, последовательность которых строго задана и определяет всю структуру class-файла.

4–5 декабря, Онлайн, Беcплатно

Файл начинается со стартового (магического) числа: 0xCAFEBABE. Данное число присутствует в каждом классе и является обязательным флагом для JVM: с его помощью система понимает, что перед ней class-файл.

что такое java virtual machine. image1. что такое java virtual machine фото. что такое java virtual machine-image1. картинка что такое java virtual machine. картинка image1. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

С девятого байта идёт пул констант, в котором содержатся все константы нашего класса. Так как в каждом классе их может быть различное количество, то перед массивом находится переменная, указывающая на его длину, то есть пул констант представляет из себя массив переменной длины. Каждая константа занимает один элемент в массиве. Во всём class-файле константы указываются целочисленным индексом, который обозначает их положение в массиве. Начальная константа имеет индекс 1, вторая константа — 2 и т. д.

Каждый элемент пула констант начинается с однобайтового тега, определяющего его тип. Это позволяет JVM понять, как правильно обработать идущую далее константу. Всего зарезервировано 14 типов констант:

Тип константыЗначение тега
CONSTANT_Class7
CONSTANT_Fieldref9
CONSTANT_Methodref10
CONSTANT_InterfaceMethodref11
CONSTANT_String8
CONSTANT_Integer3
CONSTANT_Float4
CONSTANT_Long5
CONSTANT_Double6
CONSTANT_NameAndType12
CONSTANT_Utf81
CONSTANT_MethodHandle15
CONSTANT_MethodType16
CONSTANT_InvokeDynamic18

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

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

Имена класса и его родительского класса хранятся в массиве констант, на которые указывают последующие 4 байта в файле.

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

Имя флагаКодОпределение
ACC_PUBLIC0x0001Объявлен публичным
ACC_FINAL0x0010Объявлен финальным
ACC_SUPER0x0020Специальный флаг, введённый в версии Java 1.1 для совместимости при вызове методов родителя
ACC_INTERFACE0x0200Объявлен интерфейсом
ACC_ABSTRACT0x0400Объявлен абстрактным
ACC_SYNTHETIC0x1000Зарезервированное определение
ACC_ANNOTATION0x2000Объявлен аннотацией
ACC_ENUM0x4000Объявлен перечислением

Подобную структуру имеет и следующий блок — Fields.

Этот блок начинается с двухбайтового параметра количества полей в этом классе или интерфейсе. За ним идёт массив структур переменной длины. Каждая структура содержит информацию об одном поле: имя поля, тип, значение, если это, например, финальная переменная. В списке отображаются только те поля, которые были объявлены классом или интерфейсом, определённым в файле. Поля от родительских классов и имплементированных интерфейсов здесь не присутствуют, они задаются в своих class-файлах.

Далее мы переходим к самому важному месту в любом классе — его методам, именно в них сосредоточена вся логика любой программы, весь исполняемый байт-код.

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

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

Загрузка классов

Теперь, разобравшись с общей структурой файла, посмотрим, как JVM его обрабатывает.

Чтобы попасть в JVM, класс должен быть загружен. Для этого существуют специальные классы-загрузчики:

Главный класс приложения всегда загружается системным загрузчиком, остальные же классы могут быть загружены различными пользовательскими загрузчиками. Стоит упомянуть, что имя загрузчика создаёт уникальное пространство имён, то есть в программе может существовать несколько классов с одним и тем же полным именем, если они обрабатывались разными загрузчиками.
Поэтому каждый загрузчик делегирует свои полномочия родителю, то есть перед поиском класса для загрузки он попытается узнать, не был ли загружен нужный класс раньше.

После загрузки класса начинается этап линковки, который делится на три части.

Класс инициализируется, и JVM может начать выполнение байт-кода методов.

JVM получает один поток байтовых кодов для каждого метода в классе. Байт-код метода выполняется, когда этот метод вызывается в ходе работы программы. Поток байт-кода метода — это последовательность инструкций для виртуальной машины Java. Каждая инструкция состоит из однобайтового кода операции, за которым может следовать несколько операндов. Код операции указывает действие, которое нужно предпринять. Всего на данный момент в Java более 200 операций. Все коды операций занимают только 1 байт, так как они были разработаны компактными, поэтому их максимальное число не может превысить 256 штук.

В основе работы JVM находится стек — основные инструкции работают с ним.

Рассмотрим пример умножения двух чисел. Ниже представлен байт-код метода:

На Java это будет выглядеть так:

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

Всего JVM поддерживает семь примитивных типов данных: byte, short, int, long, float, double и char.

Если бы мы хотели положить в переменную а другое значение, например 11112, то нам пришлось бы использовать инструкцию sipush :

Данные операции выполняются в так называемом фрейме стека метода. У каждого метода есть некоторая своя часть в общем стеке. Таким образом в нашем главном потоке исполнения программы создаются множество подстеков на каждый вызов метода. Более наглядно это представлено на картинке ниже:

что такое java virtual machine. image2. что такое java virtual machine фото. что такое java virtual machine-image2. картинка что такое java virtual machine. картинка image2. Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.

В каждом стек-фрейме хранится массив локальных переменных, который позволяет сохранять и доставать локальные переменные, как мы сделали в примере выше, поместив значения 1 и 5 в переменные 1 и 2. Стоить отметить, что здесь компилятор также оптимизировал байт-код, используя однобайтовые инструкции. Если бы переменных в нашем методе было много, использовался бы код операции сохранения значения вместе с указанием позиции переменной в массиве.

Вызовы методов

Java предоставляет два основных вида методов: методы экземпляра и методы класса. Методы экземпляра используют динамическое (позднее) связывание, тогда как методы класса используют статическое (раннее) связывание.

Возвращаемое методом значение кладётся на стек. Типы возвращаемых значений методов указаны ниже:

ОперацияОписание
ireturnПомещает на стек значение типа int
lreturnПомещает на стек значение long,
freturnПомещает на стек значение float
dreturnПомещает на стек значение double
areturnПомещает на стек значение object
returnНе изменяет стек

Циклы

Осталось рассмотреть последнюю часто используемую конструкцию языка — циклы. Посмотрим, во что превратится код, представленный ниже:

Заключение

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

Таким образом, мы поверхностно рассмотрели жизненный цикл байткода в JVM: class-файлы, их загрузку и выполнение байт-кода и базовые инструкции.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *