Що таке JVM? Java Віртуальна машина Archiтектура
Що таке JVM Java?
Java Віртуальна машина (JVM) це двигун, який забезпечує середовище виконання для керування Java Код або програми. Це перетворює Java байт-код на машинну мову. JVM є частиною Java Середовище виконання (JRE). В інших мовах програмування компілятор створює машинний код для конкретної системи. однак, Java компілятор створює код для віртуальної машини, відомої як Java Віртуальна машина.
Як працює JVM?
По-перше, Java код компілюється в байт-код. Цей байт-код інтерпретується на різних машинах. Між хост-системою та Java Джерело, байт-код є мовою-посередником. JVM в Java відповідає за розподіл пам'яті.

У цьому навчальному посібнику з JVM ви дізнаєтеся,
Archiтектура JVM (Java віртуальна машина)
Тепер у цьому посібнику з JVM давайте розберемося Archiтектура JVM. Архітектура JVM в Java містить завантажувач класів, область пам'яті, механізм виконання тощо.
1) Завантажувач класів
Завантажувач класів — це підсистема, яка використовується для завантаження файлів класів. Він виконує три основні функції, а саме. Завантаження, зв'язування та ініціалізація.
2) Область методу
Область методів JVM зберігає структури класів, такі як метадані, постійний пул часу виконання та код для методів.
3) Купа
Всі Об'єкти, пов’язані з ними змінні екземпляра та масиви зберігаються у купі. Ця пам'ять є загальною та спільною для кількох потоків.
4) Стеки мови JVM
Java Стеки мови зберігають локальні змінні та часткові результати. Кожен потік має власний стек JVM, створений одночасно зі створенням потоку. Новий фрейм створюється щоразу, коли викликається метод, і видаляється, коли процес виклику методу завершується.
5) Регістри ПК
ПК реєстру зберігати адресу Java інструкція віртуальної машини, яка зараз виконується. в Java, кожен потік має окремий регістр ПК.
6) Стеки рідних методів
Стеки рідних методів містять інструкції рідного коду, що залежить від рідної бібліотеки. Замість нього написано іншою мовою Java.
7) Механізм виконання
Це тип програмного забезпечення, який використовується для тестування апаратного забезпечення, програмного забезпечення або повних систем. Механізм виконання тестів ніколи не передає жодної інформації про тестований продукт.
8) Інтерфейс рідного методу
Інтерфейс рідного методу — це структура програмування. Це дозволяє Java код, який працює в JVM для виклику бібліотек і власних програм.
9) Бібліотеки рідних методів
Native Libraries – це колекція Native Libraries(C, C++), які потрібні механізму виконання.
Процес компіляції та виконання програмного коду
Щоб написати та виконати програмне забезпечення, вам потрібно наступне
1) Редактор – Для введення вашої програми можна використовувати блокнот
2) компілятор – Для перетворення вашої високомовної програми на рідний машинний код
3) Лінкер – Щоб об’єднати посилання на різні програмні файли у вашій основній програмі.
4) Навантажувач – Для завантаження файлів із вторинного пристрою зберігання, як-от жорсткого диска, флеш-накопичувача, компакт-диска, в оперативну пам’ять для виконання. Завантаження виконується автоматично, коли ви виконуєте свій код.
5) Виконання – Фактичне виконання коду, який обробляється вашою ОС і процесором.
Маючи цю інформацію, перегляньте наступне відео та дізнайтеся про внутрішню роботу JVM та архітектуру JVM (Java Virtual Machine).
Натисніть тут якщо відео недоступне
Процес компіляції та виконання коду C
Щоб зрозуміти Java процес компіляції в Java. Давайте спочатку швидко розглянемо процес компіляції та зв’язування в C.
Припустимо, що в основному ви викликали дві функції f1 і f2. Основна функція зберігається у файлі a1.c.
Функція f1 зберігається у файлі a2.c
Функція f2 зберігається у файлі a3.c
Усі ці файли, тобто a1.c, a2.c і a3.c, передаються компілятору. Вихідними даними є відповідні об’єктні файли, які є машинним кодом.
Наступним кроком буде об’єднання всіх цих об’єктних файлів в єдиний файл .exe за допомогою компонувальника. Компонувальник об’єднує всі ці файли разом і створює файл .exe.
Під час виконання програми програма-завантажувач завантажить файл a.exe у файл Оперативна пам'ять для виконання.
Java Компіляція та виконання коду в Java VM
Тепер у цьому підручнику з JVM давайте розглянемо процес для JAVA. У вашому основному у вас є два методи f1 і f2.
- Основний метод зберігається у файлі a1.java
- f1 зберігається у файлі як a2.java
- f2 зберігається у файлі як a3.java
Компілятор скомпілює три файли та створить 3 відповідні файли .class, які складаються з коду BYTE. На відміну від C, зв'язування не виконується.
Команда Java ВМ або Java Віртуальна машина знаходиться в оперативній пам'яті. Під час виконання за допомогою завантажувача класів файли класів завантажуються в оперативну пам’ять. Код BYTE перевіряється на наявність будь-яких порушень безпеки.
Далі механізм виконання перетворить байт-код у рідний машинний код. Це якраз на часі компіляції. Це одна з головних причин Java є порівняно повільним.
ПРИМІТКА: JIT- або своєчасний компілятор є частиною Java Віртуальна машина (JVM). Він інтерпретує частину байт-коду, яка одночасно має подібні функції.
Чому Java як інтерпретована, так і компільована мова?
Мови програмування класифікуються як
- Мова вищого рівня Пр. C++, Java
- Мови середнього рівня Пр. C
- Мова низького рівня Пр Assembly
- нарешті найнижчий рівень як машинна мова.
A компілятор це програма, яка перетворює програму з одного рівня мови на інший. Приклад перетворення C++ програмувати в машинний код. Компілятор Java перетворює код Java високого рівня в байт-код (який також є типом машинного коду).
An Перекладач це програма, яка перетворює програму на одному рівні на іншу мову програмування на той самий рівень. Приклад перетворення Java програма в C++
In Java, генератор Just In Time Code перетворює байт-код у рідний машинний код, який знаходиться на тих самих рівнях програмування.
Отже, Java є як компільованою, так і інтерпретованою мовою.
Чому Java повільно?
Дві основні причини повільності Java він має
- Динамічне зв'язування: На відміну від C, зв’язування здійснюється під час виконання, кожного разу, коли запускається програма Java.
- Інтерпретатор часу виконання: Перетворення байт-коду в власний машинний код виконується під час виконання в Java що ще більше сповільнює швидкість
Однак остання версія Java значною мірою усунув вузькі місця продуктивності.
Підсумки:
- Повна форма JVM є Java Віртуальна машина. JVM в Java це двигун, який приводить в рух Java Код. Це перетворює Java байт-код на машинну мову.
- Архітектура JVM в Java містить завантажувач класів, область пам'яті, механізм виконання тощо.
- У JVM, Java код компілюється в байт-код. Цей байт-код інтерпретується на різних машинах
- JIT розшифровується як своєчасний компілятор. JIT є частиною Java Віртуальна машина (JVM). Використовується для прискорення часу виконання
- У порівнянні з іншими компіляторами, JVM в Java може бути повільним у виконанні.