Τι είναι το JVM; Java Εικονική μηχανή Archiδομή

Σε τι είναι το JVM Java?

Java Εικονική μηχανή (JVM) είναι ένας κινητήρας που παρέχει περιβάλλον χρόνου εκτέλεσης για την οδήγηση του Java Κώδικας ή εφαρμογές. Μετατρέπει Java bytecode στη γλώσσα μηχανών. Το JVM είναι μέρος του Java Περιβάλλον χρόνου εκτέλεσης (JRE). Σε άλλες γλώσσες προγραμματισμού, ο μεταγλωττιστής παράγει κώδικα μηχανής για ένα συγκεκριμένο σύστημα. Ωστόσο, Java ο μεταγλωττιστής παράγει κώδικα για μια εικονική μηχανή που είναι γνωστή ως Java Εικονική μηχανή.

Πώς λειτουργεί το JVM;

Πρώτον, Java ο κώδικας μεταγλωττίζεται σε bytecode. Αυτός ο bytecode ερμηνεύεται σε διαφορετικά μηχανήματα. Μεταξύ του συστήματος υποδοχής και Java πηγή, το Bytecode είναι μια ενδιάμεση γλώσσα. JVM σε Java είναι υπεύθυνος για την κατανομή χώρου στη μνήμη.


Πώς λειτουργεί το JVM
Εργασία του Java Εικονική μηχανή (JVM)

Σε αυτό το σεμινάριο JVM, θα μάθετε-

Archiδομή του JVM (Java εικονική μηχανή)

Τώρα σε αυτό το σεμινάριο JVM, ας καταλάβουμε το Archiδομή της JVM. Αρχιτεκτονική JVM σε Java περιέχει classloader, περιοχή μνήμης, μηχανή εκτέλεσης κ.λπ.

 


FMV Archiδομή
Java Εικονική μηχανή Archiδομή

1) ClassLoader
Ο φορτωτής κλάσης είναι ένα υποσύστημα που χρησιμοποιείται για τη φόρτωση αρχείων κλάσης. Εκτελεί τρεις κύριες λειτουργίες, δηλαδή. Φόρτωση, Σύνδεση και Αρχικοποίηση.

2) Περιοχή μεθόδου
Το JVM Method Area αποθηκεύει δομές κλάσης όπως τα μεταδεδομένα, τη συγκέντρωση σταθερού χρόνου εκτέλεσης και τον κώδικα για μεθόδους.

3) Σωρός
Όλες οι Αντικείμενα, οι σχετικές μεταβλητές στιγμιότυπου και οι πίνακες αποθηκεύονται στο σωρό. Αυτή η μνήμη είναι κοινή και μοιράζεται σε πολλά νήματα.

4) Στοίβες γλωσσών JVM
Java Οι στοίβες γλώσσας αποθηκεύουν τοπικές μεταβλητές και είναι μερικά αποτελέσματα. Κάθε νήμα έχει τη δική του στοίβα JVM, που δημιουργείται ταυτόχρονα με τη δημιουργία του νήματος. Ένα νέο πλαίσιο δημιουργείται κάθε φορά που γίνεται επίκληση μιας μεθόδου και διαγράφεται όταν ολοκληρωθεί η διαδικασία επίκλησης μεθόδου.

5) Μητρώα Η/Υ
Μητρώο υπολογιστή αποθηκεύει τη διεύθυνση του Java εντολή εικονικής μηχανής που εκτελείται αυτήν τη στιγμή. Σε Java, κάθε νήμα έχει ξεχωριστό μητρώο υπολογιστή.

6) Στοίβες Native Method
Οι εγγενείς στοίβες μεθόδων κρατούν την εντολή του εγγενούς κώδικα εξαρτάται από την εγγενή βιβλιοθήκη. Είναι γραμμένο σε άλλη γλώσσα αντί για Java.

7) Μηχανή εκτέλεσης
Είναι ένας τύπος λογισμικού που χρησιμοποιείται για τη δοκιμή υλικού, λογισμικού ή ολοκληρωμένων συστημάτων. Ο κινητήρας εκτέλεσης δοκιμών δεν φέρει ποτέ καμία πληροφορία σχετικά με το ελεγμένο προϊόν.

8) Διεπαφή Native Method
Το Native Method Interface είναι ένα πλαίσιο προγραμματισμού. Επιτρέπει Java κώδικα που εκτελείται σε ένα JVM για κλήση από βιβλιοθήκες και εγγενείς εφαρμογές.

9) Βιβλιοθήκες Native Method
Οι Native Libraries είναι μια συλλογή των Native Libraries (C, C++) που χρειάζονται η Μηχανή Εκτέλεσης.

Διαδικασία Σύνταξης & Εκτέλεσης Κώδικα Λογισμικού

Για να γράψετε και να εκτελέσετε ένα πρόγραμμα λογισμικού, χρειάζεστε τα ακόλουθα

1) Συντάκτης – Για να πληκτρολογήσετε το πρόγραμμά σας, θα μπορούσε να χρησιμοποιηθεί ένα σημειωματάριο για αυτό

2) Μεταγλωττιστής – Για να μετατρέψετε το πρόγραμμα υψηλής γλώσσας σε εγγενή κώδικα μηχανής

3) Συνδετικός – Για να συνδυάσετε διαφορετικές αναφορές αρχείων προγράμματος στο κύριο πρόγραμμα μαζί.

4) Φορτωτής – Για να φορτώσετε τα αρχεία από τη δευτερεύουσα συσκευή αποθήκευσης, όπως σκληρό δίσκο, μονάδα flash, CD στη μνήμη RAM για εκτέλεση. Η φόρτωση γίνεται αυτόματα όταν εκτελείτε τον κώδικα σας.

5) Εκτέλεση – Πραγματική εκτέλεση του κώδικα που διαχειρίζεται το λειτουργικό σύστημα και ο επεξεργαστής σας.

Με αυτό το υπόβαθρο, ανατρέξτε στο παρακάτω βίντεο και μάθετε την εσωτερική λειτουργία και αρχιτεκτονική του JVM του JVM (Java εικονική μηχανή).

Πατήστε εδώ εάν το βίντεο δεν είναι προσβάσιμο

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Για να καταλάβετε το Java διαδικασία μεταγλώττισης σε Java. Ας ρίξουμε πρώτα μια γρήγορη ματιά στη διαδικασία μεταγλώττισης και σύνδεσης στο C.

Ας υποθέσουμε ότι στην κύρια, έχετε καλέσει δύο συναρτήσεις f1 και f2. Η κύρια συνάρτηση αποθηκεύεται στο αρχείο a1.c.

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Η συνάρτηση f1 αποθηκεύεται σε ένα αρχείο a2.c

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Η συνάρτηση f2 αποθηκεύεται σε ένα αρχείο a3.c

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Όλα αυτά τα αρχεία, π.χ., a1.c, a2.c και a3.c, τροφοδοτούνται στον μεταγλωττιστή. Η έξοδος του οποίου είναι τα αντίστοιχα αρχεία αντικειμένων που είναι ο κώδικας του μηχανήματος.

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Το επόμενο βήμα είναι η ενσωμάτωση όλων αυτών των αρχείων αντικειμένων σε ένα μόνο αρχείο .exe με τη βοήθεια του linker. Ο σύνδεσμος θα ομαδοποιήσει όλα αυτά τα αρχεία μαζί και θα παράγει το αρχείο .exe.

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Κατά τη διάρκεια της εκτέλεσης του προγράμματος, ένα πρόγραμμα φόρτωσης θα φορτώσει το a.exe στο RAM για την εκτέλεση.

Διαδικασία μεταγλώττισης και εκτέλεσης κώδικα C

Java Σύνταξη και εκτέλεση κώδικα σε Java VM

Τώρα σε αυτό το σεμινάριο JVM, ας δούμε τη διαδικασία για την JAVA. Στην κύρια, έχετε δύο μεθόδους f1 και f2.

  • Η κύρια μέθοδος αποθηκεύεται στο αρχείο a1.java
  • Το f1 αποθηκεύεται σε ένα αρχείο ως a2.java
  • Το f2 αποθηκεύεται σε ένα αρχείο ως a3.java

Java Σύνταξη και εκτέλεση κώδικα σε Java VM

Ο μεταγλωττιστής θα μεταγλωττίσει τα τρία αρχεία και θα παράγει 3 αντίστοιχα αρχεία .class που αποτελούνται από κώδικα BYTE. Σε αντίθεση με το C, δεν γίνεται σύνδεση.

