Что такое JVM?

JVM - это спецификация, в которой функционирование виртуальной машины Java описано конкретно. Однако алгоритм является независимой идентификацией, которую выбирает только поставщик реализации, такой как Oracle и другие известные компании. Таким образом, JVM является реализацией, известной как Java Runtime Environment (JRE).

Определение

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

понимание

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

Помимо всего этого, он отвечает за выделение необходимой памяти, необходимой для Java-программы. Он также отвечает за запрет пространства памяти.

Что оно делает?

Важнейшие операции, которые выполняет JVM:

  • Загрузка кода
  • Проверка кода
  • Выполнение кода
  • Предоставление среды выполнения

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

Архитектура JVM

Давайте расскажем о внутренней архитектуре JVM, которая включает в себя:

1. Classloader

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

а) Загрузчик ClassLoader

Это суперкласс загрузчика классов Extension. Он помогает в загрузке файлов rt.jar, которые содержат все файлы классов.

б) Расширение ClassLoader

Это родительский загрузчик классов системного загрузчика классов и дочерний загрузчик классов Bootstrap. Файлы jar внутри каталога $ JAVA_HOME / jre / lib / ext можно извлечь через расширение ClassLoader.

C) Система / Приложение ClassLoader

Это дочерний элемент загрузчика классов расширений, также известный как загрузчик классов приложений. Файлы классов из classpath могут быть извлечены через него. Classpath, для которого задан текущий каталог, по умолчанию можно изменить с помощью ключа -cp или -classpath.

2. Класс (Метод) Площадь

Структуры предкласса, такие как данные полей и методов, пул констант времени выполнения и код для методов, хранятся в области классов (методов). Это память, которая создается при запуске JVM и распределяется между всеми потоками, такими как Heap.

3. Куча

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

4. Стек

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

5. Регистр счетчика программ (ПК)

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

6. Собственный метод стека

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

7. Двигатель

Будучи ключевым аспектом JVM, он взаимодействует с различными областями памяти. Это включает:

а. Уборщик мусора

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

б. переводчик

Он выполняет инструкции после чтения потока байт-кода.

с. Just-In-Time (JIT) компилятор

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

8. Собственный интерфейс Java (JNI)

Приложения, написанные на других языках, например, C, C ++, Assembly и т. Д., Могут быть подключены через интерфейс, предоставляемый JNI. Среда JNI используется Java для взаимодействия с библиотеками ОС или для отправки вывода на консоль.

Какая польза от JVM?

JVM имеет две основные функции: разрешать выполнение программ на Java на любом устройстве или операционной системе (известный как принцип «Один раз напиши, запускай где угодно») и управлять программной памятью и оптимизировать ее.

Преимущества и недостатки

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

1. Безопасность

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

2. Производительность

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

3. Правильность

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

Почему мы должны использовать JVM?

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

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

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

Вывод

Тот факт, что JVM работает на нескольких операционных системах, дает большой толчок в области технологий. Используя его в Windows, Linux и других ОС, он позволяет преобразовывать байт-код независимо от оборудования и ОС, которая должна быть выполнена. Кроме того, его способность обеспечивать безопасность главного компьютера за счет защиты их данных и программ является еще одной причиной того, что JVM была столь успешной в прошлом и продолжает доминировать в будущем.

Рекомендуемые статьи

Это было руководство к тому, что такое JVM (виртуальная машина Java). Здесь мы обсудили основные понятия со списком архитектуры и использования JVM. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Лучшие Javascript Frameworks
  2. Является ли Python объектно-ориентированным
  3. Приложения C ++ в реальном мире
  4. Карьера в ASP.NET
  5. JRE против JVM | Топ 8 отличий с (Инфографика)