java:jre

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:jre [2017/02/10 17:05]
doufexi
java:jre [2017/02/16 06:59] (current)
gthanos [Το περιβάλλον εκτέλεσης - Java Runtime Environment]
Line 3: Line 3:
 H Java είναι μία γλώσσα **υψηλού επιπέδου** η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα **χαμηλού επιπέδου** που ονομάζεται [[wp>​Java_bytecode|Java Byte Code]]. Το [[wp>​Java_bytecode|Java Byte Code]] μοιάζει με assembly με την ιδιαιτερότητα όμως ότι δεν συμπίπτει με κάποια υφιστάμενη αρχιτεκτονική υπολογιστή. Ο κώδικας αυτός είναι εύκολο να μεταγλωττιστεί και να εκτελεστεί σε πραγματικό χρόνο από μία εικονική μηχανή εκτέλεσης κώδικα (Virtual Machine) στην γλώσσα μηχανής του κάθε υπολογιστή. Η διαδικασία μεταγλώττισης και εκτέλεσης ψευδο-κώδικα σε πραγματικό χρόνο ονομάζεται [[wp>​Just-in-time_compilation]]. H Java είναι μία γλώσσα **υψηλού επιπέδου** η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα **χαμηλού επιπέδου** που ονομάζεται [[wp>​Java_bytecode|Java Byte Code]]. Το [[wp>​Java_bytecode|Java Byte Code]] μοιάζει με assembly με την ιδιαιτερότητα όμως ότι δεν συμπίπτει με κάποια υφιστάμενη αρχιτεκτονική υπολογιστή. Ο κώδικας αυτός είναι εύκολο να μεταγλωττιστεί και να εκτελεστεί σε πραγματικό χρόνο από μία εικονική μηχανή εκτέλεσης κώδικα (Virtual Machine) στην γλώσσα μηχανής του κάθε υπολογιστή. Η διαδικασία μεταγλώττισης και εκτέλεσης ψευδο-κώδικα σε πραγματικό χρόνο ονομάζεται [[wp>​Just-in-time_compilation]].
  
-Το κώδικας που προκύπτει από την μεταγλώττιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία ​ μηχανή εκτέλεσης κώδικα ([[wp>​Java_bytecode|Java Byte Code]]), το λεγόμενο [[wp>​Java_virtual_machine| Java Virtual Machine (JVM)]]. To [[wp>​Java_virtual_machine| JVM ]] είναι μία εικονική μηχανή εκτέλεσης κώδικα (για αυτό και ο όρος Virtual). H μηχανή JVM δεν υλοποιείται σε υλικό (hardware) αλλά σε λογισμικό (software).+κώδικας που προκύπτει από την μεταγλώττιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία ​ μηχανή εκτέλεσης κώδικα ([[wp>​Java_bytecode|Java Byte Code]]), το λεγόμενο [[wp>​Java_virtual_machine| Java Virtual Machine (JVM)]]. To [[wp>​Java_virtual_machine| JVM ]] είναι μία εικονική μηχανή εκτέλεσης κώδικα (για αυτό και ο όρος Virtual). H μηχανή JVM δεν υλοποιείται σε υλικό (hardware) αλλά σε λογισμικό (software).
  
 Αν και η δομή του [[wp>​Java_bytecode|Java Byte Code]] επιτρέπει την γρήγορη εκτέλεση του κώδικα **Java** σε οποιαδήποτε αρχιτεκτονική. Παρ'​ όλα αυτά, δεν πρέπει να ξεχνάμε ότι καθώς ​ εμπλέκεται λογισμικό στην εκτέλεση του κώδικα (//αντί για εκτέλεση απευθείας πάνω στο υλισμικό//​),​ η γλώσσα Java δεν μπορεί παρά να είναι πιο αργή στην εκτέλεση της από οποιαδήποτε γλώσσα που εκτελείται απευθείας στο hardware, όπως οι C/​C++. ​ Αν και η δομή του [[wp>​Java_bytecode|Java Byte Code]] επιτρέπει την γρήγορη εκτέλεση του κώδικα **Java** σε οποιαδήποτε αρχιτεκτονική. Παρ'​ όλα αυτά, δεν πρέπει να ξεχνάμε ότι καθώς ​ εμπλέκεται λογισμικό στην εκτέλεση του κώδικα (//αντί για εκτέλεση απευθείας πάνω στο υλισμικό//​),​ η γλώσσα Java δεν μπορεί παρά να είναι πιο αργή στην εκτέλεση της από οποιαδήποτε γλώσσα που εκτελείται απευθείας στο hardware, όπως οι C/​C++. ​
Line 9: Line 9:
 Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής. Συμπερασματικά,​ το ίδιο εκτελέσιμο αρχείο **.class** μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής,​ χωρίς να απαιτηθεί η επαναμεταγλώττιση του. Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής. Συμπερασματικά,​ το ίδιο εκτελέσιμο αρχείο **.class** μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής,​ χωρίς να απαιτηθεί η επαναμεταγλώττιση του.
  
-| {{:​java:​java-code-lifecycle1.gif?​450 |}}  |  {{:​java:​java-code-lifecycle2.gif?​430 |}} |+| {{:​java:​java-code-lifecycle1.gif?​390 |}}  |  {{:​java:​java-code-lifecycle2.gif?​430 |}} |
  
 ==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ==== ==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ====
  
-|  ​{{ :​java:​jre-stack.png?​1000|}}  ​|   | To περιβάλλον εκτέλεσης οποιουδήποτε προγράμματος Java (το λεγόμενο ​JRE) αποτελείται από τα εξής ​a) Java Virtual Machine (JVM) b) Java API classes (standard βιβλιοθήκη της Java) |+{{ :​java:​jre-stack.png?​250Java Runtime Environment}}  ​Το περιβάλλον εκτέλεσης οποιουδήποτε προγράμματος Java (Java Runtime Environment - JRE) αποτελείται από τα εξής
 +  - Java Virtual Machine (JVM)  
 +  - Java API classes (standard βιβλιοθήκη της Java)
  
 ===== Το περιβάλλον μεταγλώττισης ===== ===== Το περιβάλλον μεταγλώττισης =====
java/jre.1486746304.txt.gz · Last modified: 2017/02/10 17:05 by doufexi