Εικονική μηχανή Java. Δεν ήταν δυνατή η δημιουργία της εικονικής μηχανής Java τι πρέπει να γίνει

Λάθος " Δεν μπορούσεδημιουργήστε την Java Εικονική μηχανή» βρίσκεται σε όλες τις εκδόσεις του χειρουργείου συστήματα Windows. Εμφανίζεται τόσο κατά την εκκίνηση παιχνιδιών που απαιτούν εικονική μηχανή Java στη συσκευή όσο και κατά την εγκατάσταση της ίδιας της εικονικής μηχανής στον υπολογιστή. Το κείμενο σφάλματος Java Virtual Machine Launcher μας λέει τα εξής: Το σύστημα δεν μπόρεσε να δημιουργήσει την Java Virtual Machine. Σε αυτό το άρθρο, θα εξετάσουμε τους λόγους για τους οποίους εμφανίζεται αυτό το πρόβλημα και, φυσικά, θα εξαλείψουμε το ίδιο το σφάλμα.

Παράθυρο σφάλματος "Δεν ήταν δυνατή η δημιουργία της εικονικής μηχανής Java"

Τις περισσότερες φορές, οι παίκτες του Minecraft παραπονιούνται για αυτό το σφάλμα. Όταν κάνουν κλικ στο πρόγραμμα εκκίνησης και εκκινούν ξανά το αγαπημένο τους παιχνίδι, οι χρήστες αντιμετωπίζουν το παράθυρο σφάλματος Δεν ήταν δυνατή η δημιουργία της εικονικής μηχανής Java. Αυτό συμβαίνει επειδή η περίοδος λειτουργίας του παιχνιδιού τερματίστηκε λανθασμένα την προηγούμενη φορά. Ίσως δεν περιμένατε μέχρι να ολοκληρωθεί τελείως το παιχνίδι και να απενεργοποιήσετε τη συσκευή.

Σφάλματα JVM κατά την εκκίνηση παιχνιδιών και εφαρμογών μπορεί επίσης να προκύψουν λόγω ανεπαρκούς μνήμης RAM στη συσκευή σας. Η εικονική μηχανή Java απαιτεί μια συγκεκριμένη ποσότητα μνήμης που εκχωρείται από τον υπολογιστή για να λειτουργήσει. Αυτός είναι ένας πολύτιμος πόρος για έναν υπολογιστή, όσο περισσότερη μνήμη υπάρχει, τόσο πιο γρήγορα και καλύτερος επεξεργαστήςαντιμετωπίζει τα καθήκοντα που του έχουν ανατεθεί.

Αντιμετώπιση προβλημάτων Java Virtual Machine Launcher

Ας δούμε τον πιο συνηθισμένο τρόπο επίλυσης του σφάλματος "Δεν ήταν δυνατή η δημιουργία της εικονικής μηχανής Java" - η δημιουργία μιας νέας μεταβλητής περιβάλλοντος.


Μέθοδος 2. Ελευθερώστε τη μνήμη RAM του υπολογιστή

Η επόμενη μέθοδος για την επίλυση του σφάλματος είναι να ελευθερώσετε τη μνήμη RAM του υπολογιστή σας. Όπως αναφέρθηκε ήδη, το σφάλμα μπορεί να προκύψει λόγω ανεπαρκούς μνήμης. Για να το ελευθερώσετε, πρέπει να κλείσετε όλα τα περιττά προγράμματα και επίσης να "σκοτώσετε" όλες τις περιττές διαδικασίες. Εξάλλου, κάθε πρόγραμμα χρειάζεται ένα συγκεκριμένο ποσό αυτού του πόρου. Στον επίσημο ιστότοπο της Microsoft μπορείτε να εξοικειωθείτε με όλες τις σημαντικές διαδικασίες των Windows, ο τερματισμός των οποίων θα οδηγήσει σε σφάλματα συστήματος. Για να σταματήσετε τις περιττές διαδικασίες:


Για να κλείσετε ένα πρόγραμμα ή να σταματήσετε μια διαδικασία, πρέπει να επιλέξετε το όνομα του προγράμματος ή της διαδικασίας με το ποντίκι και, στη συνέχεια, κάντε κλικ στο κουμπί στο κάτω μέρος του παραθύρου «Τερματισμός εργασίας».

