Co powinieneś wiedzieć o wirtualnej maszynie Java?



Ten blog szczegółowo omawia koncepcję maszyny wirtualnej Java wraz z elementami jej architektury i kluczowymi różnicami między JVM, JRE i JDK

język jest gigantem w branży IT od bardzo dawna. Ma kilka doskonałych koncepcji, które sprawiają, że jest lepszy niż reszta języka programowania. Jedną z takich koncepcji jest wirtualna maszyna Java, w tym artykule dowiemy się o różnych aspektach szczegółowo maszyny wirtualnej. Poniżej znajdują się tematy omówione na tym blogu:

Co to jest wirtualna maszyna Java?

Maszyna wirtualna Java to abstrakcyjna maszyna niezależna od platformy, która zapewnia środowisko wykonawcze, w którym wykonywany jest kod bajtowy języka Java.





Jest częścią środowiska wykonawczego Java, które konwertuje kod bajtowy Java na język czytelny maszynowo. Główny który mamy w programie Java jest w rzeczywistości wywoływany przez wirtualną maszynę Java.

jvm - maszyna wirtualna java - edureka

Dlaczego potrzebujemy wirtualnej maszyny Java?

Potrzebujemy maszyny wirtualnej Javy do zadań, które wykonuje, a które są niezwykle potrzebne przy programowaniu z wykorzystaniem Javy. Poniżej znajduje się kilka zadań, które wykonuje wirtualna maszyna Java.



jakie są zdarzenia w javascript
  • Ładuje kod
  • Weryfikacja kodu
  • Wykonanie kodu
  • Zapewnia środowisko wykonawcze dla aplikacji
  • Obszar pamięci
  • Zarejestruj zestaw
  • Zapewnia stertę wyrzucania elementów bezużytecznych
  • Zgłaszanie błędów krytycznych
  • Zapewnia klasa format pliku

Przy tych wszystkich operacjach wirtualna maszyna Java jest integralną częścią programowania w języku Java. Spróbujmy zrozumieć, jak to działa, korzystając z architektury maszyny wirtualnej Java.

Architektura maszyny wirtualnej Java

Architektura maszyny wirtualnej Java jest dość prosta, obejmuje między innymi obszar pamięci, moduł ładujący klasy i silnik wykonywania. omówmy szczegółowo każdy z nich.

ClassLoader

Jest to podsystem używany do ładowania plików klas. Za każdym razem, gdy uruchamiamy program w Javie, jest on najpierw ładowany przez ClassLoader. główna funkcja obejmuje inicjalizację, łączenie i ładowanie. Poniżej przedstawiono programy ładujące klasy wbudowane w Javie.



    • Bootstrap ClassLoader - jest to super klasa rozszerzenia ClassLoader, która ładuje plik rt.jar.

    • Rozbudowa ClassLoader - ładuje pliki jar znajdujące się w katalogu.

    • System / aplikacja ClassLoader - ładuje pliki klas ze ścieżki klas.

    • Operacja ładowania - Najpierw classLoader ładuje pliki .class i generuje odpowiednie dane w formacie binarnym, który jest zapisywany w obszarze metody.

    • Operacja łączenia - Po załadowaniu przygotowuje, weryfikuje i rozwiązuje. JVM przydziela pamięć dla zmiennych klas i inicjuje pamięć do wartości domyślnych. Zapewnia poprawność pliku .class, a gdy weryfikacja się nie powiedzie, otrzymujemy błąd wyjątku runtime.

    • Inicjalizacja - Wszystkim zmiennym statycznym przypisywane są wartości zdefiniowane w bloku kodu w tej fazie.

Pamięć JVM

  • Obszar metody - Przechowuje struktury dla każdej klasy, takie jak kod, dane pól, pula stałych czasu wykonywania, dane metod itp.

  • Sterta - Obiekty są przydzielane w stercie w czasie wykonywania.

    zastosowania analityki dużych zbiorów danych
  • Stosy językowe JVM - Przechowuje lokalne zmienne i wyniki. Odgrywa ważną rolę w wywoływaniu i zwracaniu wyników. Za każdym razem, gdy wywoływana jest metoda, tworzona jest ramka, która jest niszczona po zakończeniu lub zakończeniu wywołania.

  • Rejestry PC - Zawiera adres lub lokalizację wykonywanej instrukcji JVMinstrukcja.

  • Natywne stosy metod - Wszystkie metody natywne używane w aplikacjach są obecne w stosach metod natywnych.

  • Silnik wykonywania - Silnik wykonawczy zawiera procesor wirtualny, interpreter i plik JIT kompilator.

  • Metoda rodzima Berło - To jest zapewniający.

Teraz, gdy zrozumieliśmy już architekturę maszyny JVM, przyjrzyjmy się procesowi wykonywania i kompilacji kodu.

Proces realizacji

Poniższe kroki mają miejsce podczas wykonywania i kompilacji kodu Java.

  • Główna metoda jest przechowywana w jednym pliku, a inne metody są przechowywane w różnych plikach.
  • Po kompilacji dostarczy odpowiednie pliki .class, które będą miały kod bajtowy bez żadnego łączenia, w przeciwieństwie do C.
  • Podczas wykonywania pliki klas są weryfikowane pod kątem wszelkich naruszeń za pomocą Classloadera.
  • Następnie kod bajtowy jest konwertowany na odpowiedni natywny kod maszynowy. Jest to również powód, dla którego Java jest stosunkowo wolniejsza.

Teraz, gdy wiemy, jak działa wykonanie, przyjrzyjmy się różnicy między JDK, JRE i JVM.

Różnica między JDK, JRE i JVM

Poniżej przedstawiono kilka ważnych różnic między JDK , JVM i JRE.

  1. JDK oznacza Java Development Kit, a JRE oznacza Java Runtime Environment.
  2. JDK jest przeznaczony do programowania, a JRE do środowiska wykonawczego.
  3. JVM jest istotną częścią JDK i JRE do uruchamiania dowolnego programu Java.
  4. JVM jest integralną częścią programowania w języku Java i zapewnia niezależność od platformy.

To prowadzi nas do końca tego artykułu, w którym szczegółowo poznaliśmy maszynę wirtualną Java. Mam nadzieję, że wszystko, co zostało Ci udostępnione w tym samouczku, jest dla Ciebie jasne.

Jeśli uważasz, że ten artykuł o „Wirtualnej maszynie języka Java” jest odpowiedni, sprawdź Edureka , zaufana firma zajmująca się edukacją online, posiadająca sieć ponad 250 000 zadowolonych uczniów rozsianych po całym świecie.

Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży i opracować program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Jeśli napotkasz jakieś pytania, nie krępuj się zadawać je w sekcji komentarzy „Wirtualna maszyna Java”, a nasz zespół z przyjemnością odpowie.