Архитектура 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.

1. Объектно-ориентированное программирование

2. Наследование в Java

3. Полиморфизм в Java

4. Абстракция в Java

5. Строка Java

6. Массив Java

7. Коллекции Java

8. Java-потоки

9. Введение в сервлеты Java

10. Учебник по сервлетам и JSP

11. Обработка исключений в Java

12. Учебник по Java

13. Вопросы для собеседования по Java

14. Java-программы

15. Котлин против Java

16. Внедрение зависимостей с использованием Spring Boot

17. Сопоставимо в Java

18. 10 лучших фреймворков Java

19. Java Reflection API

20. 30 лучших шаблонов в Java

21. Основная шпаргалка по Java

22. Программирование сокетов на Java

23. Шпаргалка по ООП по Java

24. Аннотации в Java

25. Проект системы управления библиотекой на Java

26. Деревья в Java

27. Машинное обучение в Java

28. Основные структуры данных и алгоритмы в Java

29. Навыки Java-разработчика

30. 55 самых популярных вопросов на собеседовании по сервлетам

31. Лучшие Java-проекты

32. Шпаргалка по строкам Java

33. Вложенный класс в Java

34. Вопросы и ответы на собеседование по Java Collections

35. Как справиться с взаимоблокировкой в ​​Java?

36. 50 главных вопросов на собеседовании по коллекциям Java, которые вам нужно знать

37. Какова концепция пула строк в Java?

38. В чем разница между C, C++ и Java?

39. Палиндром в Java — Как проверить число или строку?

40. Главные вопросы и ответы на собеседованиях по MVC, которые вам нужно знать

41. 10 лучших приложений языка программирования Java

42. Тупик в Java

43. Квадратный корень в Java

44. Приведение типов в Java

45. Операторы в Java и их типы

46. Деструктор в Java

47. Двоичный поиск в Java

48. Архитектура MVC в Java

49. Вопросы и ответы на собеседовании в Hibernate

Первоначально опубликовано на https://www.edureka.co 25 июля 2019 г.