Προγραμματισμός

Τι είναι το JRE; Εισαγωγή στο Java Runtime Environment

Μαζί, το Java Development Kit (JDK), η Java Virtual Machine (JVM) και το Java Runtime Environment (JRE) σχηματίζουν ένα ισχυρό trifecta στοιχείων πλατφόρμας Java για την ανάπτυξη και εκτέλεση εφαρμογών Java. Έχω εισαγάγει στο παρελθόν το JDK και το JVM. Σε αυτό το γρήγορο σεμινάριο, θα μάθετε για το JRE, το οποίο είναι το περιβάλλον χρόνου εκτέλεσης για την Java.

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

  • ο φορτωτής τάξης είναι υπεύθυνη για τη σωστή φόρτωση τάξεων και τη σύνδεσή τους με τις βασικές βιβλιοθήκες κλάσης Java.
  • ο JVM είναι υπεύθυνη για τη διασφάλιση ότι οι εφαρμογές Java διαθέτουν τους πόρους που χρειάζονται για να λειτουργούν και να αποδίδουν καλά στη συσκευή σας ή στο περιβάλλον cloud.
  • ο JRE είναι κυρίως ένα εμπορευματοκιβώτιο για αυτά τα άλλα συστατικά και είναι υπεύθυνο για την ενορχήστρωση των δραστηριοτήτων τους.

Θα ανακαλύψουμε πολύ βαθύτερα πώς λειτουργούν αυτά τα στοιχεία στις ενότητες που ακολουθούν.

Εγκατάσταση των JDK, JRE και JVM

Από την άποψη της εγκατάστασης, όποτε κάνετε λήψη ενός JDK, θα περιλαμβάνει ένα συμβατό με έκδοση JRE και ότι το JRE θα περιλαμβάνει ένα προεπιλεγμένο JVM. Μπορείτε επίσης να κατεβάσετε το JRE ξεχωριστά από το JDK και μπορείτε να επιλέξετε από μια ποικιλία JVM. Οι προεπιλογές λειτουργούν καλά για τις περισσότερες εφαρμογές, ειδικά όταν ξεκινάτε με Java.

Τι είναι το περιβάλλον χρόνου εκτέλεσης;

Ένα πρόγραμμα λογισμικού πρέπει να εκτελεστεί και να το κάνει αυτό χρειάζεται ένα περιβάλλον για να τρέξει. Το περιβάλλον χρόνου εκτέλεσης φορτώνει αρχεία κλάσης και διασφαλίζει ότι υπάρχει πρόσβαση στη μνήμη και σε άλλους πόρους συστήματος για την εκτέλεση τους. Στο παρελθόν, τα περισσότερα λογισμικά χρησιμοποιούσαν το λειτουργικό σύστημα (OS) ως περιβάλλον εκτέλεσης. Το πρόγραμμα έτρεξε μέσα σε οποιονδήποτε υπολογιστή ήταν, αλλά βασίστηκε στις ρυθμίσεις του λειτουργικού συστήματος για πρόσβαση σε πόρους. Οι πόροι σε αυτήν την περίπτωση θα ήταν πράγματα όπως αρχεία μνήμης και προγραμμάτων και εξαρτήσεις. Το Java Runtime Environment άλλαξε όλα αυτά, τουλάχιστον για προγράμματα Java.

WORA για Java

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

Το περιβάλλον χρόνου εκτέλεσης Java

Μπορούμε να δούμε το λογισμικό ως μια σειρά επιπέδων που βρίσκονται πάνω από το υλικό του συστήματος. Κάθε επίπεδο παρέχει υπηρεσίες που θα χρησιμοποιηθούν (και απαιτούνται) από τα επίπεδα πάνω από αυτό. Το Java Runtime Environment είναι ένα επίπεδο λογισμικού που τρέχει πάνω από το λειτουργικό σύστημα ενός υπολογιστή, παρέχοντας πρόσθετες υπηρεσίες ειδικά για την Java.

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

Εν ολίγοις, το JRE είναι ένα είδος meta-OS για προγράμματα Java. Είναι ένα κλασικό παράδειγμα αφαίρεση, αφαίρεση του υποκείμενου λειτουργικού συστήματος σε μια συνεπή πλατφόρμα για την εκτέλεση εφαρμογών Java.

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

Το Java Virtual Machine είναι ένα τρέχον σύστημα λογισμικού που είναι υπεύθυνο για την εκτέλεση ζωντανών προγραμμάτων Java. Το JRE είναι το σύστημα στο δίσκο που παίρνει τον κώδικα Java, τον συνδυάζει με τις απαραίτητες βιβλιοθήκες και ξεκινά το JVM για να τον εκτελέσει.

Το JRE περιέχει βιβλιοθήκες και λογισμικό που πρέπει να εκτελούνται τα προγράμματα Java. Για παράδειγμα, το Java class loader είναι μέρος του Java Runtime Environment. Αυτό το σημαντικό κομμάτι του λογισμικού φορτώνει τον μεταγλωττισμένο κώδικα Java στη μνήμη και συνδέει τον κώδικα με τις κατάλληλες βιβλιοθήκες κλάσης Java.

Στην πολυεπίπεδη προβολή που μόλις περιέγραψα, το JVM δημιουργείται από το JRE. Από τη σκοπιά του πακέτου, το JRE περιέχει το JVM, όπως δείχνει το Σχήμα 1.

Μάθιου Τάισον

Εγκατάσταση και χρήση του JRE

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

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

Εκδόσεις JRE

Το Java Runtime Environment ενημερώνεται για κάθε νέα έκδοση της Java και οι αριθμοί έκδοσης ευθυγραμμίζονται με το σύστημα εκδόσεων πλατφόρμας Java, οπότε για παράδειγμα το JRE 1.8 εκτελεί Java 8. Ενώ έχετε μια ποικιλία πακέτων JDK για να διαλέξετε (όπως Enterprise Edition ή Standard Edition) που δεν ισχύει για το JRE. Οι περισσότεροι υπολογιστές εκτελούν ένα JRE που αναπτύχθηκε για το Java SE, το οποίο είναι σε θέση να εκτελεί οποιαδήποτε εφαρμογή Java ανεξάρτητα από το πώς αναπτύχθηκε. Οι περισσότερες φορητές συσκευές διαθέτουν ένα JRE για Java ME, το οποίο είναι προεγκατεστημένο στην κινητή συσκευή και δεν είναι διαθέσιμο για λήψη.

Μόλις εγκατασταθεί το JRE, μπορείτε να αλληλεπιδράσετε μαζί του στη γραμμή εντολών εισάγονταςjava-μετατροπή, η οποία θα σας πει ποια έκδοση είναι εγκατεστημένη. Σε συστήματα POSIX, μπορείτε πάντα να ελέγχετε την εγκατεστημένη τοποθεσία με ποιο java.

Το JRE σε devops

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

Βασικά, το JRE παρέχει τα "κουμπιά" που θα χρησιμοποιούσατε για να διαμορφώσετε και να ελέγξετε τα χαρακτηριστικά μιας εφαρμογής Java. Η χρήση μνήμης είναι ένα πρωταρχικό παράδειγμα, το ψωμί και το βούτυρο της διαχείρισης συστημάτων. Ενώ η χρήση μνήμης είναι πάντα σημαντική, είναι ζωτικής σημασίας στις διαμορφώσεις cloud και ο devops είναι μια τεχνολογία που βασίζεται σε cloud. Εάν εργάζεστε σε περιβάλλον devops ή ενδιαφέρεστε να διακλαδώσετε τους devops, είναι καλή ιδέα να καταλάβετε πώς λειτουργεί η μνήμη Java και πώς παρακολουθείται στο JRE.

