Архитектура Java сочетает в себе процесс компиляции и интерпретации. В нем объясняются различные процессы, связанные с разработкой программы на Java. Прежде чем я начну с темы, позвольте мне представить вам повестку дня этой статьи.
Ниже упомянутые указатели будут нашими темами для обсуждения:
- Что такое архитектура Java?
- Компоненты Java
- Как платформа Java независима?
- JIT в Java
Давайте начнем с понимания того, что такое архитектура Java?
Что такое архитектура Java?
Здесь я объясню вам архитектуру Java простыми шагами.
- В Java есть процесс компиляции и интерпретации.
- Код, написанный на Java, преобразуется в байтовые коды, которые выполняются компилятором Java.
- Байт-коды затем преобразуются JVM в машинный код.
- Машинный код выполняется непосредственно машиной.
Эта диаграмма иллюстрирует внутреннюю работу кода Java или, точнее, архитектуры Java!
Теперь давайте углубимся в архитектуру Java и поговорим о различных компонентах Java.
Компоненты архитектуры Java
Язык Java состоит из трех основных компонентов: JVM, JRE и JDK.
Java Virtual Machine, Java Runtime Environment и Java Development Kit соответственно.
Позвольте мне подробно остановиться на каждом из них один за другим:
Виртуальная машина Java:
Вы когда-нибудь слышали о WORA? (Напишите один раз Run Anywhere). Что ж, Java-приложения называются WORA из-за их способности запускать код на любой платформе. Это делается только из-за JVM. JVM — это компонент платформы Java, предоставляющий среду для выполнения программ Java. JVM интерпретирует байт-код в машинный код, который выполняется на машине, на которой выполняется программа Java.
Итак, в двух словах, JVM выполняет следующие функции:
- Загружает код
- Проверяет код
- Выполняет код
- Обеспечивает среду выполнения
Теперь позвольте мне показать вам архитектуру JVM. Вот оно!
Пояснение:
ClassLoader: Classloader — это подсистема JVM. Он используется для загрузки файлов классов. Всякий раз, когда мы запускаем java-программу, загрузчик классов сначала загружает ее.
Область метода класса: это одна из областей данных в JVM, в которой будут храниться данные класса. Статические переменные, статические блоки, статические методы, методы экземпляров хранятся в этой области.
Куча: куча создается при запуске JVM. Он может увеличиваться или уменьшаться в размере во время работы приложения.
Стек: стек JVM известен как стек потоков. Это область данных в памяти JVM, созданная для одного потока выполнения. Стек JVM потока используется потоком для хранения различных элементов, т.е. локальные переменные, частичные результаты и данные для вызова метода и возврата.
Собственный стек. Он включает в себя все собственные методы, используемые в вашем приложении.
Система исполнения:
- JIT-компилятор
- Уборщик мусора
JIT-компилятор. JIT-компилятор является частью среды выполнения. Это помогает повысить производительность приложений Java за счет компиляции байт-кодов в машинный код во время выполнения. Компилятор JIT включен по умолчанию. Когда метод компилируется, JVM напрямую вызывает скомпилированный код этого метода. Компилятор JIT компилирует байт-код этого метода в машинный код, компилируя его «как раз вовремя» для запуска.
Сборщик мусора. Как следует из названия, сборщик мусора означает сбор неиспользованного материала. Что ж, в JVM эту работу выполняет сборка мусора. Он отслеживает каждый объект, доступный в куче JVM, и удаляет ненужные объекты.
Сборщик мусора работает в два простых шага, известных как Mark and Sweep:
- Метка — здесь сборщик мусора определяет, какая часть памяти используется, а какая нет.
- Sweep — удаляет объекты, выявленные на этапе «пометки».
Среда выполнения Java:
Программное обеспечение JRE создает среду выполнения, в которой могут выполняться программы Java. JRE — это система на диске, которая берет ваш код Java, объединяет его с необходимыми библиотеками и запускает JVM для его выполнения. JRE содержит библиотеки и программное обеспечение, необходимое для запуска ваших Java-программ. JRE является частью JDK (которую мы изучим позже), но ее можно скачать отдельно.
Комплект для разработки Java:
Java Development Kit (JDK) — это среда разработки программного обеспечения, используемая для разработки Java-приложений и апплетов. Он содержит JRE и несколько инструментов разработки, интерпретатор/загрузчик (java), компилятор (javac), архиватор (jar), генератор документации (javadoc) в сопровождении другого инструмента.
Синяя область, показанная на диаграмме, — это JDK. Теперь позвольте мне подробно рассказать об инструментах разработки для всех вас.
java: это средство запуска для всех приложений Java.
javac: компилятор языков программирования Java.
javadoc: это генератор документации API.
jar: создает и управляет всеми файлами JAR.
Двигаясь вперед с архитектурой Java, давайте разберемся, как платформа Java независима?
Как платформа Java независима?
Когда какой-либо язык программирования называют платформо-независимым? Хорошо, если и только если он может работать во всех доступных операционных системах с точки зрения его разработки и компиляции.
Теперь Java не зависит от платформы только из-за байт-кода. Позвольте мне рассказать вам, что такое байт-код? Проще говоря,
байт-код — это код JVM, понятный машине.
Выполнение байт-кода в Java доказывает, что это платформо-независимый язык.
Здесь я покажу вам шаги. участвует в процессе выполнения байт-кода Java.
sample.java → javac (sample. class) → JVM(sample.obj) → конечный результат
Первый исходный код используется компилятором Java и преобразуется в файл .class. Код файла класса находится в форме байтового кода, и этот файл класса используется JVM для преобразования в объектный файл. После этого вы можете увидеть окончательный результат на своем экране.
Двигаясь вперед в статье об архитектуре Java, давайте разберемся с концепцией JIT в Java.
JIT в Java
Компилятор Just In Time, обычно известный как JIT, в основном отвечает за оптимизацию производительности приложений на основе Java во время выполнения. Производительность приложения зависит от компилятора.
Вот простая диаграмма, показывающая происходящий внутренний процесс.
Компилятор JIT компилирует байт-код метода в машинный код, компилируя его «как раз вовремя» для запуска. Когда метод компилируется, JVM напрямую вызывает скомпилированный код этого метода.
Давайте углубимся:
Байт-код должен быть интерпретирован или скомпилирован в соответствующие машинные инструкции в зависимости от предоставленного набора инструкций. Кроме того, их можно выполнять напрямую, если архитектура инструкций основана на байтовом коде. Интерпретация байт-кода влияет на скорость выполнения.
Чтобы повысить производительность, JIT-компиляторы взаимодействуют с виртуальной машиной Java (JVM) во время выполнения и компилируют подходящие последовательности байт-кода в собственный машинный код (как показано на диаграмме). . При использовании JIT-компилятора аппаратное обеспечение может выполнять собственный код по сравнению с многократной интерпретацией одной и той же последовательности байт-кода JVM и дополнительными затратами на процесс трансляции.
На этом я подошёл к концу этой статьи об архитектуре Java. Я надеюсь, что темы, обсуждавшиеся выше, принесут пользу вашим знаниям Java. Следите за новыми статьями!
Если вы хотите прочитать больше статей о самых популярных на рынке технологиях, таких как искусственный интеллект, DevOps, этический взлом, вы можете обратиться к официальному сайту Edureka.
Обратите внимание на другие статьи из этой серии, в которых объясняются другие различные аспекты Java.
5. Строка Java
6. Массив Java
8. Java-потоки
12. Учебник по Java
14. Java-программы
24. Аннотации в Java
26. Деревья в Java
30. 55 самых популярных вопросов на собеседовании по сервлетам
36. 50 главных вопросов на собеседовании по коллекциям Java, которые вам нужно знать
40. Главные вопросы и ответы на собеседованиях по MVC, которые вам нужно знать
42. Тупик в Java
Первоначально опубликовано на https://www.edureka.co 25 июля 2019 г.