ЈВМ (Јава виртуелна машина) је апстрактна машина. То је спецификација која обезбеђује окружење за извршавање у којем јава бајт код може да се изврши.
ЈВМ су доступни за многе хардверске и софтверске платформе (тј. ЈВМ зависи од платформе).
Шта је ЈВМ
То је:
- Спецификација где је наведен рад Јава виртуелне машине. Али добављач имплементације је независан у избору алгоритма. Његову имплементацију су обезбедили Орацле и друге компаније.
- Имплементација Његова имплементација је позната као ЈРЕ (Јава Рунтиме Енвиронмент).
- Рунтиме Инстанце Кад год напишете јава команду на командној линији за покретање јава класе, креира се инстанца ЈВМ-а.
Шта ради
ЈВМ обавља следећу операцију:
линук маке команду
- Учитава код
- Верификује код
- Извршава код
- Обезбеђује окружење за извршавање
ЈВМ пружа дефиниције за:
- Меморијска област
- Формат датотеке разреда
- Регистрован сет
- Хрпа сакупљена смећа
- Пријављивање фаталних грешака итд.
ЈВМ Арцхитецтуре
Хајде да разумемо унутрашњу архитектуру ЈВМ-а. Садржи учитавач класа, меморијску област, машину за извршавање итд.
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) Јава изворни интерфејс
Јава Нативе Интерфаце (ЈНИ) је оквир који обезбеђује интерфејс за комуникацију са другом апликацијом написаном на другом језику као што је Ц, Ц++, Ассембли итд. Јава користи ЈНИ оквир за слање излаза на конзолу или интеракцију са библиотекама ОС-а.