Объяснение архитектуры и компонентов Java [2022]

Опубликовано: 2021-01-04

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

В этой статье предполагается, что вы имеете общее представление об основах Java. Даже если вы не знакомы с основами Java, вы можете задать любые вопросы в разделе комментариев ниже. Давайте начнем:

Оглавление

Объяснение архитектуры Java

В Java есть два процесса: компиляция и интерпретация. Компилятор Java преобразует код, присутствующий в Java, в байтовые коды. Виртуальная машина Java (JVM) преобразует байтовые коды в машинный код, который машина выполняет напрямую.

Мы можем описать этот процесс в следующих шагах:

  • Исходный код отправляется компилятору Java
  • Компилятор Java преобразует его в байтовые коды.
  • Байт-коды отправляются на виртуальную машину Java.
  • Наконец, он переходит к ОС (операционной системе)

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

JVM (виртуальная машина Java)

Создатели Java хотели, чтобы это был WORA (Write Once Run Anywhere). Это означает, что вы можете запускать его приложения на любой платформе, но то, что дает Java такое качество, — это JVM. JVM предоставляет среду для выполнения кода Java. Он интерпретирует байт-код и преобразует его в машинный код, чтобы машина могла запускать программу Java.

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

JRE (среда выполнения Java)

JRE создает среду выполнения, в которой вы можете выполнять программы Java. Он берет код Java и объединяет его с необходимыми библиотеками. JRE также инициирует JVM для своего выполнения. В Java Runtime Environment есть необходимое программное обеспечение и библиотеки, чтобы вы могли запускать программы.

JDK (комплект для разработки Java)

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

Компоненты JVM

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

Подсистема ClassLoader

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

Загрузка

Этот компонент загружает классы. Он имеет BootStrap ClassLoader для загрузки классов, принадлежащих пути к классам начальной загрузки. Extension ClassLoader загружает классы, расположенные внутри папки ext, а Application ClassLoader загружает путь, указанный в переменной среды, и подобные файлы.

Связывание

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

Инициализация

В этом разделе ClassLoading система присваивает статическим переменным исходные значения и выполняет статический блок.

Область данных времени выполнения

Этот раздел JVM имеет следующие компоненты:

Область метода

В области метода хранятся все данные уровня класса. Каждая JVM имеет только одну область методов.

Площадь кучи

Область кучи хранит все объекты и их массивы экземпляров и переменные. Как и область метода, JVM имеет только одну область кучи.

Область стека

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

Регистры ПК

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

Стеки нативных методов

Как следует из названия, в этом разделе содержится информация о нативном методе. Он создает уникальный собственный стек методов для каждой угрозы.

Следует отметить, что первые два компонента области данных времени выполнения (область методов и область кучи) являются общими ресурсами, а область стека — нет.

Исполнительный механизм

Execution Engine выполняет байт-код. Он читает и выполняет его по частям. Он также имеет различные компоненты:

Устный переводчик

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

JIT-компилятор

У JIT-компилятора нет недостатка, который есть у интерпретатора. Таким образом, когда Execution Engine находит повторяющийся код, он использует JIT-компилятор вместо интерпретатора. Компилятор JIT преобразует байт-код в собственный код после его компиляции. Система использует собственный код напрямую.

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

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

Последним компонентом Execution Engine является сборщик мусора, который собирает и избавляется от объектов, на которые нет ссылок. Вы можете вызвать его, вызвав system.gc(), однако это не гарантирует его выполнение.

Помимо этих компонентов, JVM также имеет JNI (собственный интерфейс Java) и библиотеки собственных методов. Первый взаимодействует со вторым и предоставляет необходимые для исполнения собственные библиотеки.

Получите курс по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Последние мысли

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

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

Если вам интересно узнать больше о Java, ООП и разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов интенсивного обучения. Более 9 проектов и заданий, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Подготовьтесь к карьере будущего

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