Ορισμένα προγράμματα παρασκηνίου που εκτελούνται δεν εμφανίζονται στη λίστα, αλλά μπορούν να τα δει κανείς στη λίστα των διεργασιών. Πρόκειται για διάφορες ενότητες ενημέρωσης, λειτουργούν στο παρασκήνιο και παρακολουθούν την κυκλοφορία νέων εκδόσεων ορισμένων προγραμμάτων. Επίσης καταναλώνουν RAM. Το καθήκον σας θα είναι να βρείτε τέτοιες διαδικασίες και να τις σταματήσετε για να τις λύσετε τρέχον πρόβλημα. Αφού εκκαθαρίσετε τη μνήμη και σταματήσετε όλα τα περιττά προγράμματα και διαδικασίες, δοκιμάστε να ξεκινήσετε ξανά το παιχνίδι για να βεβαιωθείτε ότι δεν εμφανίζεται πλέον το παράθυρο σφάλματος "Δεν ήταν δυνατή η δημιουργία της εικονικής μηχανής Java".

Πρόσθετες μέθοδοι επίλυσης σφαλμάτων

Εάν το λογισμικό που προκαλεί σφάλμα κατά την εκκίνηση έγινε λήψη από πόρους τρίτων, ιστότοπους warez ή ιχνηλάτες torrent, τότε οι ενέργειές του συχνά αποκλείονται από λογισμικό προστασίας από ιούς. Για να αποφύγετε ένα τέτοιο εμπόδιο κατά την εκκίνηση, πρέπει να ελέγξετε τη λίστα καραντίνας antivirus και, εάν υπάρχουν παιχνίδια ή προγράμματα σε αυτήν, μπορείτε να τα αφαιρέσετε από αυτήν τη λίστα. Αλλά να είστε προσεκτικοί όταν το κάνετε αυτό. Εξάλλου, τέτοιο λογισμικό μπορεί πραγματικά να αποτελέσει απειλή για το σύστημα. Εάν είστε απόλυτα σίγουροι για ένα πρόγραμμα ή ένα παιχνίδι, μπορείτε να το προσθέσετε στη λίστα εξαιρέσεων. Σε αυτήν την περίπτωση, το πρόγραμμα προστασίας από ιούς δεν θα "υποψιάζεται" πλέον τέτοιο λογισμικό.

Εάν δεν έχετε εγκατεστημένο λογισμικό Java, μπορείτε να το κατεβάσετε από τη διεύθυνση https://www.java.com/ru/download/win8.jsp. Μόλις μεταβείτε στη σελίδα, κάντε κλικ στο κουμπί "Συμφωνώ και έναρξη δωρεάν λήψης".


Κατεβάστε το πακέτο λογισμικού Java

Μετά από αυτό, θα γίνει λήψη ενός πακέτου δεδομένων, το οποίο θα πρέπει να εγκαταστήσετε στον υπολογιστή σας.

JVM (Java Virtual Machine) - η βάση της γλώσσας Προγραμματισμός Java. Το περιβάλλον Java αποτελείται από πέντε στοιχεία:
■ Γλώσσα Java
■Ορισμός Bytecode
■ Βιβλιοθήκες κλάσεων Java/Sun
■ Java Virtual Machine
■ Δομή του αρχείου .class

Από όλα αυτά τα πέντε στοιχεία, τα στοιχεία που οδήγησαν στην επιτυχία της Java
■ Ορισμός bytecode,
■ file structure.class,
■ και Java Virtual Machine.

Έτσι, το "γράψτε μια φορά και εκτελέστε οπουδήποτε" κατέστη πραγματικά δυνατό χάρη στη φορητότητα του αρχείου .class, το οποίο διευκολύνει την εκτέλεση σε οποιονδήποτε υπολογιστή ή chipset χρησιμοποιώντας την εικονική μηχανή Java.

1.3.1 Τι είναι η εικονική μηχανή Java;

Μια εικονική μηχανή είναι λογισμικό που βασίζεται στις έννοιες και την ιδέα ενός φανταστικού υπολογιστή που έχει ένα λογικό σύνολο οδηγιών και εντολών που καθορίζουν τις λειτουργίες αυτού του υπολογιστή. Είναι, θα έλεγε κανείς, ένα μικρό λειτουργικό σύστημα. Αποτελεί το απαραίτητο επίπεδο αφαίρεσης, όπου επιτυγχάνεται ανεξαρτησία από την πλατφόρμα και τον εξοπλισμό που χρησιμοποιείται.

Ο μεταγλωττιστής μετατρέπει το κείμενο πηγής σε κώδικα που βασίζεται στο φανταστικό σύνολο εντολών του υπολογιστή και είναι ανεξάρτητο από τον συγκεκριμένο επεξεργαστή. Ένας διερμηνέας είναι μια εφαρμογή που κατανοεί αυτές τις ροές εντολών και μεταφράζει αυτές τις εντολές για το υλικό που χρησιμοποιείται, στο οποίο ανήκει ο διερμηνέας. Το JVM δημιουργεί ένα σύστημα χρόνου εκτέλεσης εσωτερικά που βοηθά στην εκτέλεση του κώδικα όταν
■ φόρτωση αρχείων .class,
■ διαχείριση μνήμης
■ εκτέλεση χειρισμού εξαιρέσεων.

Λόγω της ασυνέπειας των πλατφορμών υλικού, μια εικονική μηχανή χρησιμοποιεί την έννοια της στοίβας, η οποία περιέχει τις ακόλουθες πληροφορίες:
■ Περιγραφείς καταστάσεων μεθόδου
■ Λειτουργεί σε bytecode
■Παράμετροι μεθόδου
■ Τοπικές μεταβλητές

Όταν ο κώδικας εκτελείται χρησιμοποιώντας το JVM, υπάρχει ένας ειδικός καταχωρητής που χρησιμοποιείται ως μετρητής, υποδεικνύοντας τις τρέχουσες εντολές που εκτελούνται. Εάν είναι απαραίτητο, οι εντολές τροποποιούν το πρόγραμμα, αλλάζοντας τη ροή εκτέλεσης, διαφορετικά η ροή είναι διαδοχική και μετακινείται από τη μια εντολή στην άλλη.

Μια άλλη έννοια που γίνεται δημοφιλής είναι η χρήση ενός μεταγλωττιστή Just In Time (JIT). Παρόμοια προγράμματα περιήγησης Netscape Navigator 4.0 και Internet Explorer 4.0 περιλαμβάνουν μεταγλωττιστές JIT που βελτιώνουν την ταχύτητα εκτέλεσης του κώδικα Java. Ο κύριος στόχος του JIT είναι να μετατρέψει το σύνολο εντολών bytecode σε εντολές κώδικα μηχανής που στοχεύουν σε έναν συγκεκριμένο μικροεπεξεργαστή. Αυτές οι εντολές αποθηκεύονται και χρησιμοποιούνται κάθε φορά που υποβάλλεται αίτημα για τη συγκεκριμένη μέθοδο.

1.3.2 Χρόνος εκτέλεσης Java

JRE (Java Runtime Environment) Το JVM αλληλεπιδρά με το υλικό στη μία πλευρά και το πρόγραμμα από την άλλη. Ο κώδικας εκτέλεσης του JRE μεταγλωττίστηκε για το JVM:
Φόρτωση αρχείων .class
Έγινε με χρήση του "Class Loader"
Το πρόγραμμα φόρτωσης κλάσης κάνει έναν έλεγχο ασφαλείας εάν τα αρχεία χρησιμοποιούνται στο δίκτυο.
Επαλήθευση bytecode
Εκτελείται από "επαληθευτή bytecode"
Ένας επαληθευτής bytecode ελέγχει τη μορφή κώδικα, τις μετατροπές τύπων αντικειμένου και ελέγχει για παραβιάσεις πρόσβασης.
Κώδικας εκτέλεσης
Εκτελείται "από τον διερμηνέα στο χρόνο εκτέλεσης"
Ο διερμηνέας εκτελεί τους bytecode και κάνει αιτήματα για το υλικό που χρησιμοποιείται.


Εικόνα 1.3: Περιβάλλον χρόνου εκτέλεσης Java

1.3.3 Χειρισμός εξαιρέσεων και διαχείριση μνήμης

Σε C, C++ ή Pascal, οι προγραμματιστές χρησιμοποιούσαν πρωτόγονες μεθόδους για την κατανομή και την απελευθέρωση μπλοκ μνήμης - δυναμική μνήμη. Η δυναμική μνήμη είναι ένα μεγάλο κομμάτι μνήμης, το οποίο ορίζεται στον όγκο ολόκληρης της μνήμης.

Χρησιμοποιείται δυναμική μνήμη:
Δωρεάν λίστα μπλοκ
Λίστα κατανεμημένων μπλοκ

