JVM - Kas ir Java virtuālā mašīna & tās arhitektūra

Satura rādītājs:

Anonim

Kas ir JVM?

Java virtuālā mašīna (JVM) ir dzinējs, kas nodrošina izpildlaika vidi Java koda vai lietojumprogrammu vadīšanai. Tas pārveido Java baitkodu mašīnu valodā. JVM ir Java Run Environment (JRE) sastāvdaļa. Citās programmēšanas valodās kompilators ražo mašīnkodu noteiktai sistēmai. Tomēr Java kompilators ražo kodu virtuālajai mašīnai, kas pazīstama kā Java virtuālā mašīna.

Lūk, kā darbojas JVM

Pirmkārt, Java kods tiek ievērots baitkodā. Šis baitkods tiek interpretēts dažādās mašīnās

Starp resursdatora sistēmu un Java avotu Bytecode ir starpniekvaloda.

JVM Java ir atbildīgs par atmiņas vietas piešķiršanu.

Java virtuālās mašīnas (JVM) darbība

Šajā JVM apmācībā jūs uzzināsiet

  • JVM arhitektūra
  • Programmatūras kodu sastādīšanas un izpildes process
  • C koda sastādīšanas un izpildes process
  • Java koda sastādīšanas un izpildes process
  • Kāpēc Java tiek interpretēta, gan apkopota valoda?
  • Kāpēc Java ir lēna?

JVM arhitektūra

Tagad šajā JVM apmācībā sapratīsim JVM arhitektūru. JVM arhitektūra Java satur classloader, atmiņas apgabalu, izpildes dzinēju utt.
Java virtuālās mašīnas arhitektūra

1) ClassLoader

Klases iekrāvējs ir apakšsistēma, ko izmanto klases failu ielādēšanai. Tas veic trīs galvenās funkcijas, t.i. Notiek ielāde, saistīšana un inicializēšana.

2) Metodes apgabals

JVM Method Area glabā klases struktūras, piemēram, metadatus, nemainīgu izpildlaika kopu un metožu kodu.

3) kaudze

Visi objekti, ar tiem saistītie mainīgie un masīvi tiek glabāti kaudzē. Šī atmiņa ir kopīga un koplietota vairākos pavedienos.

4) JVM valodas skursteņi

Java valodas kaudzēs tiek glabāti vietējie mainīgie, un tas ir daļējs rezultāts. Katram pavedienam ir savs JVM kaudze, kas izveidota vienlaikus ar pavediena izveidi. Ja metode tiek izsaukta, tiek izveidots jauns rāmis, un, kad metodes izsaukšanas process ir pabeigts, tas tiek izdzēsts.

5) PC reģistri

Datoru reģistrs saglabā Java virtuālās mašīnas instrukcijas, kas pašlaik tiek izpildīta, adresi. Java valodā katram pavedienam ir savs datoru reģistrs.

6) Vietējās metodes skursteņi

Vietējās metodes skursteņi satur norādījumus par vietējo kodu, kas atkarīgs no vietējās bibliotēkas. Tas ir rakstīts Java valodā citā valodā.

7) Izpildes dzinējs

Tas ir programmatūras veids, ko izmanto aparatūras, programmatūras vai visu sistēmu pārbaudei. Testa izpildes dzinējs nekad nesniedz nekādu informāciju par pārbaudīto produktu.

8) Vietējās metodes saskarne

Vietējās metodes saskarne ir programmēšanas sistēma. Tas ļauj Java kodam, kas darbojas JVM, izsaukt bibliotēkas un vietējās lietojumprogrammas.

9) Vietējo metožu bibliotēkas

Vietējās bibliotēkas ir vietējo bibliotēku (C, C ++) kolekcija, kas nepieciešama izpildes motoram.

Programmatūras kodu sastādīšanas un izpildes process

Lai rakstītu un izpildītu programmatūru, jums ir nepieciešams:

1) Redaktors - lai ierakstītu programmu, tam var izmantot piezīmju bloku

2) Kompilators - lai pārvērstu augstās valodas programmu vietējā mašīnkodā

3) Linker - lai apvienotu dažādas programmas failu atsauces jūsu galvenajā programmā kopā.

4) Ielādētājs - lai failus izpildei ielādētu RAM no sekundārās atmiņas ierīces, piemēram, cietā diska, zibatmiņas diska, kompaktdiska. Iekraušana tiek veikta automātiski, kad izpildāt kodu.

5) Izpilde - koda faktiskā izpilde, kuru apstrādā jūsu OS un procesors.

Ņemot to vērā, skatiet šo videoklipu un uzziniet JVM (Java Virtual Machine) JVM iekšējo darbību un arhitektūru.

