Где находится jvm в компьютере
Набор инструментов разработки на Java (JDK), виртуальная машина (JVM) и среда выполнения (JRE) образуют вместе мощную тройку компонентов платформы для разработки и запуска Java-приложений. В этом кратком руководстве вы узнаете о JRE — среде выполнения Java.
Фактически, среда выполнения — это часть программного обеспечения, предназначенная для запуска другого программного обеспечения. Как среда выполнения для Java, JRE содержит библиотеки классов, загрузчик классов и виртуальную машину Java. В этой системе:
- Загрузчик классов отвечает за правильную загрузку классов и их связь с основными библиотеками классов Java
- JVM отвечает за обеспечение Java-приложений ресурсами, необходимыми для их запуска и эффективной работы на устройстве или в облачной среде
- JRE в основном является контейнером для этих компонентов и отвечает за организацию их деятельности
Каждый раз, когда вы загружаете JDK, он уже будет включать в себя JRE. Эта JRE будет включать JVM по умолчанию. Можно также загрузить JRE отдельно от JDK и выбрать одну из нескольких JVM. Значения по умолчанию подходят для большинства программ, особенно когда вы только начинаете знакомство с Java.
Для запуска и исполнения программы необходима специальная среда выполнения. Она загружает файлы классов, обеспечивает доступ к памяти и другим системным ресурсам. В прошлом, большинство программ использовали операционную систему (ОС) в качестве среды выполнения. Программы запускались на любом компьютере, но для доступа к ресурсам полагались на параметры ОС. В качестве ресурсов выступали память, программные файлы и зависимости. С появлением среды выполнения Java все изменилось, по крайней мере, для Java-программ.
Раньше принцип WORA (англ. "write once, run anywhere – написал один раз, запускай везде") считался революционным, но сегодня это норма для большинства программных систем.
Программное обеспечение можно рассматривать как набор слоев, расположенных поверх системного оборудования. Каждый слой предоставляет службы, которые будут использоваться (и запрашиваться) слоями над ним. Среда выполнения Java — это уровень программного обеспечения, работающий поверх ОС и предоставляющий дополнительные службы, специфичные для Java.
JRE сглаживает разнообразие ОС, гарантируя, что программы Java могут работать практически на любой ОС без изменений. Также автоматическое управление памятью — одна из самых важных функций JRE, гарантирующая, что программистам не придется вручную управлять распределением памяти.
Если коротко, то JRE — это мета-OS для Java-программ. Это классический пример абстракции — абстрагирование базовой ОС в согласованную платформу для запуска приложений Java.
Виртуальная машина Java — программное обеспечение, отвечающее за выполнение Java-программ. JRE — это программа, которая берет ваш Java-код, объединяет его с необходимыми библиотеками и запускает JVM для его выполнения.
JRE содержит программное обеспечение и библиотеки, которые требуются для работы вашей программы. Например, загрузчик классов Java является частью JRE. Эта важная часть программного обеспечения загружает скомпилированный Java-код в память и соединяет с соответствующими библиотеками.
В этом многоуровневом представлении JVM создается средой выполнения Java. С точки зрения пакета, JRE содержит JVM, как показано на рисунке:
Несмотря на концептуальную сторону JRE, в реальной практике — это просто программное обеспечение, установленное на компьютере для запуска Java-программ. Как разработчик вы будете работать с JDK и JVM, т.к. эти компоненты необходимы для разработки и запуска ваших приложений. Как пользователь вы будете использовать JRE для их запуска.
В большинстве случаев компьютеры поставляются с установленной Java, включающей в себя JRE. Если вам когда-либо понадобится установить или обновить JRE вручную, вы можете загрузить актуальную версию JRE с сайта Oracle.
JRE обновляется с каждой новой версией Java, и номера ее версий совпадают с версиями платформы Java. Например, JRE 15 запускает Java 15. Существование множества пакетов JDK (например Enterprise Edition или Standard Edition) не касается JRE. Большинство компьютеров используют JRE, разработанную для Java SE, которая может запускать любое приложение Java независимо от того, как оно было разработано. Большинство мобильных устройств поставляются с JRE для Java ME, которая предварительно установлена на мобильном устройстве и недоступна для загрузки.
После того, как JRE установлена, вы можете узнать ее версию с помощью командной строки, введя в терминале команду java -version . В POSIX-системах вы всегда можете проверить место установки с помощью which java (работает и в win).
JVM (Java Virtual Machine) - Виртуальная машина отвечает за само выполнение кода. Она работает с байткодом (то что находится внутри файлов с расширением .class).
JRE (Java Runtime Environment) - окружение, необходимое для запуска Java-программ. Включает в себя стандартную библиотеку. В нее входят, как базовые пакеты lang, util, так и пакеты для работы с различными форматами, базами данных, пользовательским интерфейсом. JVM тоже часть JRE.
JDK (Java Development Kit) - набор программ для разработки. Именно мы (или редактор) устанавливаем к себе на компьютер, чтобы заниматься разработкой на Java. Он включает в себя JRE, загрузчик кода java, компилятор javac, архиватор jar, генератор документации javadoc и другие утилиты, нужны во время разработки.
Где и что скачивать для инсталляции в Windows?
Здесь стоит дать небольшое пояснение, поскольку у многих пользователей могут возникнуть сомнения по поводу того, какой именно комплект скачивать, ведь на сайте представлено целых три модификации! По всей видимости, вам понадобится только версия SE, поскольку EE представляет собой среду разработки, ориентированную на предприятия, а ME – аналогичная платформа для работы с мобильными системами.
Что такое виртуальная машина Java?
Начнем с определения того, что на самом деле представляет собой эта платформа, чтобы несведущие пользователи сразу сообразили, почему требуется ее обязательная установка на собственные компьютеры. В общем смысле данная платформа и ее компоненты обычно задействуются для выполнения всевозможных скриптов и апплетов, написанных на языке программирования Java, когда вы посещаете интернет-сайты, содержащие соответствующий контент. А это могут быть элементы мультимедиа во всех проявлениях, некоторые простейшие игры, дополнения для использования банковских услуг, интерактивные карты и т. д.
Кроме того, поддержка этой платформы активно используется практически во всех мобильных телефонах, несмотря даже на наличие в них собственных операционных систем. Вы когда-нибудь обращали внимание на то, что на стареньких телефонах, в которых не было современных ОС вроде Android или iOS, можно было запросто устанавливать приложения (чаще всего игры) из файлов формата JAR и JAD? Именно поддержка Java и позволяла это сделать. И сегодня такая поддержка имеется во всех мобильных системах.
Наконец, отдельно стоит отметить, что виртуальная машина Java Virtual Machine крайне необходима многим программистам и веб-дизайнерам для разработки собственных апплетов и приложений. Таким образом, становится совершенно очевидно, что иметь ее на своем компьютере необходимо в любом случае.
Однако пользователи, не разбирающиеся в тонкостях использования виртуальной машины Java, будут удивлены тем, что просто так запустить ее окажется невозможно. Да, действительно, это так и есть, поскольку сама основная исполняемая среда графического интерфейса не имеет, а использовать ее можно только посредством интеграции в веб-обозреватели, установленные на вашем компьютере или ноутбуке, или в комплекте с IDE.
Ошибка открытия JAR-файлов
Наконец, ошибка, связанная с невозможностью открытия соответствующих платформе и виртуальной машине объектов формата JAR исправляется следующим способом.
В «Панели управления» (control) войдите в раздел программ по умолчанию, кликните по ссылке сопоставления типов файлов или протоколов отдельным программам, выберите из списка расширение .jar, нажмите кнопку изменения программы и выберите виртуальную машину Java. Если проблема устранена не будет, попробуйте полностью переустановить всю платформу.
Java virtual machine (JVM) — это программа, предназначенная для выполнения других программ. В ее основу заложена простая идея, которая всегда будет одним из величайших примеров кодирования в стиле «kung fu».
- Позволяет запускать Java-приложения на любых устройствах или операционных системах (принцип — «Написал один раз, запускай везде»)
- Управляет и оптимизирует память, используемую приложением
В 1995 году, когда Java появилась, все компьютерные программы были написаны под определенные операционные системы, и управлять памятью приходилось разработчику программного обеспечения. Так что появление JVM было революцией.
- Техническое определение: JVM — это спецификация программного обеспечения, которое выполняет код и предоставляет среду выполнения для этого кода
- Повседневная формулировка: JVM — это способ запуска наших Java-приложений. Мы настраиваем параметры JVM, а затем полагаемся на ее автоматическое управление ресурсами программы во время выполнения
Когда разработчики говорят о JVM, обычно имеют в виду процесс, запущенный на устройстве, который предоставляет и контролирует использование ресурсов Java-приложения. Спецификация JVM описывает требования для разработки программы, которая выполняет эти задачи.
JVM активно используется и разрабатывается очень сильными программистами как корпоративное ПО, а так же как ПО с открытым кодом. Проект OpenJDK является потомком решений компании Sun Microsystems для open-source версии Java. Компания Oracle и другие продолжают развитие OpenJDK.
До Java память программы контролировалась программистом. В Java же памятью управляет виртуальная машина через процесс, называемый сборкой мусора, который непрерывно определяет и устраняет неиспользуемую память в программах. Сборка мусора происходит внутри работающей JVM.
В ранний период Java подвергалась критике, так как не была «Close to the metal» как C++ и поэтому не была такой быстрой. Особенно спорным был процесс сборки мусора. С тех пор были предложены и использованы различные алгоритмы и подходы, которые значительно улучшили сборку мусора.
Выражение означает ручное управление (из кода) памятью операционной системы. В теории, программисты могут выжать больше производительности из своих программ, выделяя и освобождать память самостоятельно. Но в большинстве случаев делегирование управления памятью высокоточному процессу, такому как JVM, дает лучшую производительность и защищает от ошибок, нежели ручное управление.
Глобально JVM состоит из трех частей: спецификация, реализация и экземпляр. Рассмотрим каждую из них.
Первая часть JVM — спецификация в которой не определены детали реализации JVM, что обеспечивает максимальную свободу творчества при ее создании:
«Для правильной реализации виртуальной машины Java, вам лишь необходимо уметь читать class-файлы и правильно выполнять указанные в нем операции»
Таким образом, все что JVM должна делать — это корректно запускать Java-программы. Звучит просто, но это колоссальная задача, особенно, если учитывать мощь и гибкость языка Java.
JVM – это виртуальная машина, которая запускает Java-программы в портативном режиме. Термин "Виртуальная машина" означает, что JVM является абстракцией фактической машины, такой как сервер, на которой работают программы. Независимо от операционной системы или технического обеспечения, JVM создает предсказуемую среду для запускаемых внутри нее программ.
Существует множество различных реализаций спецификации JVM как коммерческих, так и с открытым исходным кодом. JVM HotSpot от проекта OpenJDK является эталонной реализацией и содержит одну из наиболее тщательно проверенных в мире кодовых баз. HotSpot также является самой широко используемой JVM.
Почти все лицензированные JVM созданы, как ответвление от OpenJDK и HotSpot JVM, включая лицензионный JDK от Oracle. Разработчики, создающие лицензированные продукты на основе OpenJDK, зачастую мотивируются желанием увеличить производительность для определенных операционных систем. Обычно пользователи загружают и устанавливают JVM, как часть среды выполнения Java (JRE).
После того как спецификация JVM реализована и выпущена, вы можете загрузить ее как приложение. Загруженная программа является экземпляром виртуальной машины.
В большинстве случаев, говоря о JVM, имеют в виду экземпляр JVM, который работает в среде разработки. Вы можете сказать: «Привет Макс, сколько памяти использует JVM на этом сервере?» или «Я не могу поверить, я сделал зацикленный вызов, и переполнение стека сломало мою JVM. Ошибка новичка!»
Спецификация программного обеспечения – это читаемый человеком проектный документ, описывающий, как должна работать программная система. Цель спецификации – создать четкое описание и требования к коду для разработчиков.
Мы говорили о роли JVM в запуске Java-приложений, но как она выполняет свою функцию? При выполнении Java-приложений JVM зависит от загрузчика классов и механизма выполнения.
Все в Java является классом, и все Java-приложения состоят из классов. Приложение может состоять из одного или тысячи классов. Для запуска приложения JVM должна загрузить скомпилированные .class-файлы в контекст, такой как сервер, где они будут доступны. JVM зависит от своего загрузчика класса во время выполнения этой функции.
Загрузчик классов Java является частью JVM, которая загружает классы в память и делает их доступными для выполнения. Загрузчики классов используют технику ленивой загрузки (lazy-loading) и кэширования, чтобы сделать загрузку классов максимально эффективной.
Любая виртуальная машина Java включает в себя загрузчик классов. Спецификация JVM описывает стандартные методы для запросов и управления загрузчиком во время работы, но за выполнение этих возможностей отвечает конкретная реализация JVM.
Выполнение кода включает управление доступом к системным ресурсам. Механизм выполнения JVM стоит между работой программы, с ее запросами на файловые, сетевые ресурсы и ресурсы памяти, и операционной системой, которая обеспечивает эти ресурсы.
Вспомните, что JVM отвечает за очистку неиспользуемой памяти, а сборщик мусора — это механизм, который эту очистку осуществляет. JVM также отвечает за распределение и поддержание ссылочной структуры, которую разработчик принимает как должное. Например, при использовании ключевого слова new, механизм выполнения JVM осуществляет запрос к операционной системе на выделение памяти.
Помимо памяти, механизм выполнения управляет ресурсами файловой системы и сети. Так как JVM может взаимодействовать с разными операционными системами, это задача не из легких. В дополнение к потребностям каждого приложения в ресурсах, механизм выполнения должен корректно работать с каждой операционной системой.
В 1995 году JVM представила две революционных концепции, которые с тех пор стали стандартом в современной разработке: «Написал один раз, запускай везде» и автоматическое управление памятью. В то время совместимость ПО была смелой концепцией, но сейчас это незаменимое удобство. Точно так же, в то время разработчики должны были сами управлять программной памятью, нынешнее поколение живет с автоматической сборкой мусора.
Изначально виртуальная машина Java предназначалась только для Java, но сегодня она может поддерживать разные скриптовые и другие языки программирования, включая Scala, Groovy и Kotlin. Глядя вперед, трудно увидеть будущее, в котором JVM не является заметной частью развития разработки программного обеспечения.
Установка виртуальной машины Java
Итак, предполагаем, что инсталлятор загружен с одного из официальных источников на пользовательский компьютер.
Теперь установщик виртуальной машины Java для Windows 10 (как в приводимом ниже примере) необходимо запустить от имени администратора (если у вас встроенный аккаунт суперпользователя не деактивирован).
В начальном окне установки ничего можно не изменять, а просто нажать кнопку подтверждения инсталляции, после чего стартует процесс копирования файлов для интеграции всех необходимых компонентов в систему.
Примечание: имейте ввиду, что апплет, отвечающий за отслеживание обновлений, сразу же будет внесен в раздел автозагрузки системы. За ненадобностью можете его отключить, воспользовавшись соответствующим разделом либо в конфигурации (msconfig) для Windows 7, либо в «Диспетчере задач» (taskmgr) для Windows 8 и 10.
Эволюция JVM: прошлое, настоящее, будущее
В 1995 году разработчики JVM представили две революционные концепции, которые с тех пор стали стандартом в разработке: «Написал один раз, запускай везде» и автоматическое управление памятью. В то время совместимость софта была смелой концепцией, но сейчас это стало нормой. Точно так же, как современное поколение живет с автоматической сборкой мусора.
Можно сказать, что если Джеймс Гослинг и Брендан Эйх изобрели современное программирование, то тысячи других разработчиков усовершенствовали и развили их идеи в последующие десятилетия. Изначально виртуальная машина Java предназначалась только для Java, но сегодня она эволюционировала до поддержки многих языков программирования, включая Scala, Groovy и Kotlin.
Изучайте Java на Хекслете Вступайте в профессию и изучайте один из самых востребованных в энтерпрайзе языков программирования.
Виртуальные машины уже давно перестали быть каким-то отвлеченным понятием и сегодня являются доступными и понятными для любого пользователя. Одной из самых необходимых в своем роде является виртуальная машина Java (JVM), которая в Windows-системах устанавливается изначально еще при первой инсталляции самой ОС. Однако довольно часто ее бывает необходимо установить самостоятельно, дополнить или обновить компоненты уже имеющейся платформы. Далее предлагается разобраться, что это вообще такое, для чего нужно, как выполнить инсталляцию необходимых компонентов самостоятельно и решить некоторые проблемы, связанные с запуском VM в Windows-системах.
Предварительная проверка установленной версии
Для начала давайте проверим, установлена в вашей системе среда Java VM. Для проверки вызовите командную консоль (cmd) любым удобным для вас методом (необязательно от имени администратора), а затем задайте на выполнение команду java –version.
Если среда установлена, отобразится информация, показанная на изображении выше, где первостепенное внимание следует обратить на версию платформы. Поскольку ее обновление в автоматическом режиме даже при установке апдейтов для самих Windows-систем производится не всегда, настоятельно рекомендуется выполнить такое обновление вручную путем загрузки необходимого контента с официальных ресурсов и последующей самостоятельно инсталляции.
Сборка мусора
В 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. А ведь это просто ошибка новичка!»
Write once, run anywhere
Java компилируемый язык. Обычно, когда говорят про такие языки, подразумевают, что компилятор берет исходный код и превращает его в машинный код, заточенный под конкретную архитектуру (машинный код у разных архитектур разный) и операционную систему. Так происходит во многих си-подобных языках. На выходе получаются файлы, каждый из которых может запуститься только на своей комбинации архитектуры и операционной системы.
Для запуска таких программ больше ничего не нужно. Достаточно перенести их на нужную систему и запустить штатными средствами. Такие программы работают очень быстро, так как оптимизированы под конкретные условия.
Java устроена по другому. Разработчики попытались обеспечить кроссплатформенность готовой программы, за счет введения виртуальной машины. Кроссплатформенность, способность программы запускаться на разных платформах (архитектура процессора и операционная система) без необходимости компилировать код под эти системы. Как это работает?
Ядро Java это JVM. Виртуальный процессор, со своим набором команд, который придумали создатели Java. Компилятор готовит код именно под эту единую JVM. Например код:
После компиляции превращается в:
JVM выполняет байткод построчно и транслирует его в реальный машинный код специфичный для той архитектуры, на которой запускается код.
Java virtual machine (JVM) — это программа, которая разработана для выполнения и запуска других программ на основе Java. В основе JVM лежит простая и гениальная идея, которая всегда останется одним из величайших примеров программирования в стиле кунг-фу. JVM может также использоваться для выполнения программ, написанных на других языках программирования. Подробно рассказываем, как работает JVM, для чего используется эта технология и почему она является одним из главных компонентов в платформе Java. Материал основан на статье Java-разработчика Matthew Tyson «What is the JVM? Introducing the Java Virtual Machine».
Что нужно для работы?
А вообще отдельно стоит сказать, что Java Virtual Machine представляет собой только один из множества компонентов всей платформы. Так, тем, кто занимается созданием приложений, необходимо установить специализированный пакет разработчика JDK (Java Development Kit), а обычному пользователю будет достаточно только наличия исполняемой среды JRE, где создавать собственные апплеты будет невозможно, зато появится возможность запуска и использования уже готовых программ, написанный на Java. А вот если вы хотите стать квалифицированным разработчиком, может понадобиться подобрать для себя комплект IDE (на данный момент наиболее распространенными и рекомендуемыми к установке и использованию являются Eclipse и NetBeans).
Управление системными ресурсами
Системные ресурсы могут быть разделены на две больших категории: память и все остальное.
JVM отвечает за очистку неиспользуемой памяти, при этом сборщик мусора — это механизм, который и осуществляет этот процесс. JVM также отвечает за распределение и поддержание ссылочной структуры, которую любой разработчик принимает как само собой разумеющееся. Например, механизм выполнения JVM отвечает за то, что при использовании ключевого слова new происходит запрос к операционной системе на выделение памяти.
Помимо памяти, механизм выполнения управляет ресурсами файловой системы и сети. Поскольку JVM совместима с различными операционными системами, то эта задача считается достаточно сложной. Помимо потребностей каждого приложения в ресурсах, механизм выполнения должен корректно работать с каждой операционной системой.
Ошибка при открытии разделов реестра
Иногда виртуальная машина Java для Windows 7 и выше может выдавать ошибку доступа к реестру, особенно когда она работает посредством командной строки. В этой ситуации необходимо обратиться к каталогу System32 и удалить три исполняемых EXE-файла с такими именами: java, javaw и javaws. После этого нужно просто переустановить среду, используя ранее скачанный файл установщика.
Кто разрабатывает и обслуживает JVM?
На сегодняшний день JVM массово используется и развивается в разных проектах — как коммерческих, так и Open Sourse. Например, существует проект OpenJDK, который представляет собой полностью совместимый Java Development Kit, состоящий исключительно из свободного и открытого исходного кода. При этом, несмотря на открытость кода этого проекта, его разработкой практически полностью занимается корпорация Oracle.
Ошибка при создании платформы
Наконец, платформа установлена. Теперь обратим внимание на некоторые сбои и ошибки, которые могут появиться по завершении интеграции компонентов в систему. Самой первой и наиболее распространенной проблемой считается невозможность запуска виртуальной машины Java (для Windows последних поколений такая проблема обычно не наблюдается, а вот в неподдерживаемых более версиях систем вроде XP могут себя проявлять).
Для устранения проблемы используйте свойства компьютера, перейдите к дополнительным параметрам, войдите в раздел переменных сред, создайте новый параметр с именем и значением, показанными на изображении ниже.
В примере указываемое значение соответствует 512 Мб выделяемого объема оперативной памяти, который машине разрешено использовать. При необходимости можете его увеличить.
Ошибка поиска основного класса
Еще один сбой, при котором виртуальная машина самопроизвольно и в аварийном режиме завершает работу, может быть устранен следующим способом.
Сначала запустите средство поиска и удаления вредоносных программ, вписав в консоли «Выполнить» команду mrt, нажмите кнопку продолжения, а затем выберите полное сканирование. По окончании процесса полностью перезагрузите систему, затем войдите в конфигурацию (msconfig) или в «Диспетчер задач», после чего деактивируйте в списке компонент автозагрузки под названием WJView.exe. После этого рестарт системы нужно выполнить в обязательном порядке.
Для чего используется Java virtual machine
JVM имеет две основные функции:
- Позволяет запускать программы, написанные на Java, на любых устройствах или операционных системах. Так реализуется принцип Java — «Написал один раз, запускай везде».
- Управляет и оптимизирует память, которую используют программы.
Во время выхода первой версии Java в 1995 году все программы писались для конкретной операционной системы, а памятью управлял разработчик программного обеспечения. Поэтому появление JVM стало революцией на рынке.
Существует два основных определения JVM — техническое и повседневное:
- Техническое определение: JVM — это софт, который выполняет код и предоставляет среду для его выполнения.
- Повседневное определение: JVM — это способ запуска наших Java-приложений. Мы настраиваем параметры JVM, а потом полагаемся на ее автоматическое управление ресурсами во время выполнения.
Когда разработчики говорят о JVM, обычно имеется в виду процесс, который выполняется на нашем устройстве, особенно на сервере — он управляет и контролирует использование ресурсов Java-приложения.
Загрузка и выполнение 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 находится между работой программы, с ее запросами на файловые, сетевые ресурсы и ресурсы памяти, и операционной системой, которая предоставляет эти ресурсы.
Читайте также: