Διαφήμιση
Το Java Virtual Machine (JVM) είναι ένα dropper πραγματικού ονόματος όταν προγραμματίζετε σε Java. Σε αντίθεση με ό, τι υποδηλώνει το όνομα, η Java Virtual Machine μπορεί να συναντηθεί και σε σχέση με άλλες γλώσσες προγραμματισμού.
Σε γενικές γραμμές, δεν είναι απαραίτητο να γνωρίζουμε τι είναι η Java Virtual Machine, ή ακόμα και αυτό που κάνει, για να είναι σε θέση να προγραμματίζει σε Java. Από την άλλη πλευρά, εξοικειώνοντας τον εαυτό σας με την εσωτερική λειτουργία μιας μηχανής, συμβάλλει στην αύξηση της κατανόησης και της συνολικής γνώσης.
Αυτό το άρθρο βουίζει πάνω από την ιδέα της Java Virtual Machine, τι κάνει για εσάς, καθώς και μερικά από τα πιο σημαντικά πλεονεκτήματα και μειονεκτήματα. Παρόλο που έχω προσπαθήσει να το κρατήσω απλό και υπάρχει σίγουρα πιο προηγμένη βιβλιογραφία για το θέμα, αναμένεται μια στοιχειώδης κατανόηση της Java και προγραμματισμού.
Γλώσσες υψηλού επιπέδου
Η σημασιολογία μιας γλώσσας προγραμματισμού σχεδιάζεται να είναι κοντά στη φυσική μας γλώσσα, ενώ παραμένει σύντομη και εύκολη στην ερμηνεία μιας μηχανής. Όπως ίσως γνωρίζετε, η γλώσσα προγραμματισμού είναι εντελώς διαφορετική από τον κώδικα μηχανής, το σύνολο των οδηγιών που χρησιμοποιεί ένας υπολογιστής για να κατασκευάσει και να εκτελέσει ένα πρόγραμμα. Αυτό καλούμε
γλώσσες υψηλού επιπέδου; ένα ή πολλαπλά επίπεδα αφαίρεσης από τον κώδικα της μηχανής.Πριν μπορέσει να τρέξει, πρέπει πρώτα να ερμηνευτεί ο κώδικας υψηλού επιπέδου. Πολλές διασυνδέσεις προγραμματισμού καταρτίζονται εκ των προτέρων (Συλλογή AOT) για μια συγκεκριμένη πλατφόρμα. Αυτό καθιστά το πρόγραμμα πιο αποτελεσματικό κατά το χρόνο εκτέλεσης, αλλά πολύ λιγότερο συμβατό με διαφορετικές πλατφόρμες. Η Java, αντίθετα, λειτουργεί με μια ενδιάμεση γλώσσα που ονομάζεται Java bytecode και το Java Virtual Machine.
JVM & Bytecode Java
Όταν το έργο Java σας χτίζει, μεταφράζει τον πηγαίο κώδικα (που περιέχεται στο *.Ιάβα αρχεία προέλευσης) σε Java bytecode (που συνήθως περιέχεται σε αρχεία * .class). Αυτό παίρνει τον κώδικα υψηλού επιπέδου ένα βήμα πιο κοντά στον κώδικα του μηχανήματος, αλλά όχι ακόμα εκεί. Αυτός ο bytecode είναι μια συλλογή από συμπαγείς οδηγίες. πιο εύκολο για μια μηχανή να ερμηνεύσει, αλλά λιγότερο ευανάγνωστο.
Όταν εκτελείτε μια εφαρμογή Java στον υπολογιστή σας, στο κινητό σας ή σε οποιαδήποτε άλλη πλατφόρμα με δυνατότητα Java, μεταβιβάζετε ουσιαστικά αυτό το Java bytecode στην Java Virtual Machine. Ο διερμηνέας στην εικονική μηχανή Java αρχίζει συνήθως να συνθέτει ολόκληρο τον bytecode κατά το χρόνο εκτέλεσης, ακολουθώντας τις αρχές του λεγόμενου σύντομη συμπλήρωση. Αυτό κάνει για την τυπική, αν και συχνά μικρή καθυστέρηση κατά το άνοιγμα μιας εφαρμογής Java, αλλά γενικά ενισχύει την απόδοση του προγράμματος σε σύγκριση με ερμηνευμένη συλλογή.

Το κύριο πλεονέκτημα αυτού του συστήματος είναι η αυξημένη συμβατότητα. Δεδομένου ότι οι εφαρμογές σας τρέχουν σε μια εικονική μηχανή αντί απευθείας στο υλικό σας, ο προγραμματιστής μπορεί να προγραμματίσει και να χτίσει την εφαρμογή τους μια φορά, η οποία στη συνέχεια μπορεί να εκτελεστεί σε κάθε συσκευή με εφαρμογή του Java Virtual Μηχανή. Αυτή η αρχή έχει γεννήσει το σύνθημα Java: "Γράψτε μία φορά, εκτελέστε παντού.”
Pro: Συμβατότητα & αυξημένη ασφάλεια
Εκτός από τη συμβατότητα κώδικα, η εικονική μηχανή Java συνοδεύεται από άλλα οφέλη. Ένα από τα σημαντικότερα από αυτά είναι η σχετική ασφάλεια των προγραμμάτων Java ως αποτέλεσμα της Java Virtual Machine. Ασφάλεια, που σημαίνει ότι ένα πρόγραμμα που εκτελείται σε μια εικονική μηχανή είναι πολύ λιγότερο πιθανό να διαταράξει το λειτουργικό σύστημα του χρήστη ή να καταστρέψει τα αρχεία δεδομένων, αν προκύψουν σφάλματα.
Con: Διαφορετικές εφαρμογές και αποσφαλμάτωση JVM
Μια από τις κύριες επικρίσεις που εκφράστηκαν κατά της συμβατότητας κώδικα και της εικονικής μηχανής Java οφείλεται στις πολλές διαφορετικές εφαρμογές της τελευταίας. Βλέπετε, η Java Virtual Machine δεν είναι ένα κομμάτι του λογισμικού. Oracle, οι ιδιοκτήτες της Java, έχουν την εφαρμογή της εικονικής μηχανής Java, αλλά άλλοι άνθρωποι μπορούν να κάνουν τις δικές τους εάν ικανοποιήσουν διάφορες πρακτικές και συμβατικές αξιώσεις.
Αυτές οι διαφορετικές υλοποιήσεις σημαίνουν ότι ο κώδικας μπορεί να λειτουργεί ομαλά σε μια εικονική μηχανή Java, αλλά να συντριβεί και να καίει σε άλλο. Αν και, στην πράξη, μπορείτε να γράψετε τον κώδικα σας μία φορά και να το εκτελέσετε παντού, πιο περίπλοκο κώδικα μερικές φορές εξακολουθεί να πρέπει να διορθώνεται σε διαφορετικές υλοποιήσεις Java Virtual Machine για να διασφαλιστεί η σωστή λειτουργία.
Έχετε οποιαδήποτε εμπειρία εργασίας με την Java Virtual Machine; Αν ναι, υπάρχει κάτι που μου λείπει εδώ που πρέπει να αναφέρουμε;
Image Credit: Michaelaw, Dcoetzee
Είμαι συγγραφέας και φοιτητής επιστήμης υπολογιστών από το Βέλγιο. Μπορείτε πάντα να μου κάνετε μια χάρη με μια καλή ιδέα για το άρθρο, μια σύσταση βιβλίου ή μια ιδέα συνταγής.