JVM - Co je Java Virtual Machine & jeho architektura

Obsah:

Anonim

Co je JVM?

Java Virtual Machine (JVM) je stroj, který poskytuje běhové prostředí pro řízení Java kódu nebo aplikací. Převádí bajtový kód Java do jazyka strojů. JVM je součástí prostředí Java Run Environment (JRE). V jiných programovacích jazycích kompilátor vytváří strojový kód pro konkrétní systém. Kompilátor Java však vytváří kód pro virtuální stroj známý jako Java Virtual Machine.

Takto funguje JVM

Nejprve je kód Java splněn do bajtového kódu. Tento bytecode je interpretován na různých strojích

Mezi hostitelským systémem a zdrojem Java je Bytecode prostředním jazykem.

Za přidělení paměťového prostoru odpovídá JVM v Javě.

Práce s Java Virtual Machine (JVM)

V tomto výukovém programu JVM se naučíte-

  • Architektura JVM
  • Proces kompilace a provedení softwarového kódu
  • Proces kompilace a provedení kódu C.
  • Proces kompilace a spuštění kódu Java
  • Proč je Java interpretován i kompilován?
  • Proč je Java pomalá?

Architektura JVM

Nyní v tomto výukovém programu JVM pojďme pochopit architekturu JVM. Architektura JVM v Javě obsahuje třídič, paměťovou oblast, spouštěcí modul atd.
Architektura Java Virtual Machine

1) ClassLoader

Zavaděč tříd je subsystém používaný k načítání souborů tříd. Vykonává tři hlavní funkce, viz. Načítání, propojení a inicializace.

2) Oblast metody

Oblast metod JVM ukládá struktury tříd, jako jsou metadata, fond stálých běhových prostředí a kód pro metody.

3) Haldy

Všechny objekty, jejich související proměnné instance a pole jsou uloženy v haldě. Tato paměť je společná a sdílená napříč více vlákny.

4) Stohy jazyka JVM

Zásobníky jazyka Java ukládají místní proměnné a jsou to částečné výsledky. Každé vlákno má svůj vlastní zásobník JVM vytvořený současně s vytvořením vlákna. Při každém vyvolání metody se vytvoří nový rámec a po dokončení procesu vyvolání metody se odstraní.

5) PC registry

Registr PC ukládá adresu aktuálně prováděné instrukce virtuálního stroje Java. V Javě má ​​každé vlákno svůj samostatný registr PC.

6) Nativní metoda komíny

Zásobníky nativní metody obsahují instrukce nativního kódu závisí na nativní knihovně. Je napsán v jiném jazyce než v jazyce Java.

7) Execution Engine

Jedná se o typ softwaru používaného k testování hardwaru, softwaru nebo kompletních systémů. Stroj pro provádění testu nikdy nenese žádné informace o testovaném produktu.

8) Rozhraní nativní metody

Rozhraní nativní metody je programovací rámec. Umožňuje kódu Java, který běží v JVM, volat z knihoven a nativních aplikací.

9) Knihovny nativních metod

Native Libraries je kolekce Native Libraries (C, C ++), které jsou potřebné pro Execution Engine.

Proces kompilace a provedení softwarového kódu

Abyste mohli psát a spouštět softwarový program, potřebujete následující

1) Editor - Chcete-li zadat svůj program, můžete k tomu použít poznámkový blok

2) Compiler - To convert your high language program into native machine code

3) Linker - To combine different program files reference in your main program together.

4) Loader - To load the files from your secondary storage device like Hard Disk, Flash Drive, CD into RAM for execution. The loading is automatically done when you execute your code.

5) Execution - Actual execution of the code which is handled by your OS & processor.

With this background, refer the following video & learn the JVM internal working and architecture of JVM (Java Virtual Machine).

Click here if the video is not accessible

C code Compilation and Execution process

To understand the Java compiling process in Java. Let's first take a quick look to compiling and linking process in C.

Suppose in the main, you have called two function f1 and f2. The main function is stored in file a1.c.

Function f1 is stored in a file a2.c

Function f2 is stored in a file a3.c

All these files, i.e., a1.c, a2.c, and a3.c, is fed to the compiler. Whose output is the corresponding object files which are the machine code.

The next step is integrating all these object files into a single .exe file with the help of linker. The linker will club all these files together and produces the .exe file.

During program run, a loader program will load a.exe into the RAM for the execution.

Java code Compilation and Execution in Java VM

Now in this JVM tutorial, let's look at the process for JAVA. In your main, you have two methods f1 and f2.

  • The main method is stored in file a1.java
  • f1 is stored in a file as a2.java
  • f2 is stored in a file as a3.java

Kompilátor zkompiluje tři soubory a vytvoří 3 odpovídající soubory .class, které se skládají z kódu BYTE. Na rozdíl od C se neprovádí žádné propojení .

Virtuální počítač Java nebo Java Virtual Machine je umístěn v paměti RAM. Během provádění se pomocí zavaděče tříd přivedou soubory třídy na RAM. Kód BYTE je ověřen na případné narušení bezpečnosti.

Dále prováděcí modul převede Bytecode na nativní strojový kód. Toto je právě včasné kompilace. Je to jeden z hlavních důvodů, proč je Java poměrně pomalá.

POZNÁMKA: JIT nebo kompilátor Just-in-time je součástí Java Virtual Machine (JVM). Interpretuje část Byte Code, která má současně podobné funkce.

Proč je Java interpretován i kompilován jazyk?

Programovací jazyky jsou klasifikovány jako
  • Jazyk vyšší úrovně Ex. C ++, Java
  • Middle-Level Languages Ex. C
  • Low-Level Language Ex Assembly
  • finally the lowest level as the Machine Language.

A compiler is a program which converts a program from one level of language to another. Example conversion of C++ program into machine code.

The java compiler converts high-level java code into bytecode (which is also a type of machine code).

An interpreter is a program which converts a program at one level to another programming language at the same level. Example conversion of Java program into C++

In Java, the Just In Time Code generator converts the bytecode into the native machine code which are at the same programming levels.

Hence, Java is both compiled as well as interpreted language.

Why is Java slow?

The two main reasons behind the slowness of Java are

  1. Dynamic Linking: Unlike C, linking is done at run-time, every time the program is run in Java.
  2. Run-time Interpreter: The conversion of byte code into native machine code is done at run-time in Java which furthers slows down the speed

However, the latest version of Java has addressed the performance bottlenecks to a great extent.

Summary:

  • Full form of JVM is Java Virtual Machine. JVM in Java is the engine that drives the Java Code. It converts Java bytecode into machines language.
  • JVM architecture in Java contains classloader, memory area, execution engine etc.
  • In JVM, Java code is compiled to bytecode. This bytecode gets interpreted on different machines
  • JIT stands for Just-in-time compiler. JIT is the part of the Java Virtual Machine (JVM). It is used to speed up the execution time
  • Ve srovnání s jinými kompilačními stroji může být JVM v Javě pomalý při provádění.