logo

Архитектура ЈВМ (Јава виртуелне машине).

  1. Јава виртуелна машина
  2. Унутрашња архитектура ЈВМ-а

ЈВМ (Јава виртуелна машина) је апстрактна машина. То је спецификација која обезбеђује окружење за извршавање у којем јава бајт код може да се изврши.

ЈВМ су доступни за многе хардверске и софтверске платформе (тј. ЈВМ зависи од платформе).

Шта је ЈВМ

То је:

  1. Спецификација где је наведен рад Јава виртуелне машине. Али добављач имплементације је независан у избору алгоритма. Његову имплементацију су обезбедили Орацле и друге компаније.
  2. Имплементација Његова имплементација је позната као ЈРЕ (Јава Рунтиме Енвиронмент).
  3. Рунтиме Инстанце Кад год напишете јава команду на командној линији за покретање јава класе, креира се инстанца ЈВМ-а.

Шта ради

ЈВМ обавља следећу операцију:

линук маке команду
  • Учитава код
  • Верификује код
  • Извршава код
  • Обезбеђује окружење за извршавање

ЈВМ пружа дефиниције за:

  • Меморијска област
  • Формат датотеке разреда
  • Регистрован сет
  • Хрпа сакупљена смећа
  • Пријављивање фаталних грешака итд.

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

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

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

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

Цласслоадер је подсистем ЈВМ-а који се користи за учитавање датотека класа. Кад год покренемо јава програм, прво га учитава учитавач класа. У Јави постоје три уграђена учитавача класа.

    Боотстрап ЦлассЛоадер: Ово је први цласслоадер који је супер класа Ектенсион цласслоадер-а. Учитава рт.јар датотека која садржи све датотеке класа Јава Стандард Едитион као што су класе пакета јава.ланг, класе пакета јава.нет, класе пакета јава.утил, класе пакета јава.ио, класе пакета јава.скл итд.Ектенсион ЦлассЛоадер: Ово је подређени учитавач класа за Боотстрап и родитељски учитавач класа за Систем цласслоадер. Учитава јар датотеке које се налазе унутра $ЈАВА_ХОМЕ/јре/либ/ект именик.Систем/апликација ЦлассЛоадер: Ово је подређени учитавач класа Ектенсион цласслоадер-а. Учитава датотеке класа са путање класа. Подразумевано, пут до класе је постављен на тренутни директоријум. Можете да промените путању до класе користећи прекидач '-цп' или '-цласспатх'. Такође је познат као Апплицатион цласслоадер.
 //Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } } 
Тестирајте одмах

Излаз:

 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Ово су интерни учитавачи класа које пружа Јава. Ако желите да креирате сопствени учитавач класа, потребно је да проширите класу ЦлассЛоадер.

2) Класа (Метода) Област

Подручје класе(метода) складишти структуре по класама као што су рунтиме константи, подаци поља и методе, код за методе.

3) Хрпа

То је област података времена извршавања у којој се додељују објекти.

јава излазни карактер

4) Стацк

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

Свака нит има приватни ЈВМ стек, креиран у исто време када и нит.

Нови оквир се креира сваки пут када се метода позове. Оквир се уништава када се заврши позивање његове методе.

5) Регистар програмског бројача

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

6) Нативе Метход Стацк

Садржи све изворне методе које се користе у апликацији.

ажурирање из придруживања скл

7) Машина за извршење

Садржи:

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

8) Јава изворни интерфејс

Јава Нативе Интерфаце (ЈНИ) је оквир који обезбеђује интерфејс за комуникацију са другом апликацијом написаном на другом језику као што је Ц, Ц++, Ассембли итд. Јава користи ЈНИ оквир за слање излаза на конзолу или интеракцију са библиотекама ОС-а.