Noklikšķiniet šeit, ja videoklips nav pieejams

C koda sastādīšanas un izpildes process

Lai saprastu Java sastādīšanas procesu Java. Vispirms apskatīsim procesa C apkopošanu un sasaisti.

Pieņemsim, ka jūs esat izsaucis divas funkcijas f1 un f2. Galvenā funkcija tiek saglabāta failā a1.c.

Funkcija f1 tiek saglabāta failā a2.c

Funkcija f2 tiek saglabāta failā a3.c

Visi šie faili, ti, a1.c, a2.c un a3.c, tiek padoti kompilatoram. Kura izeja ir atbilstošie objekta faili, kas ir mašīnas kods.

Nākamais solis ir visu šo objektu failu integrēšana vienā .exe failā ar linkera palīdzību. Saistītājs apvienos visus šos failus kopā un izveidos .exe failu.

Programmas palaišanas laikā iekrāvēja programma izpildei ielādēs RAM atmiņā.

Java koda sastādīšana un izpilde Java VM

Tagad šajā JVM apmācībā apskatīsim JAVA procesu. Galvenajā gadījumā jums ir divas metodes f1 un f2.

  • Galvenā metode tiek saglabāta failā a1.java
  • f1 failā tiek saglabāts kā a2.java
  • f2 failā tiek saglabāts kā a3.java

Kompilators apkopos trīs failus un izveidos 3 atbilstošus .class failus, kas sastāv no BYTE koda. Atšķirībā no C, saistīšana netiek veikta .

Java VM vai Java virtuālā mašīna atrodas RAM. Izpildes laikā, izmantojot klases iekrāvēju, klases faili tiek ievietoti RAM. BYTE kods ir pārbaudīts, vai tajā nav drošības pārkāpumu.

Pēc tam izpildes dzinējs pārveidos Bytecode par Native machine kodu. Tas ir tieši laikā apkopošana. Tas ir viens no galvenajiem iemesliem, kāpēc Java ir salīdzinoši lēna.

PIEZĪME: JIT jeb Just-in-time kompilators ir Java virtuālās mašīnas (JVM) sastāvdaļa. Tas interpretē Baitu koda daļu, kurai vienlaikus ir līdzīga funkcionalitāte.

Kāpēc Java ir gan interpretēta, gan kompilēta valoda?

Programmēšanas valodas tiek klasificētas kā
  • Augstākā līmeņa valodas piem. C ++, Java
  • Vidējā līmeņa valodas, piem. C
  • Zema līmeņa valodas Ex asambleja
  • visbeidzot zemākais līmenis kā mašīnvaloda.

Kompilators ir programma, kas pārvērš programmu no viena līmeņa valodas uz otru. C ++ programmas pārveidošanas par mašīnkodu piemērs.

Java kompilators pārveido augsta līmeņa Java kodu baitkodā (kas ir arī mašīnkodu veids).

Tulks ir programma, kas pārvērš programmu vienā līmenī ar citu programmēšanas valodu tajā pašā līmenī. Java programmas pārveidošanas piemērs C ++

Java programmā Just In Time Code ģenerators baitkodu pārveido par vietējo mašīnkodu, kas atrodas vienādos programmēšanas līmeņos.

Tādējādi Java ir gan apkopota, gan interpretēta valoda.

Kāpēc Java ir lēna?

Divi galvenie Java lēnuma cēloņi ir

  1. Dinamiskā saistīšana: atšķirībā no C, saistīšana tiek veikta izpildes laikā, katru reizi, kad programma tiek palaista Java.
  2. Darblaika tulks: baita koda pārveidošana par vietējo mašīnkodu tiek veikts Java izpildes laikā, kas vēl vairāk palēnina ātrumu

Tomēr jaunākā Java versija lielā mērā ir novērsusi veiktspējas vājās vietas.

Kopsavilkums :

  • Pilna JVM forma ir Java virtuālā mašīna. JVM Java ir dzinējs, kas virza Java kodu. Tas pārveido Java baitkodu mašīnu valodā.
  • JVM arhitektūra Java satur classloader, atmiņas apgabalu, izpildes dzinēju utt.
  • JVM Java kods tiek apkopots ar baitkodu. Šis baitkods tiek interpretēts dažādās mašīnās
  • JIT nozīmē Just-in-time kompilatoru. JIT ir Java virtuālās mašīnas (JVM) daļa. To izmanto, lai paātrinātu izpildes laiku
  • Salīdzinot ar citām kompilatoru mašīnām, Java JVM izpilde var būt lēna.