ЈВМ - Шта је Јава виртуелна машина & амп; његова Архитектура

Преглед садржаја:

Anonim

Шта је ЈВМ?

Јава виртуелна машина (ЈВМ) је мотор који пружа рунтиме окружење за покретање Јава кода или апликација. Претвара Јава бајт код у машински језик. ЈВМ је део Јава Рун Енвиронмент (ЈРЕ). У другим програмским језицима, компајлер производи машински код за одређени систем. Међутим, Јава компајлер производи код за виртуелну машину познату као Јава виртуелна машина.

Ево како ЈВМ ради

Прво, Јава код се уклапа у бајт код. Овај бајткод се тумачи на различитим машинама

Између система хоста и Јава извора, Битецоде је посреднички језик.

ЈВМ у Јави је одговоран за додељивање меморијског простора.

Рад Јава виртуелне машине (ЈВМ)

У овом ЈВМ упутству научићете-

  • ЈВМ Арцхитецтуре
  • Процес састављања и извршавања софтверског кода
  • Процес састављања и извршавања Ц кода
  • Процес састављања и извршавања Јава кода
  • Зашто се Јава тумачи и компајлира језик?
  • Зашто је Јава спора?

ЈВМ Арцхитецтуре

Сада у овом ЈВМ упутству, хајде да разумемо архитектуру ЈВМ-а. ЈВМ архитектура у Јави садржи учитавач класа, подручје меморије, извршни механизам итд.
Јава архитектура виртуелних машина

1) ЦлассЛоадер

Учитавач класе је подсистем који се користи за учитавање датотека класе. Обавља три главне функције, наиме Учитавање, повезивање и иницијализација.

2) Област методе

ЈВМ Метход Ареа чува структуре класа као што су метаподаци, константно време извршавања и код за методе.

3) гомила

Сви објекти, њихове повезане променљиве инстанце и низови се чувају у гомили. Ова меморија је уобичајена и дели се кроз више нити.

4) ЈВМ језички стогови

Јава језички стогови чувају локалне променљиве и то су делимични резултати. Свака нит има свој ЈВМ стек, креиран истовремено док се нит ствара. Нови оквир се креира сваки пут када се позове метода и брише се када је поступак позивања методе завршен.

5) ПЦ регистри

У ПЦ регистру се чува адреса инструкције Јава виртуелне машине која се тренутно извршава. У Јави свака нит има свој засебни ПЦ регистар.

6) Нативни стекови метода

Нативни стекови метода садрже упутства о изворном коду који зависи од матичне библиотеке. Написан је на другом језику уместо на Јави.

7) Извршни мотор

То је врста софтвера који се користи за тестирање хардвера, софтвера или комплетних система. Механизам за извршавање теста никада не садржи никакве информације о тестираном производу.

8) Сучеље матичног метода

Интерфејс матичне методе је програмски оквир. Омогућава Јава код који је покренут у ЈВМ-у да позива библиотеке и матичне апликације.

9) Библиотеке матичних метода

Нативе Либрариес је колекција Нативе Либрариес (Ц, Ц ++) које су потребне извршном механизму.

Процес састављања и извршавања софтверског кода

Да бисте писали и извршавали софтверски програм, потребно вам је следеће

1) Уређивач - За унос вашег програма у ово се може користити бележница

2) Компајлер - за претварање програма на високом језику у изворни машински код

3) Линкер - За комбиновање различитих референци програмских датотека у вашем главном програму.

4) Утоваривач - за учитавање датотека са вашег секундарног уређаја за складиштење, као што су тврди диск, флеш диск, ЦД у РАМ за извршење. Учитавање се врши аутоматски када извршите свој код.

5) Извршење - Стварно извршавање кода којим управља ваш ОС и процесор.

Уз ову позадину, погледајте следећи видео и научите интерни рад и архитектуру ЈВМ-а ЈВМ (Јава виртуелна машина).

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

Процес састављања и извршавања Ц кода

Да бисте разумели процес компајлирања Јава у Јави. Хајде да прво на брзину прегледамо поступак компајлирања и повезивања у Ц.

Претпоставимо да сте у главном позвали две функције ф1 и ф2. Главна функција је сачувана у датотеци а1.ц.

Функција ф1 се чува у датотеци а2.ц

Функција ф2 се чува у датотеци а3.ц

Све ове датотеке, тј. А1.ц, а2.ц и а3.ц, достављају се компајлеру. Чији је излаз одговарајуће објектне датотеке које су машински код.

Следећи корак је интеграција свих ових објектних датотека у једну .еке датотеку уз помоћ повезивача. Линкер ће удружити све ове датотеке и створити .еке датотеку.

Током извођења програма, програм за учитавање ће учитати а.еке у РАМ ради извршења.

Компилација и извршавање Јава кода у Јава ВМ

Сада у овом ЈВМ упутству, погледајмо поступак за ЈАВА. У главном, имате две методе ф1 и ф2.

  • Главни метод се чува у датотеци а1.јава
  • ф1 се чува у датотеци као а2.јава
  • ф2 се чува у датотеци као а3.јава

Компајлер ће компајлирати три датотеке и произвести 3 одговарајуће .цласс датотеке која се састоји од БИТЕ кода. За разлику од Ц, не врши се повезивање .

Јава ВМ или Јава виртуелна машина се налазе у РАМ меморији. Током извршавања, помоћу учитача класа, датотеке класе се преносе у РАМ. БИТЕ код је верификован за било каква кршења безбедности.

Даље, извршни механизам ће претворити бајт код у изворни машински код. Ово је управо на време састављање. То је један од главних разлога зашто је Јава релативно спора.

НАПОМЕНА: ЈИТ или Јуст-ин-тиме цомпилер део је Јава виртуелне машине (ЈВМ). Она истовремено тумачи део бајт кода који има сличну функционалност.

Зашто је Јава и интерпретирани и компајлирани језик?

Програмски језици су класификовани као
  • Језик вишег нивоа Пр. Ц ++, Јава
  • Језици средњег нивоа Пр. Ц.
  • Библијски језик на ниском нивоу
  • коначно најнижи ниво као Машински језик.

Преводилац је програм који конвертује програм са једног нивоа језика на други. Пример конверзије програма Ц ++ у машински код.

Јава компајлер претвара јава код високог нивоа у бајт код (који је такође врста машинског кода).

Преводилац је програм који претвара програм на једном нивоу у другом програмском језику на истом нивоу. Пример конверзије Јава програма у Ц ++

У Јави генератор Јуст Ин Тиме Цоде претвара бајт код у изворни машински код који је на истим нивоима програмирања.

Дакле, Јава је компајлиран као и интерпретиран језик.

Зашто је Јава спора?

Два главна разлога спорости Јаве су

  1. Динамичко повезивање: За разлику од Ц, повезивање се врши током извођења, сваки пут када се програм покрене на Јави.
  2. Интерпретатор током извршавања : Конверзија бајт кода у изворни машински код врши се током извођења у Јави, што даље успорава брзину

Међутим, најновија верзија Јаве у великој мери је решила уска грла у перформансама.

Резиме :

  • Пуни облик ЈВМ-а је Јава виртуелна машина. ЈВМ у Јави је мотор који покреће Јава код. Претвара Јава бајт код у машински језик.
  • ЈВМ архитектура у Јави садржи учитавач класа, подручје меморије, извршни механизам итд.
  • У ЈВМ-у, Јава код се компајлира у бајт код. Овај бајткод се тумачи на различитим машинама
  • ЈИТ је скраћеница за Јуст-ин-тиме цомпилер. ЈИТ је део Јава виртуелне машине (ЈВМ). Користи се за убрзавање времена извршења
  • У поређењу са другим машинама компајлера, ЈВМ у Јави може бити спор у извршењу.