Где находится jvm в компьютере

Обновлено: 06.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В «Панели управления» (control) войдите в раздел программ по умолчанию, кликните по ссылке сопоставления типов файлов или протоколов отдельным программам, выберите из списка расширение .jar, нажмите кнопку изменения программы и выберите виртуальную машину Java. Если проблема устранена не будет, попробуйте полностью переустановить всю платформу.

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

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 имеет две основные функции:

  1. Позволяет запускать программы, написанные на Java, на любых устройствах или операционных системах. Так реализуется принцип Java — «Написал один раз, запускай везде».
  2. Управляет и оптимизирует память, которую используют программы.

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

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

  • Техническое определение: JVM — это софт, который выполняет код и предоставляет среду для его выполнения.
  • Повседневное определение: JVM — это способ запуска наших Java-приложений. Мы настраиваем параметры 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 — классы, и все Java-приложения состоят из классов. Любое приложение может состоять из одного или многих тысяч классов. Чтобы запустить Java-приложение, JVM должна загрузить скомпилированные .class-файлы в контекст — например, в сервер, где они будут доступны. 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 Virtual Machine. Сегодня мы рассмотрим механизм загрузки классов в JVM.

Виртуальная машина Java — это сердце экосистемы Java-технологий. Она делает для Java-программ возможность реализации принципа «написано один раз, работает везде» (write once run everywhere). Как и другие виртуальные машины, JVM представляет собой абстрактный компьютер. Основная задача JVM — загружать class-файлы и выполнять содержащийся в них байт-код.

В состав JVM входят различные компоненты, такие как загрузчик классов (Classloader), сборщик мусора (Garbage Collector) (автоматическое управление памятью), интерпретатор, JIT-компилятор, компоненты управления потоками. В этой статье рассмотрим загрузчик классов (Class loader).

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

Байт-код выполняется подсистемой исполнения (execution engine).


Что такое загрузка классов?

Загрузка классов — это поиск и загрузка типов (классов и интерфейсов) динамически во время выполнения программы. Данные о типах находятся в бинарных class-файлах.

Этапы загрузки классов

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

  • Загрузка (loading) — поиск и импорт бинарных данных для типа по его имени, создание класса или интерфейса из этого бинарного представления.
  • Связывание, линковка (linking) — выполнение верификации, подготовки и, необязательного, разрешения:
    • Верификация (verification) — проверка корректности импортируемого типа.
    • Подготовка (preparation) — выделение памяти для статических переменных класса и инициализация памяти значениями по умолчанию.
    • Разрешение (resolution) — преобразование символьных ссылок типов в прямые ссылки.
    Примечание — загрузчик классов, помимо загрузки классов, также отвечает за поиск ресурсов. Ресурс — это некоторые данные (например, “.class” файл, данные конфигурации, изображения), которые идентифицируются с помощью абстрактного пути, разделенного символом «/». Ресурсы обычно упаковываются вместе с приложением или библиотекой для того, чтобы их можно было использовать в коде приложения или библиотеки.

    Механизм загрузки классов в Java

    Примечание переводчика — в данном разделе описано поведение для java < 9, в java 9+ произошли небольшие изменения, которые описаны ниже.

    В Java используется модель делегирования загрузки классов. Основная идея состоит в том, что у каждого загрузчика классов есть “родительский” загрузчик. Когда происходит загрузка класса, то загрузчик “делегирует” поиск класса своему родителю, перед тем как искать класс самостоятельно.

    Модель делегирования загрузчиков классов представляет собой граф загрузчиков, которые передают друг другу запросы на загрузку. Корнем в этом графе является bootstrap-загрузчик. Загрузчики классов создаются с одним родителем, которому они могут делегировать загрузку, и осуществляют поиск класса в следующих местах:

    • Кэш
    • Родитель
    • Сам загрузчик

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

    В Java SE Platform API исторически было определено два загрузчика классов:

    Bootstrap class loader (базовый, первичный загрузчик) — загружает классы из bootstrap classpath.

    System class loader (системный загрузчик) — родительский класс для новых загрузчиков классов и, как правило, загрузчик классов, используемый для загрузки и запуска приложения.

    Загрузчики классов JDK 9+

    Application class loader — обычно используется для загрузки классов приложения из classpath. Также это загрузчик по умолчанию для некоторых модулей JDK, которые содержат утилиты или экспортируют API утилит. (Примечание переводчика: например, jdk.jconsole , jdk.jshell и др)

    Platform class loader — загружает выбранные (на основе безопасности / разрешений) модули Java SE и JDK. Например, java.sql.

    Bootstrap class loader — загружает основные модули Java SE и JDK.

    Эти три встроенных загрузчика классов работают вместе следующим образом:

    • Application class loader сначала ищет именованные модули, определенные для всех встроенных загрузчиков. Если для одного из этих загрузчиков определен подходящий модуль, то этот загрузчик загружает класс. Если в именованном модуле, определенном для одного из этих загрузчиков, класс не найден, тогда application class loader делегирует его родителю. Если класс не найден родителем, то application class loader ищет его в classpath. Классы, найденные в classpath, загружаются как члены безымянного модуля этого загрузчика.
    • Platform class loader выполняет поиск именованных модулей, определенных для всех встроенных загрузчиков. Если подходящий модуль определен для одного из этих загрузчиков, тогда этот загрузчик загружает класс. Если в именованном модуле, определенном для одного из этих загрузчиков, класс не найден, тогда platform class loader делегирует его родителю.
    • Bootstrap class loader выполняет поиск именованных модулей, определенных для него самого. Если класс не найден в именованном модуле, определенном для bootstrap-загрузчика, тогда bootstrap-загрузчик ищет файлы и каталоги, добавленные в bootstrap classpath, с помощью параметра -Xbootclasspath/a (позволяет добавить файлы и каталоги к bootstrap classpath). Классы, найденные в bootstrap classpath, загружаются как члены безымянного модуля этого загрузчика.


    Запустив этот код на установленном у меня Amazon Corretto 11.0.3, получим следующий результат:

    Виртуальная машина Java - Java Virtual Machine, или сокращённо JVM


    Чтобы пользоваться программным обеспечением, написанным на языке программирования Java или разрабатывать свои собственные программы, понадобится скачать и установить на компьютер виртуальную машину Java - Java Virtual Machine, или сокращённо JVM.

    Для программирования на Java можно подобрать себе IDE, хорошим выбором будет NetBeans или Eclipse.

    Для начала проверим, установлена ли Java платформа на вашем компьютере.

    Для этого запустите удобным для вас способом утилиту для работы с командной строкой.

    Например, в Windows XP перейдите в меню "Пуск", выберите "Выполнить", введите "cmd" во всплывающем окне и нажмите "ОК".

    В Windows 10 нажмите горячие клавиши Windows + X и выберите пункт "Командная строка" в меню пользователя.

    Вы увидите приглашение командной строки с мигающим курсором. Введите команду "java -version", только без кавычек и нажмите Enter.

    Если на компьютере уже установлена исполняемая среда Java, вывод будет примерно таким:

    Обратите внимание на первую строку - "1.8.0_111", это и есть версия JVM.




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

    Есть два продукта для загрузки:

    • JRE - Java Runtime Environment, предоставляет виртуальную машину и API, подходит, если вы хотите использовать готовые программы на Java.
    • JDK - Java Development Kit, предоставляет виртуальную машину, API и средства разработки программ на Java, необходима, если вы планируете писать свои Java программы.

    В рамках данной статьи рассмотрим пример установки JDK.

    Загрузка виртуальной машины Java




    Нажимаем красную кнопку и переходим на следующую страницу. Чтобы стала доступной загрузка, нужно согласиться с лицензией - отметьте опцию "Accept License Agreement". После чего выбирайте свою операционную систему и скачивайте файл. Если вы не уверены, какая у вас операционная система, то скорей всего подойдёт файл содержащий в названии "windows-i586".




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





    Запускаем установку. Как видим, это новейшая версия на момент написания статьи.

    Нажимаем "Next" и переходим к следующему диалогу.





    Предлагается выбрать компоненты для установки и путь установки инструментов разработки - JDK.

    Оставляем существующие значения.





    Ожидаем, пока копируются файлы JDK и получаем запрос на установку Java Runtime Environment - JRE. Соглашаемся и оставляем путь по умолчанию.





    Предупреждение о сборе информации о текущей установке.





    Запрос на установку компонентов JavaFX SDK, которая применяется для выполнения и разработки RIA - Rich Internet Applications, приложений с красивыми пользовательскими интерфейсами, для работы с мультимедиа и пр. на языке JavaFX Script.

    Соглашаемся и нажимаем "Next".





    Путь установки JavaFX SDK, оставляем как есть и продолжаем.





    Установка всех компонентов завершена, нажимаем "Close".

    Читайте также: