Η γλώσσα υπήρξε γίγαντας στη βιομηχανία πληροφορικής για πολύ καιρό. Έχει κάποιες κορυφαίες έννοιες που το καθιστούν καλύτερο από την υπόλοιπη γλώσσα προγραμματισμού. Μια τέτοια ιδέα είναι η εικονική μηχανή Java, σε αυτό το άρθρο, θα μάθουμε για τις διάφορες πτυχές του λεπτομερή εικονική μηχανή. Ακολουθούν τα θέματα που συζητούνται σε αυτό το ιστολόγιο:
- Τι είναι η εικονική μηχανή Java;
- Γιατί χρειαζόμαστε την εικονική μηχανή Java;
- Αρχιτεκτονική εικονικής μηχανής Java
- Διαδικασία εκτέλεσης
- Διαφορά μεταξύ JDK, JRE και JVM
Τι είναι η εικονική μηχανή Java;
Η εικονική μηχανή Java είναι μια αφηρημένη μηχανή ανεξάρτητη από πλατφόρμα που παρέχει ένα περιβάλλον χρόνου εκτέλεσης στο οποίο εκτελείται ο κώδικας byte Java.
Είναι ένα μέρος του περιβάλλοντος εκτέλεσης Java που μετατρέπει το bytecode Java σε γλώσσα αναγνώσιμη από μηχανή. Το κύριο που έχουμε σε ένα πρόγραμμα Java καλείται στην πραγματικότητα από την εικονική μηχανή Java.
Γιατί χρειαζόμαστε την εικονική μηχανή Java;
Χρειαζόμαστε την εικονική μηχανή Java για τις εργασίες που εκτελεί και είναι εξαιρετικά απαραίτητες για οποιαδήποτε ανάπτυξη που περιλαμβάνει την Java. Ακολουθούν μερικές εργασίες που εκτελεί η εικονική μηχανή Java.
- Φορτώνει τον κωδικό
- Επαλήθευση κωδικού
- Εκτέλεση του κωδικού
- Παρέχει το περιβάλλον χρόνου εκτέλεσης για τις εφαρμογές
- Περιοχή μνήμης
- Σύνολο μητρώου
- Παρέχει έναν σωρό συλλογής απορριμμάτων
- Αναφορά των θανατηφόρων σφαλμάτων
- Παρέχει α τάξη μορφή αρχείου
Με όλες αυτές τις λειτουργίες, η εικονική μηχανή Java αποτελεί αναπόσπαστο μέρος της ανάπτυξης Java. Ας προσπαθήσουμε να καταλάβουμε πώς λειτουργεί με τη βοήθεια της αρχιτεκτονικής εικονικής μηχανής Java.
Αρχιτεκτονική εικονικής μηχανής Java
Η αρχιτεκτονική της εικονικής μηχανής Java είναι αρκετά απλή, διαθέτει χώρο μνήμης, φορτωτή κλάσης και μηχανή εκτέλεσης μεταξύ άλλων στοιχείων. ας συζητήσουμε καθένα από αυτά λεπτομερώς.
ClassLoader
Είναι ένα υποσύστημα που χρησιμοποιείται για τη φόρτωση αρχείων κατηγορίας. Κάθε φορά που εκτελούμε ένα πρόγραμμα σε Java, φορτώνεται πρώτα από το ClassLoader. η κύρια συνάρτηση περιλαμβάνει την προετοιμασία, τη σύνδεση και τη φόρτωση. Ακολουθούν οι ενσωματωμένοι φορτωτές τάξης στην Java.
Μπότα ClassLoader - Είναι η σούπερ κλάση του Extension ClassLoader που φορτώνει το αρχείο rt.jar.
Επέκταση ClassLoader - Φορτώνει τα αρχεία βάζων που βρίσκονται στον κατάλογο.
Σύστημα / εφαρμογή ClassLoader - Φορτώνει τα αρχεία classfath από το classpath.
Φόρτωση λειτουργίας - Αρχικά το classLoader φορτώνει τα αρχεία .class και δημιουργεί τα αντίστοιχα δεδομένα σε δυαδική μορφή που αποθηκεύονται στην περιοχή μεθόδου.
Λειτουργία σύνδεσης - Μετά τη φόρτωση προετοιμάζει, επαληθεύει και κάνει ανάλυση. Η JVM εκχωρεί τη μνήμη για μεταβλητές κλάσης και αρχικοποιεί τη μνήμη σε προεπιλεγμένες τιμές. Διασφαλίζει την ορθότητα του αρχείου .class και όταν αποτύχει η επαλήθευση, λαμβάνουμε το σφάλμα εξαίρεσης χρόνου εκτέλεσης.
Αρχικοποίηση - Όλες οι στατικές μεταβλητές αντιστοιχίζονται με τις τιμές τους που ορίζονται στο μπλοκ κώδικα σε αυτήν τη φάση.
Μνήμη JVM
Περιοχή μεθόδου - Αποθηκεύει τις δομές για κάθε τάξη, όπως ο κωδικός, τα δεδομένα πεδίου, η συνεχής συγκέντρωση χρόνου εκτέλεσης, τα δεδομένα μεθόδου κ.λπ.
πώς να εφαρμόσετε αφηρημένη μέθοδο στο java
Σωρός - Τα αντικείμενα κατανέμονται κατά το χρόνο εκτέλεσης στο σωρό.
Στοίβες γλώσσας JVM - Αποθηκεύει τοπικές μεταβλητές και αποτελέσματα. Παίζει σημαντικό ρόλο στην επίκληση και επιστροφή αποτελεσμάτων. Κάθε φορά που γίνεται επίκληση μιας μεθόδου δημιουργείται ένα πλαίσιο και καταστρέφεται μόλις ολοκληρωθεί ή ολοκληρωθεί η επίκληση.
Μητρώα Η / Υ - Έχει τη διεύθυνση ή τη θέση του JVMinstruction που εκτελείται.
Στοίβες εγγενών μεθόδων - Όλες οι εγγενείς μέθοδοι που χρησιμοποιούνται στις εφαρμογές υπάρχουν στις στοίβες εγγενών μεθόδων.
Μηχανή εκτέλεσης - Μια μηχανή εκτέλεσης περιέχει έναν εικονικό επεξεργαστή, έναν διερμηνέα και ένα ΚΙΤ μεταγλωττιστής.
Εγγενής μέθοδος Διεπαφή - Είναι ένα που παρέχει.
Τώρα που έχουμε κατανοήσει την αρχιτεκτονική του JVM, ας ρίξουμε μια ματιά στη διαδικασία εκτέλεσης και τη συλλογή κώδικα.
Διαδικασία εκτέλεσης
Τα ακόλουθα βήματα πραγματοποιούνται κατά την εκτέλεση και τη σύνταξη ενός κώδικα Java.
- Η κύρια μέθοδος αποθηκεύεται σε ένα μόνο αρχείο και άλλες μέθοδοι αποθηκεύονται σε διαφορετικά αρχεία.
- Μετά τη συλλογή, θα παρέχει αντίστοιχα αρχεία .class που θα έχουν τον κώδικα byte χωρίς σύνδεση, σε αντίθεση με το C.
- Κατά τη διάρκεια της εκτέλεσης, τα αρχεία κλάσης επαληθεύονται για τυχόν παραβιάσεις χρησιμοποιώντας το Classloader.
- Μετά από αυτό, ο bytecode μετατρέπεται στον αντίστοιχο εγγενή κωδικό μηχανής. Αυτός είναι επίσης ο λόγος για τον οποίο η Java είναι συγκριτικά πιο αργή.
Τώρα που γνωρίζουμε, πώς λειτουργεί η εκτέλεση, ας ρίξουμε μια ματιά στη διαφορά μεταξύ JDK, JRE και JVM.
Διαφορά μεταξύ JDK, JRE και JVM
Ακολουθούν μερικές σημαντικές διαφορές μεταξύ JDK , JVM και JRE.
- Το JDK σημαίνει Java development kit και το JRE σημαίνει Java runtime environment.
- Το JDK προορίζεται για ανάπτυξη ενώ το JRE προορίζεται για περιβάλλον χρόνου εκτέλεσης.
- Το JVM είναι ένα ουσιαστικό μέρος των JDK και JRE για την εκτέλεση οποιουδήποτε προγράμματος Java.
- Το JVM είναι αναπόσπαστο μέρος του προγραμματισμού Java και παρέχει ανεξαρτησία πλατφόρμας.
Αυτό μας φέρνει στο τέλος αυτού του άρθρου όπου έχουμε μάθει λεπτομερώς για την εικονική μηχανή Java. Ελπίζω να είστε ξεκάθαροι με όλα όσα έχουν μοιραστεί μαζί σας σε αυτό το σεμινάριο.
Αν βρήκατε αυτό το άρθρο σχετικά με την 'Java Virtual Machine' σχετικό, ρίξτε μια ματιά στο Edureka , μια αξιόπιστη διαδικτυακή εταιρεία μάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων εκπαιδευόμενων σε όλο τον κόσμο.
Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα στο ταξίδι σας και να βρείτε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.
Εάν συναντήσετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να κάνετε όλες τις ερωτήσεις σας στην ενότητα σχολίων του 'Java Virtual Machine' και η ομάδα μας θα χαρεί να απαντήσει.