Η δωρεάν λίστα ελέγχει ένα μπλοκ μνήμης κάθε φορά που υποβάλλεται αίτημα. Ο μηχανισμός εκχώρησης που χρησιμοποιείται είναι η μέθοδος "first fit", σύμφωνα με την οποία το πρώτο μικρότερο μπλοκ μνήμης εκχωρείται ανάλογα με το αίτημα. Αυτή η διαδικασία εκχωρεί και ελευθερώνει μικρές ποσότητες μνήμης διαφορετικών μεγεθών από το σωρό, ενώ ελαχιστοποιεί τον κατακερματισμό του σωρού.

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

Η εικονική μηχανή Java χρησιμοποιεί δύο ξεχωριστές δυναμικές μνήμες για στατικές και δυναμική κατανομήμνήμη.

Δυναμική μνήμη - Δεν κάνει χειρισμό εξαιρέσεων δυναμικής μνήμης, ο οποίος αποθηκεύει όλες τις ιδιότητες κλάσης, μόνιμους πίνακες συγκέντρωσης και μεθόδων.

Η δεύτερη δυναμική μνήμη χωρίζεται και πάλι σε δύο τμήματα, τα οποία μπορούν να επεκταθούν σε αντίθετες κατευθύνσεις ανάλογα με τις ανάγκες. Το ένα διαμέρισμα χρησιμοποιείται για την αποθήκευση παρουσιών αντικειμένων και το άλλο διαμέρισμα χρησιμοποιείται για την αποθήκευση λαβών σε αυτά τα στιγμιότυπα. Ένας περιγραφέας είναι μια δομή που αποτελείται από δύο δείκτες. Τοποθετήστε τον δείκτη σε έναν πίνακα με μεθόδους αντικειμένου και άλλα στοιχεία σε ένα παράδειγμα αυτού του αντικειμένου. Αυτή η τοποθέτηση ουσιαστικά εξαλείφει την ανάγκη διατήρησης μονοπατιών που δείχνουν προς ένα αντικείμενο κατά την τροποποίηση δεικτών μετά τη συμπίεση. Το μόνο που έχουμε να κάνουμε είναι να ενημερώσουμε την τιμή του δείκτη λαβής.

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

Ο συλλέκτης εξαιρέσεων καλεί τη μέθοδο τερματισμού πριν συλλεχθεί ένα δείγμα αντικειμένου χρησιμοποιώντας χειρισμό εξαιρέσεων. Η μέθοδος τερματισμού λειτουργίας χρησιμοποιείται για τον καθαρισμό εξωτερικών πόρων, όπως αρχεία και ροές που είναι ανοιχτά και δεν λαμβάνονται υπόψη στον τυπικό χειρισμό εξαιρέσεων. Ακόμα κι αν καλέσουμε ρητά το χειρισμό εξαιρέσεων στη μέθοδο (System.gc()), δεν θα λειτουργήσει γρήγορα. Απλώς προορίζεται να λειτουργήσει. Αυτό σημαίνει επίσης ότι ο χειρισμός εξαιρέσεων δεν μπορεί να κληθεί. Αυτό συμβαίνει επειδή τα νήματα χειρισμού εξαιρέσεων εκτελούνται με πολύ χαμηλή προτεραιότητα και ενδέχεται να διακόπτονται συχνά. Αυτό μπορεί να συμβεί όταν το αντικείμενό μας δεν έχει εντοπιστεί ποτέ στη μνήμη.

Τι είναι το JVM;

Το JVM είναι μια μηχανή που παρέχει περιβάλλον χρόνου εκτέλεσης για να οδηγεί τον κώδικα Java ή τις εφαρμογές. Μετατρέπει το bytecode Java σε γλώσσα μηχανών. Το JVM είναι μέρος του JRE (Java Run Environment). Σημαίνει Java Virtual Machine

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

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

JVM Architecture

Ας καταλάβουμε την Αρχιτεκτονική του JVM Περιέχει classloader, περιοχή μνήμης, execution engine κ.λπ.

1) ClassLoader

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

2) Περιοχή μεθόδου

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

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

4) Στοίβες γλωσσών JVM

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

5) Μητρώα Η/Υ

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

6) Στοίβες Native Method

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

7) Μηχανή εκτέλεσης

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

8) Διεπαφή Native Method

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

9) Βιβλιοθήκες Native Method

Οι εγγενείς βιβλιοθήκες είναι μια συλλογή των εγγενών βιβλιοθηκών (C, C++) που απαιτούνται από το Execution Engine.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΝΑ μεταγλωττιστήςείναι ένα πρόγραμμα που μετατρέπει ένα πρόγραμμα από ένα επίπεδο γλώσσας σε ένα άλλο. Παράδειγμα μετατροπής προγράμματος C++ σε κώδικα μηχανής.

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

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

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

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