The Java VM ή Java Η εικονική μηχανή βρίσκεται στη μνήμη RAM. Κατά την εκτέλεση, χρησιμοποιώντας τον φορτωτή κλάσης, τα αρχεία κλάσης μεταφέρονται στη μνήμη RAM. Ο κωδικός BYTE επαληθεύεται για τυχόν παραβιάσεις ασφαλείας.

Java Σύνταξη και εκτέλεση κώδικα σε Java VM

Στη συνέχεια, η μηχανή εκτέλεσης θα μετατρέψει τον Bytecode σε εγγενή κώδικα μηχανής. Αυτό είναι ακριβώς στην ώρα της μεταγλώττισης. Είναι ένας από τους κύριους λόγους Java είναι σχετικά αργός.

Java Σύνταξη και εκτέλεση κώδικα σε Java VM

ΣΗΜΕΊΩΣΗ: JIT ή Just-in-time compiler είναι το μέρος του Java Εικονική μηχανή (JVM). Ερμηνεύει μέρος του κώδικα Byte που έχει παρόμοια λειτουργικότητα ταυτόχρονα.

Γιατί είναι Java Τόσο ερμηνευμένη όσο και μεταγλωττισμένη γλώσσα;

Γλώσσες προγραμματισμού ταξινομούνται ως

  • Γλώσσα Ανωτέρου Επιπέδου Πχ. C++, Java
  • Γλώσσες Μεσαίου Επιπέδου Πχ. ντο
  • Γλώσσα Χαμηλού Επιπέδου Πχ Assembly
  • τελικά το χαμηλότερο επίπεδο ως Γλώσσα Μηχανής.

A μεταγλωττιστής είναι ένα πρόγραμμα που μετατρέπει ένα πρόγραμμα από ένα επίπεδο γλώσσας σε ένα άλλο. Παράδειγμα μετατροπής του C++ πρόγραμμα στον κώδικα μηχανής. Ο μεταγλωττιστής java μετατρέπει τον κώδικα java υψηλού επιπέδου σε bytecode (ο οποίος είναι επίσης ένας τύπος κώδικα μηχανής).

An διερμηνέας είναι ένα πρόγραμμα που μετατρέπει ένα πρόγραμμα σε ένα επίπεδο σε μια άλλη γλώσσα προγραμματισμού στο ίδιο επίπεδο. Παράδειγμα μετατροπής του Java πρόγραμμα σε C++

In Java, η γεννήτρια κώδικα Just In Time μετατρέπει τον bytecode στον εγγενή κώδικα μηχανής που βρίσκονται στα ίδια επίπεδα προγραμματισμού.

Ως εκ τούτου, Java είναι τόσο μεταγλωττισμένη όσο και διερμηνευμένη γλώσσα.

Γιατί είναι Java αργός?

Οι δύο κύριοι λόγοι πίσω από τη βραδύτητα του Java are

  1. Δυναμική σύνδεση: Σε αντίθεση με το C, η σύνδεση γίνεται κατά το χρόνο εκτέλεσης, κάθε φορά που εκτελείται το πρόγραμμα Java.
  2. Διερμηνέας χρόνου εκτέλεσης: Η μετατροπή του κώδικα byte σε εγγενή κώδικα μηχανής γίνεται κατά το χρόνο εκτέλεσης Java που επιβραδύνει περαιτέρω την ταχύτητα

Ωστόσο, η τελευταία έκδοση του Java έχει αντιμετωπίσει τα σημεία συμφόρησης επιδόσεων σε μεγάλο βαθμό.

Περίληψη:

  • Η πλήρης μορφή του JVM είναι Java Εικονική μηχανή. JVM σε Java είναι ο κινητήρας που κινεί το Java Κώδικας. Μετατρέπει Java bytecode στη γλώσσα μηχανών.
  • Αρχιτεκτονική JVM σε Java περιέχει classloader, περιοχή μνήμης, μηχανή εκτέλεσης κ.λπ.
  • Στο JVM, Java ο κώδικας μεταγλωττίζεται σε bytecode. Αυτός ο bytecode ερμηνεύεται σε διαφορετικά μηχανήματα
  • Το JIT σημαίνει μεταγλωττιστής Just-in-time. Το JIT είναι το μέρος του Java Εικονική μηχανή (JVM). Χρησιμοποιείται για την επιτάχυνση του χρόνου εκτέλεσης
  • Σε σύγκριση με άλλες μηχανές μεταγλώττισης, το JVM in Java μπορεί να είναι αργή στην εκτέλεση.