Какво е JVM? Java Виртуална машина Archiтекстура

В какво е JVM Java?

Java Виртуална машина (JVM) е двигател, който осигурява среда за изпълнение за управление на Java Код или приложения. Преобразува Java байт код в машинен език. JVM е част от Java Среда за изпълнение (JRE). В други езици за програмиране компилаторът произвежда машинен код за определена система. обаче Java компилаторът произвежда код за виртуална машина, известна като Java Виртуална машина.

Как работи JVM?

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


Как работи JVM
Работа на Java Виртуална машина (JVM)

В този JVM урок ще научите-

Archiструктура на JVM (Java виртуална машина)

Сега в този JVM урок, нека разберем Archiструктура на JVM. JVM архитектура в Java съдържа програма за зареждане на класове, област на паметта, механизъм за изпълнение и т.н.

 


JVM Archiтекстура
Java Виртуална машина Archiтекстура

1) ClassLoader
Зареждането на класове е подсистема, използвана за зареждане на файлове на класове. Той изпълнява три основни функции, т.е. Зареждане, свързване и инициализация.

2) Област на метода
JVM Method Area съхранява структури от класове като метаданни, постоянен пул за изпълнение и код за методи.

3) Купчина
Всички Заведения, техните свързани променливи на екземпляри и масиви се съхраняват в купчината. Тази памет е обща и се споделя между множество нишки.

4) Езикови стекове на JVM
Java езикови стекове съхраняват локални променливи и това са частични резултати. Всяка нишка има свой собствен JVM стек, създаден едновременно със създаването на нишката. Нов кадър се създава при всяко извикване на метод и се изтрива, когато процесът на извикване на метода приключи.

5) PC регистри
PC регистър съхранява адреса на Java инструкция за виртуална машина, която се изпълнява в момента. в Java, всяка нишка има свой отделен компютърен регистър.

6) Нативни стекове от методи
Стековете на естествените методи съдържат инструкциите на собствения код, зависещ от собствената библиотека. Написано е на друг език вместо Java.

7) Двигател за изпълнение
Това е вид софтуер, използван за тестване на хардуер, софтуер или цели системи. Механизмът за изпълнение на теста никога не носи информация за тествания продукт.

8) Интерфейс на родния метод
Интерфейсът на Native Method е програмна рамка. Позволява Java код, който се изпълнява в JVM за извикване от библиотеки и родни приложения.

9) Библиотеки за собствени методи
Native Libraries е колекция от Native Libraries(C, C++), които са необходими на Изпълнителната машина.

Процес на компилиране и изпълнение на софтуерен код

За да напишете и изпълните софтуерна програма, имате нужда от следното

1) Редактор – За да въведете програмата си, може да се използва бележник

2) съставител – За да конвертирате вашата високоезична програма в собствен машинен код

3) Линкер – За да комбинирате различни препратки към програмни файлове във вашата основна програма заедно.

4) Товарач – За да заредите файловете от вашето вторично устройство за съхранение като твърд диск, флаш устройство, компактдиск в RAM за изпълнение. Зареждането се извършва автоматично, когато изпълните кода си.

5) Изпълнение – Действително изпълнение на кода, който се обработва от вашата операционна система и процесор.

С този фон вижте следния видеоклип и научете вътрешната работа и архитектурата на JVM на JVM (Java Виртуална машина).

Кликнете тук ако видеото не е достъпно

Процес на компилиране и изпълнение на C код

За да разберем Java процес на компилиране в Java. Нека първо да разгледаме набързо процеса на компилиране и свързване в C.

Да предположим, че основно сте извикали две функции f1 и f2. Основната функция се съхранява във файл a1.c.

Процес на компилиране и изпълнение на C код

Функцията f1 се съхранява във файл a2.c

Процес на компилиране и изпълнение на C код

Функцията f2 се съхранява във файл a3.c

Процес на компилиране и изпълнение на C код

Всички тези файлове, т.е. a1.c, a2.c и a3.c, се подават на компилатора. Чийто изход са съответните обектни файлове, които са машинният код.

Процес на компилиране и изпълнение на C код

Следващата стъпка е интегрирането на всички тези обектни файлове в един .exe файл с помощта на линкер. Линкерът ще обедини всички тези файлове и ще създаде .exe файла.

Процес на компилиране и изпълнение на C код

По време на изпълнение на програмата, програма за зареждане ще зареди a.exe в RAM за изпълнението.

Процес на компилиране и изпълнение на C код

Java компилиране и изпълнение на код в Java VM

Сега в този JVM урок, нека разгледаме процеса за JAVA. Във вашия основен имате два метода f1 и f2.

  • Основният метод се съхранява във файл a1.java
  • f1 се съхранява във файл като a2.java
  • f2 се съхранява във файл като a3.java

Java компилиране и изпълнение на код в Java VM

Компилаторът ще компилира трите файла и ще създаде 3 съответни .class файла, които се състоят от BYTE код. За разлика от C, не се прави свързване.

- Java VM или Java Виртуалната машина се намира в RAM. По време на изпълнение, използвайки инструмента за зареждане на класове, файловете на класа се пренасят в RAM. BYTE кодът се проверява за всякакви пробиви в сигурността.

Java компилиране и изпълнение на код в Java VM

След това механизмът за изпълнение ще преобразува байт кода в собствен машинен код. Това е точно навреме за компилиране. Това е една от основните причини Java е сравнително бавен.

Java компилиране и изпълнение на код в Java VM

ЗАБЕЛЕЖКА: JIT или Компилаторът точно навреме е част от Java Виртуална машина (JVM). Той интерпретира част от байтовия код, който има подобна функционалност едновременно.

Защо е Java както интерпретиран, така и компилиран език?

Програмни езици са класифицирани като

  • Език от по-високо ниво Пр. C++, Java
  • Езици на средно ниво Пр. В
  • Език на ниско ниво Пр Assembly
  • накрая най-ниското ниво като машинния език.

A компилатор е програма, която преобразува програма от едно ниво на език на друго. Примерно преобразуване на C++ програма в машинен код. Java компилаторът преобразува Java код от високо ниво в байт код (който също е вид машинен код).

An преводач е програма, която преобразува програма на едно ниво в друг език за програмиране на същото ниво. Примерно преобразуване на Java програма в C++

In Java, генераторът на Just In Time Code преобразува байт кода в оригиналния машинен код, който е на същите нива на програмиране.

Следователно, Java е както компилиран, така и интерпретиран език.

Защо е Java бавен?

Двете основни причини за бавността на Java сте

  1. Динамично свързване: За разлика от C, свързването се извършва по време на изпълнение, всеки път, когато програмата се стартира Java.
  2. Интерпретатор по време на изпълнение: Преобразуването на байт код в собствен машинен код се извършва по време на изпълнение в Java което допълнително забавя скоростта

Въпреки това най-новата версия на Java се обърна до голяма степен към тесните места в производителността.

Oбобщение:

  • Пълната форма на JVM е Java Виртуална машина. JVM в Java е двигателят, който задвижва Java Код. Преобразува Java байт код в машинен език.
  • JVM архитектура в Java съдържа програма за зареждане на класове, област на паметта, механизъм за изпълнение и т.н.
  • В JVM, Java кодът се компилира в байт код. Този байт код се интерпретира на различни машини
  • JIT означава компилатор точно навреме. JIT е част от Java Виртуална машина (JVM). Използва се за ускоряване на времето за изпълнение
  • В сравнение с други компилиращи машини, JVM в Java може да се изпълнява бавно.

Обобщете тази публикация с: