java:jre

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Το περιβάλλον μεταγλώττισης και εκτέλεσης Java (JRE/JDK) ====== 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). Αν και η δομή του [[wp>Java_bytecode|Java Byte Code]] επιτρέπει την γρήγορη εκτέλεση του κώδικα **Java** σε οποιαδήποτε αρχιτεκτονική. Παρ' όλα αυτά, δεν πρέπει να ξεχνάμε ότι καθώς εμπλέκεται λογισμικό στην εκτέλεση του κώδικα (//αντί για εκτέλεση απευθείας πάνω στο υλισμικό//), η γλώσσα Java δεν μπορεί παρά να είναι πιο αργή στην εκτέλεση της από οποιαδήποτε γλώσσα που εκτελείται απευθείας στο hardware, όπως οι C/C++. Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής. Συμπερασματικά, το ίδιο εκτελέσιμο αρχείο **.class** μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής, χωρίς να απαιτηθεί η επαναμεταγλώττιση του. | {{:java:java-code-lifecycle1.gif?450 |}} | {{:java:java-code-lifecycle2.gif?430 |}} | ==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ==== | {{ :java:jre-stack.png?1000|}} | | To περιβάλλον εκτέλεσης οποιουδήποτε προγράμματος Java (το λεγόμενο JRE) αποτελείται από τα εξής a) Java Virtual Machine (JVM) b) Java API classes (standard βιβλιοθήκη της Java) | ===== Το περιβάλλον μεταγλώττισης ===== Το περιβάλλον μεταγλώττισης αποτελείται από το Java compiler (**javac**). Κάθε κλάση στη Java οφείλει να είναι ένα αυτόνομο αρχείο, του οποίου το όνομα να είναι ίδιο με το όνομα της κλάσης ακολουθούμενο από την κατάληξη **.java**. Για παράδειγμα, η κλάση **FirstProgram** πρέπει να είναι σε ένα αρχείο με όνομα **FirstProgram.java**. Κάθε κλάση μεταγλωττίζεται με την εντολή **javac** ακολουθούμενη από το όνομα του αρχείου όπου βρίσκεται η κλάση, δηλ <code> javac FirstProgram.java </code> Το αποτέλεσμα είναι ένα πρόγραμμα byte-code του οποίου το όνομα αρχείου είναι το ίδιο με το όνομα της κλάσης ακολουθούμενο από την κατάληξη **.class**, για το παραπάνω παράδειγμα, το εκτελέσιμο αρχείο έχει όνομα **FirstProgram.class**. /* ===== Το πρώτο μου πρόγραμμα ===== <code java MyFirstProgram.java> public class MyFirstProgram { public static void main(String args[]) { if( args.length > 0 ) { System.out.print("Hello "); System.out.print(args[0]); System.out.println("! Welcome to Java world."); } else { System.out.println("Hello! Welcome to Java world."); } } } </code> <WRAP center round todo 60%> Κατεβάστε και τρέξτε το παραπάνω αρχείο ακολουθώντας τις παραπάνω οδηγίες μεταγλώττισης και εκτέλεσης. </WRAP> */ /*|Προηγούμενο: [[java:| ]]*/ | [[:toc | Περιεχόμενα ]] | Επόμενο: [[netbeans:intro| Εγκατάσταση του περιβάλλοντος ανάπτυξης JDK/NetBeans]]|

java/jre.1486739037.txt.gz · Last modified: 2017/02/10 15:03 by gthanos