Какво е JVM?

JVM е спецификация, където функционирането на виртуалната машина на Java е описано специално. Алгоритъмът обаче е независима идентичност, която се избира само от доставчика на внедряване като Oracle и други известни компании. Като такъв, JVM е реализация, известна като Java Runtime Environment (JRE).

дефиниция

Определя се като описание на софтуерна програма, предлагаща среда за изпълнение на кода и неговото значително изпълнение. С други думи, това е начинът, по който изпълняваме Java Programs - конфигуриране на настройките на JVM и разчитане на него, за да се справи с програмните ресурси по време на процеса на изпълнение.

разбиране

Java е известна като платформа, независима поради виртуалната машина на Java. Когато подаването се извършва на различни компютри с различна операционна система, притежаваща JVM, байт-кодът се интерпретира на езиково ниво на машината от JVM. За да бъдем точни, програмите JVM са написани на език за програмиране на C, докато JVM не зависи от операционната система. Той е ключов компонент на Java архитектурата.

Освен всичко това, тя е отговорна за присвояване на основната памет, изисквана от програма на Java. Той е отговорен и за забрана на паметта.

Какво прави?

Основните операции, които JVM извършва, са следните:

  • Зареждане на код
  • Проверка на кода
  • Изпълнение на код
  • Осигуряване на среда за изпълнение

Освен всичко това, той разгръща класификации за файлов формат на класа, област на паметта, купчина, събрана от боклук, набор от регистри, докладване за фатални грешки и т.н.

JVM Архитектура

Нека да вземем някои ключови идеи за вътрешната архитектура на JVM, която се състои от:

1. Classloader

Това е подсистема на JVM, използвана за зареждане на файлове от клас. Докато стартира програмата Java, тя първо се зарежда от класната програма. Трите класни товарача, които Java включва са, както следва:

a) Bootstrap ClassLoader

Това е свръхкласът на разширителния клас. Той подпомага зареждането на rt.jar файлове, които носят всички файлове от класа.

б) Удължител ClassLoader

Това е родителският клас за зареждане на System classloader и детски клас за зареждане на Bootstrap. Файловете с буркан в директорията $ JAVA_HOME / jre / lib / ext могат да бъдат извлечени чрез разширението ClassLoader.

В) Система / Приложение ClassLoader

Това е детето на разширението classloader, известно още като Application classloader. Класовите файлове от classpath могат да бъдат извлечени чрез него. Classpath, който е зададен в текущата директория, по подразбиране може да бъде променен с помощта на превключвателя '-cp' или '-classpath'.

2. Област на клас (метод)

Структурите от предварителния клас като данни от полета и методи, постоянен пул на изпълнение и кодът за методите се съхраняват в клас (метод). Това е памет, която е създадена при стартиране на JVM и се споделя между всички теми като Heap.

3. Купа

Обектите се присвояват чрез тази полезна област за данни за изпълнение. Това е място за памет, съхраняващо обекти, заедно с променливите му. Всеки път, когато в Java се създаде обект, той отива в грамадата - областта на паметта.

4. Стека

Наред със съхранението на рамки, Java Stack притежава променливи и частични резултати. Той също играе ключова роля в метода, извикването и връщането. Всяка отделна нишка се състои от своя частен JVM стек, създаден едновременно с нишката. Всеки път, когато метод ескалира, се генерира нов кадър и се разбива, когато извикването на метода бъде завършено.

5. Регистър на програмния брояч (компютър)

PC регистърът съдържа JVM адреса на инструкции към момента на неговото изпълнение. Проследявайки инструкциите, тя има стойност за всяка инструкция, която не е определена за родните методи.

6. Стефа на родния метод

Нативните процедури, използвани в приложенията, са част от Native Method Stack. Тези методи са написани на езици, различни от Java. Свързани с всяка нишка, реализациите на JVM не могат да разчитат на конвенционални стекове и не могат да зареждат собствени методи. За да бъдем точни, той е подобен на стека, но се използва за родните методи.

7. Двигател

Като ключов аспект на JVM, той комуникира с различните си области на паметта. Това включва:

а. Събирач на боклук

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

б. преводач

Той изпълнява инструкциите, след като прочете потока на байтовия код.

° С. Just-In-Time (JIT) компилатор

Активирайки подобряване на производителността, компилаторът JIT компилира части от байтовия код с подобна функционалност едновременно. Той помага за намаляване на времето, необходимо за процеса на компилиране.

8. Java Native интерфейс (JNI)

Приложенията, скриптирани на други езици, например C, C ++, Assembly и др., Могат да бъдат свързани чрез интерфейс, доставен от JNI. JNI рамката се използва от Java за взаимодействие с библиотеки на ОС или за изпращане на изход към конзолата.

Каква е ползата от JVM?

JVM има две основни функции: да позволи на Java програми да се стартират на всяко устройство или операционна система (известна като принципа „Пиши веднъж, пусни навсякъде“) и да управлява и оптимизира паметта на програмата.

Предимства и недостатъци

Java програмите се изпълняват правилно чрез JVM. Байт код - междинен език се използва за компилиране на Java програми и след това се изпълнява чрез JVM. Всяка отделна програма, която се компилира в байт код, може да се изпълнява от всяка платформа, захранвана от JVM. Това позволява Java софтуера да е по-ефективен и съвместим според различните компютърни платформи. JVM има няколко забележителни предимства и недостатъци, които всеки разработчик трябва да претегли внимателно, преди да инвестира в разработка на Java.

1. Сигурност

Чрез рисковете за сигурност на JVM програмистите могат ефективно да записват защитени Java програми от висок клас. Тя дава възможност на ресурсите на операционната система да идентифицира зловредния софтуер и също така помага за неговото предотвратяване.

2. Изпълнение

Програмите на Java, които работят на JVM, вероятно ще предлагат по-бавно изпълнение в сравнение с програмите, написани на C ++. Това се дължи на оптимизацията на кода, която прекомерно разчита на различни специфични за системата функции. Също така, Java-байт кодът не може да бъде оптимизиран за конкретен хардуерен набор, тъй като е неутрален към системата.

3. Коректност

Правилна е програмата, която се представя ефективно и отговаря на очакванията на потребителя в най-голяма степен. Вградените функции на JVM му позволяват да работи правилно и без грешки.

Защо трябва да използваме JVM?

Въпреки синтактичния код на Java, JVM може да работи на различни различни езикови програми. Малко от причините, поради които се използва толкова широко и защо да го използвате в различни платформи, са изброени по-долу:

Използва heap памет: Heap паметта е основен компонент, който се използва за динамично разпределение на паметта за дефиниране на класове и инициализация на обекти и тъй като JVM поддържа heap памет, тя има широко приемане.

Предоставяне на сигурност за отдалечено местоположение на код: JVM Framework е проектиран по такъв начин, че отдалеченото приложение да се изпълнява лесно. Тази теория се следва за изпълнение на аплета Java.

заключение

Фактът, че JVM работи на множество операционни системи, му дава палец в областта на технологиите. Използвайки го в Windows, Linux и други операционни системи, е разрешено да трансформира байткод, независимо от хардуера и операционната система, която ще се изпълни. В допълнение, способността му да предлага сигурност на хост компютъра чрез осигуряване на техните данни и програма е друга причина, поради която JVM е бил толкова успешен в миналото и продължава да бъде доминиращ в бъдеще.

Препоръчителни статии

Това е ръководство за това какво е JVM (Java Virtual Machine). Тук обсъдихме основните понятия със списъка на Архитектура и приложения на JVM. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Най-добрите рамки за Javascript
  2. Ориентиран е Python
  3. Приложения на C ++ в реалния свят
  4. Кариера в ASP.NET
  5. JRE срещу JVM | Топ 8 разлики с (Инфографика)