java:jre
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:jre [2016/01/14 16:37] – [Το πρώτο μου πρόγραμμα] gthanos | java:jre [2021/02/18 12:05] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Το περιβάλλον μεταγλώττισης και εκτέλεσης Java (JRE/JDK) ====== | ====== Το περιβάλλον μεταγλώττισης και εκτέλεσης Java (JRE/JDK) ====== | ||
- | H Java είναι μία γλώσσα **υψηλού επιπέδου** η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα **χαμηλού επιπέδου** που ονομάζεται [[wp> | + | H Java είναι μία γλώσσα **υψηλού επιπέδου** η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα **χαμηλού επιπέδου** που ονομάζεται [[wp> |
- | Το κώδικας που προκύπτει από την μεταγλώτιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία | + | O κώδικας που προκύπτει από την μεταγλώττιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία |
- | Αν και η δομή του [[wp> | + | Αν και η δομή του [[wp> |
- | Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωτίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής. Συμπερασματικά, το ίδιο εκτελέσιμο αρχείο **.class** μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής, | + | Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM είναι διαθέσιμο για διαφορετρικά |
- | | {{: | + | | {{: |
- | + | ||
- | |{{: | + | |
- | + | ||
- | | Στην παρακάτω εικόνα απεικονίζεται η διάκριση μεταξύ της εκτέλεσης ενός κώδικα **C/C++** και ενός κώδικα **Java**. | {{: | + | |
- | + | ||
- | <WRAP important round> | + | |
- | Κάθε μεταγλωττιστής Java μεταγλωττίζει κώδικα για συγκεκριμένη έκδοση της γλώσσας. Εάν χρησιμοποιήσετε ένα JVM παλαιότερης έκδοσης (π.χ. Java 7) για να εκτελέσετε κώδικα που έχει μεταγλωττιστεί με χρήση compiler νεότερης έκδοσης (π.χ. Java 8) τότε καταλήγετε σε αποτυχία εκτέλεσης λόγω ασυμβατότητας μεταξύ του μεταγλωττισμένου κώδικα και της μηχανής με την οποία επιχειρείτε να τον εκτελέσετε. | + | |
- | + | ||
- | Αντίθετα εάν επιχειρήσετε να εκτελέσετε κώδικα μεταγλωττισμένο από compiler παλαιότερης έκδοσης (π.χ. Java 7) σε μηχανή νεότερης έκδοσης (π.χ. Java 8) τότε το πρόγραμμα σας θα εκτελεστεί κανονικά. Ισχύει δηλαδή η αρχή της συμβατότητας προς τα πίσω, όχι όμως και το αντίστροφο. | + | |
- | </ | + | |
==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ==== | ==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ==== | ||
- | |{{ : | + | {{ : |
- | + | - Java Virtual Machine (JVM) | |
- | To περιβάλλον εκτέλεσης οποιουδήποτε προγράμματος Java (το λεγόμενο | + | |
- | - Java Virtual Machine (JVM) | + | |
- Java API classes (standard βιβλιοθήκη της Java) | - Java API classes (standard βιβλιοθήκη της Java) | ||
- | Χωρίς τα δύο παραπάνω κανένα πρόγραμμα Java δεν μπορεί να εκτελεστεί. | + | ===== Το περιβάλλον μεταγλώττισης ===== |
- | + | ||
- | ===== Το περιβάλλον μεταγλώτισσης ===== | + | |
Το περιβάλλον μεταγλώττισης αποτελείται από το Java compiler (**javac**). Κάθε κλάση στη Java οφείλει να είναι ένα αυτόνομο αρχείο, | Το περιβάλλον μεταγλώττισης αποτελείται από το Java compiler (**javac**). Κάθε κλάση στη Java οφείλει να είναι ένα αυτόνομο αρχείο, | ||
- | Κάθε κλάση μεταγλωττίζεται με την εντολή **javac** ακολουθούμενη από το όνομα του αρχείου όπου βρίσκεται η κλάση, δηλ | + | Κάθε κλάση μεταγλωττίζεται με την εντολή **javac** ακολουθούμενη από το όνομα του αρχείου όπου βρίσκεται η κλάση, δηλαδή |
< | < | ||
javac FirstProgram.java | javac FirstProgram.java | ||
Line 48: | Line 34: | ||
public class MyFirstProgram { | public class MyFirstProgram { | ||
public static void main(String args[]) { | public static void main(String args[]) { | ||
- | if( !args[0].isEmpty() | + | if( args.length > 0 ) { |
System.out.print(" | System.out.print(" | ||
System.out.print(args[0]); | System.out.print(args[0]); | ||
Line 60: | Line 46: | ||
</ | </ | ||
- | Ο παραπάνω κώδικας μεταγλωτίζεται ως εξής: | + | Ο παραπάνω κώδικας μεταγλωττίζεται ως εξής: |
< | < | ||
javac MyFirstProgram.java | javac MyFirstProgram.java | ||
Line 72: | Line 58: | ||
</ | </ | ||
- | Παρατηρήστε ότι κατά την μεταγλωττίζουμε και εκτελούμε καλώντας το όνομα της κλάσης. Απαραίτητη προϋπόθεση για την εκτέλεση ενός προγράμματος Java είναι η ύπαρξη της μεθόδου **main** μέσα στην κλάση την οποία επιχειρούμε να εκτελέσουμε. Η μέθοδος **main** ορίζεται ως εξής: | + | Παρατηρήστε ότι εκτελούμε καλώντας το όνομα της κλάσης. Απαραίτητη προϋπόθεση για την εκτέλεση ενός προγράμματος Java είναι η ύπαρξη της μεθόδου **main** μέσα στην κλάση την οποία επιχειρούμε να εκτελέσουμε. Η μέθοδος **main** ορίζεται ως εξής: |
<code java> | <code java> | ||
Line 91: | Line 77: | ||
</ | </ | ||
- | ===== Garbage Collection ===== | + | |Προηγούμενο: [[java:toc|Table of Contents |
- | + | ||
- | Μία από τις βασικές ιδιότητες τις Java είναι ότι ο προγραμματιστής δεν απαιτείται να ασχοληθεί με την δέσμευση και κυρίως με την αποδέσμευση μνήμης στο πρόγραμμα του. Η Java δεσμεύει μνήμη δυναμικά για όλα τα αντικείμενα που δημιουργεί και αποδεσμεύει την μνήμη αυτόματα μέσω ενός μηχανισμού που ονομάζεται //Garbage Collector// | + | |
- | + | ||
- | Το παρακάτω απόσπασμα είναι από τη ελληνική έκδοση της | + | |
- | + | ||
- | "// | + | |
- | + | ||
- | Δείτε περισσότερα [[ java: | + | |
- | + | ||
- | + | ||
- | |Προηγούμενο: | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
java/jre.1452789453.txt.gz · Last modified: 2016/01/14 16:37 (external edit)