Devops ή sysadmin;

Devops είναι ένας νέος όρος, αλλά περιγράφει κάτι που ισχύει για δεκαετίες, που είναι η διαλειτουργικότητα μεταξύ ανάπτυξης και επιχειρήσεων. Με αυτή την έννοια, υποβιβάζεται είναι απλώς ένας νεότερος όρος για αυτό που παλαιότερα ονομάζονταν λειτουργίες ή διαχείριση συστημάτων. Όπως και το sysadmin, μια σημαντική πτυχή των devops είναι η διαχείριση των απαραίτητων συστημάτων για την εκτέλεση λογισμικού. Η διαχείριση του JRE είναι μέρος της διαχείρισης συστημάτων που εκτελούν εφαρμογές Java.

Μνήμη Java και το JRE

Η μνήμη Java αποτελείται από τρία στοιχεία: το σωρό, το stack και το metaspace (που προηγουμένως ονομαζόταν permgen).

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

Διαχείριση μνήμης στην Java 8

Μέχρι την Java 8, το metaspace ήταν γνωστό ως permgen. Εκτός από το ότι είναι ένα πολύ πιο δροσερό όνομα, το metaspace είναι μια σημαντική αλλαγή στον τρόπο με τον οποίο οι προγραμματιστές αλληλεπιδρούν με το χώρο μνήμης της Java. Προηγουμένως, θα χρησιμοποιούσατε την εντολή java -XX: MaxPermSize για την παρακολούθηση του μεγέθους του χώρου permgen. Από το Java 8 προς τα εμπρός, η Java αυξάνει αυτόματα το μέγεθος του metaspace για να προσαρμόσει τις μετα-ανάγκες του προγράμματος. Η Java 8 εισήγαγε επίσης μια νέα σημαία, Μέγεθος MaxMetaspace, το οποίο μπορεί να χρησιμοποιηθεί για τον περιορισμό του μεγέθους του metaspace.

Οι άλλες επιλογές μνήμης, σωρός και στοίβα, παραμένουν οι ίδιες στο Java 8.

Διαμόρφωση χώρου σωρού

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

Διαμόρφωση χώρου στοίβας

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

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

Παρακολούθηση εφαρμογών Java

Παρόλο που η παρακολούθηση εφαρμογών είναι συνάρτηση του JVM, το JRE παρέχει επιλογές διαμόρφωσης, οι οποίες είναι η απαραίτητη βασική γραμμή για την παρακολούθηση. Διατίθενται διάφορα εργαλεία για την παρακολούθηση εφαρμογών Java, από τα κλασικά (όπως η εντολή Unix μπλουζα) σε εξελιγμένες λύσεις απομακρυσμένης παρακολούθησης όπως η παρακολούθηση υποδομής της Oracle.

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

συμπέρασμα

Το Java Runtime Environment είναι το πρόγραμμα στο δίσκο που φορτώνει εφαρμογές Java για την εκτέλεση του JVM. Ένα JRE περιλαμβάνεται από προεπιλογή κατά τη λήψη του Java Development Kit και κάθε JRE περιλαμβάνει τις βασικές βιβλιοθήκες κλάσης Java, έναν φορτωτή κλάσης Java και μια εικονική μηχανή Java. Είναι χρήσιμο να κατανοήσετε πώς αλληλεπιδρούν οι JVM, JDK και JRE, ειδικά για εργασία σε περιβάλλοντα cloud και devops. Σε αυτά τα περιβάλλοντα, το JRE διαδραματίζει ισχυρότερο ρόλο στην παρακολούθηση και τη διαμόρφωση από ό, τι στην παραδοσιακή ανάπτυξη εφαρμογών Java.

Αυτή η ιστορία, "Τι είναι το JRE; Εισαγωγή στο Java Runtime Environment" δημοσιεύθηκε αρχικά από το JavaWorld.