Що таке JVM?

JVM - специфікація, де функціонування віртуальної машини Java спеціально описано. Однак алгоритм - це незалежна ідентичність, яку вибирає лише постачальник, наприклад Oracle та інші відомі компанії. Як такий, JVM - це реалізація, відома як середовище виконання Java Java (JRE).

Визначення

Він визначається як опис програмного забезпечення, що пропонує середовище виконання коду та його значне виконання. Іншими словами, саме так ми запускаємо Java-програми - налаштовуючи налаштування JVM і покладаючись на нього, щоб впоратися з програмними ресурсами в процесі виконання.

Розуміння

Java відома як платформа, незалежна завдяки віртуальній машині Java. Коли подання виконується на різні комп'ютери з різною операційною системою, що має JVM, байт-код інтерпретується JVM на машинному рівні мови. Якщо бути точним, програми JVM написані мовою програмування на C, тоді як JVM не залежить від операційної системи. Це ключовий компонент архітектури Java.

Крім усього цього, він відповідає за призначення необхідної пам'яті, необхідної для програми Java. Він також несе відповідальність за заборону місця в пам'яті.

Що це робить?

Найважливішими операціями, які виконує JVM, є:

  • Завантаження коду
  • Перевірка коду
  • Виконання коду
  • Забезпечення середовища виконання

Крім усього цього, він розгортає класифікації для формату файлів класу, області пам’яті, купи, зібраної сміттям, набору реєстрів, повідомлення про фатальні помилки тощо

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

Давайте отримаємо кілька ключових відомостей про внутрішню архітектуру JVM, яка складається з:

1. Класифікатор

Це підсистема JVM, що використовується для завантаження файлів класів. Під час запуску програми java спочатку завантажується завантажувач. Три завантажувачі класів, до яких входить Java, є такими:

a) завантажувач класу завантажувача

Це суперклас завантажувача класів Extension. Він допомагає завантажувати файли rt.jar, які містять усі файли класу.

b) Розширення ClassLoader

Це батьківський навантажувач завантажувачів системи та дочірній завантажувач Bootstrap. Файли jar у каталозі $ JAVA_HOME / jre / lib / ext можуть бути вилучені за допомогою Extell ClassLoader.

C) Система / Клас програми завантаження

Це дочірник завантажувача класів Extension, також відомий як завантажувач додатків. Файли класів з classpath можуть бути вилучені через нього. Classpath, встановлений у поточному каталозі, за замовчуванням може бути змінений за допомогою перемикача '-cp' або '-classpath'.

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

Структури попереднього класу, такі як дані про поле та методи, постійний пул виконання та код методів, зберігаються в області класу (методу). Це пам'ять, яка створена під час запуску JVM і поділяється між усіма потоками, як Heap.

3. Купи

Об'єкти призначаються через цю корисну область даних для виконання. Це місце пам'яті, де зберігаються об'єкти разом із його змінними. Щоразу, коли об’єкт створений на Java, він переходить у купу - область пам’яті.

4. Стек

Поряд із збереженням кадрів, Java Stack містить змінні та часткові результати. Він також відіграє ключову роль у методі, виклику та поверненні. Кожна окрема нитка складається зі свого приватного стеку JVM, створеного одночасно з потоком. Кожен раз, коли метод ескалює, генерується новий кадр і руйнується після завершення виклику методу.

5. Реєстр лічильників програм (ПК)

Реєстр ПК містить адресу інструкції JVM під час її виконання. Слідкуючи за інструкціями, він має значення для кожної інструкції, яка не визначена для нативних методів.

6. Стек рідного методу

Народні процедури, що використовуються в додатках, є частиною стека Native Method. Ці методи написані іншими мовами, ніж Java. Пов’язані з кожним потоком, реалізації JVM не можуть покладатися на звичайні стеки та не можуть завантажувати нативні методи. Якщо бути точним, він схожий на стек, але використовується для нативних методів.

7. Двигун

Будучи ключовим аспектом JVM, він спілкується з різними сферами пам'яті. Це включає:

а. Сміттяр

Це відіграє важливу роль у динамічній системі управління пам'яттю JVM. Пам'ять, яка зайнята і на яку більше не посилається жоден з доступних об'єктів Java, вивільняється через смітник.

б. Перекладач

Він виконує інструкції після прочитання потоку байт-коду.

c. Компілятор Just-In-Time (JIT)

Увімкнувши підвищення продуктивності, компілятор JIT одночасно збирає частини байт-коду з подібною функціональністю. Це допомагає зменшити кількість часу, необхідного для процесу компіляції.

8. Нативний інтерфейс Java (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 memory - це основний компонент, який використовується для динамічного розподілу пам’яті для визначення класів та ініціалізації об’єктів, і оскільки JVM підтримує накопичувальну пам’ять, вона має широке визнання.

Забезпечення безпеки для віддаленого розташування коду: Рамка JVM розроблена таким чином, що віддалене додаток легко виконується. Ця теорія дотримується для виконання аплету Java.

Висновок

Той факт, що JVM працює в декількох операційних системах, дає йому великий палець в області технологій. Використовуючи його в Windows, Linux та інших ОС, увімкнено перетворювати байт-код незалежно від обладнання та ОС, що має виконуватися. Крім того, його здатність пропонувати безпеку хост-комп’ютеру, захищаючи їх дані та програму, є ще однією причиною того, чому JVM був таким успішним у минулому та продовжує залишатися домінуючим у майбутньому.

Рекомендовані статті

Це було керівництвом щодо того, що таке JVM (віртуальна машина Java). Тут ми обговорили основні поняття зі списком архітектури та використання JVM. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Найкращі рамки Javascript
  2. Орієнтований на об’єкт Python
  3. Застосування C ++ в реальному світі
  4. Кар'єра в ASP.NET
  5. JRE проти JVM | 8 найкращих відмінностей (Інфографіка)