Γιατί η Java είναι αργή;

Οι δύο κύριοι λόγοι πίσω από τη βραδύτητα της Java είναι

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

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

Περίληψη:

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

Μπορεί να μεταγλωττιστεί σε bytecode Java, ο οποίος στη συνέχεια μπορεί να εκτελεστεί από το JVM.

Το JVM είναι ένα βασικό στοιχείο της πλατφόρμας Java. Δεδομένου ότι οι εικονικές μηχανές Java είναι διαθέσιμες για πολλές πλατφόρμες υλικού και λογισμικού, η Java μπορεί να θεωρηθεί τόσο ενδιάμεσο λογισμικό όσο και αυτόνομη πλατφόρμα, εξ ου και η αρχή «γράψτε μια φορά, τρέξτε οπουδήποτε». Η χρήση ενός bytecode για πολλές πλατφόρμες επιτρέπει στην Java να περιγραφεί ως "μεταγλώττιση μία φορά, εκτέλεση οπουδήποτε".

Προδιαγραφές JVM

Αντιπαράθεση Sun και IBM

Το 2001, με στόχο την ανάπτυξη ενός προτύπου για εφαρμογές επιτραπέζιων υπολογιστών πολλαπλών πλατφορμών, το Eclipse.

IBM VisualAge. Η IBM κατάφερε να εξισορροπήσει τα συμφέροντα της ελεύθερης κοινότητας και τα συμφέροντα των επιχειρήσεων (τα συμφέροντά της) στη δημόσια άδεια Eclipse, που αναγνωρίζεται από το FSF.

Το έργο εξελίσσεται με επιτυχία, αναγνωρίζεται από τη βιομηχανία και έχει διαχωριστεί σε μεγάλο βαθμό από την IBM στο ανεξάρτητο Ίδρυμα Eclipse.


Ίδρυμα Wikimedia. 2010.

Δείτε τι είναι το "Java Virtual Machine" σε άλλα λεξικά:

    Java εικονική μηχανή- Το κύριο μέρος του συστήματος χρόνου εκτέλεσης Java (Java Runtime Environment; JRE). Η εικονική μηχανή Java ερμηνεύει και εκτελεί κώδικα Java byte που είχε δημιουργηθεί προηγουμένως από τον πηγαίο κώδικα ενός προγράμματος Java από έναν μεταγλωττιστή Java. Το JVM μπορεί να χρησιμοποιηθεί για... - αναπτύχθηκε από την JavaSoft. Οι εφαρμογές Ιστού που δημιουργούνται χρησιμοποιώντας αυτό μπορούν να εκτελούνται φυσικά μέσα λειτουργικό σύστημα, ή φυλλομετρητής, ή μέσα σε ένα περιβάλλον εξομοίωσης γνωστό ως Java Virtual Machine... Λεξικό E-Business

    - (JPF) ένα δωρεάν εργαλείο για τη δοκιμή προγραμμάτων Java πολλαπλών νημάτων. Στον πυρήνα του, είναι μια Java Virtual Machine βάσει της οποίας εφαρμόζονται μέθοδοι ελέγχου μοντέλων. Αυτό σημαίνει ότι... ... Wikipedia

    Java εικονική μηχανή- Διερμηνέας κώδικα byte για προγράμματα Java. Μια εικονική μηχανή σχεδιασμένη για να εκτελεί εφαρμογές Java. Το JVM είναι ενσωματωμένο στα περισσότερα προγράμματα περιήγησης ιστού. Αυτό σας επιτρέπει να εκτελέσετε μικροεφαρμογές Java στην πλευρά του πελάτη, οι κλήσεις των οποίων παρέχονται στο ... ... Οδηγός Τεχνικού Μεταφραστή

    Ένα άλλο όνομα για αυτήν την έννοια είναι "Java". δείτε επίσης άλλες έννοιες. Δεν πρέπει να συγχέεται με το JavaScript. Τάξη γλώσσας Java ... Wikipedia

    Είναι απαραίτητο να ελέγξετε την ποιότητα της μετάφρασης και να φέρετε το άρθρο σε συμμόρφωση με τους στυλιστικούς κανόνες της Wikipedia. Μπορείτε να βοηθήσετε στη βελτίωση αυτού του άρθρου διορθώνοντας σφάλματα. Πρωτότυπο n... Wikipedia