This shows you the differences between two versions of the page.
|
java:jre [2020/02/21 10:34] gthanos |
java:jre [2021/02/18 12:05] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Το περιβάλλον μεταγλώττισης και εκτέλεσης Java (JRE/JDK) ====== | ||
| - | |||
| - | H Java είναι μία γλώσσα **υψηλού επιπέδου** η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα **χαμηλού επιπέδου** που ονομάζεται [[wp> | ||
| - | |||
| - | O κώδικας που προκύπτει από την μεταγλώττιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία | ||
| - | |||
| - | Αν και η δομή του [[wp> | ||
| - | |||
| - | Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος **Java**. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία **.class** τα οποία είναι εκτελέσιμα από το JVM. To JVM είναι διαθέσιμο για διαφορετρικά λειτουργικά συστήματα (π.χ. Windows και Unix/Linux) και για διαφορετικές αρχιτεκτονικές υλισμικού (ARM, i386 κ.α.). Με τη βοήθεια του JVM, το ίδιο εκτελέσιμο αρχείο **.class** μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής, | ||
| - | |||
| - | | {{: | ||
| - | |||
| - | ==== Το περιβάλλον εκτέλεσης - Java Runtime Environment ==== | ||
| - | |||
| - | {{ : | ||
| - | - Java Virtual Machine (JVM) | ||
| - | - Java API classes (standard βιβλιοθήκη της Java) | ||
| - | |||
| - | ===== Το περιβάλλον μεταγλώττισης ===== | ||
| - | |||
| - | Το περιβάλλον μεταγλώττισης αποτελείται από το Java compiler (**javac**). Κάθε κλάση στη Java οφείλει να είναι ένα αυτόνομο αρχείο, | ||
| - | |||
| - | Κάθε κλάση μεταγλωττίζεται με την εντολή **javac** ακολουθούμενη από το όνομα του αρχείου όπου βρίσκεται η κλάση, δηλ | ||
| - | < | ||
| - | javac FirstProgram.java | ||
| - | </ | ||
| - | |||
| - | Το αποτέλεσμα είναι ένα πρόγραμμα byte-code του οποίου το όνομα αρχείου είναι το ίδιο με το όνομα της κλάσης ακολουθούμενο από την κατάληξη **.class**, για το παραπάνω παράδειγμα, | ||
| - | |||
| - | ===== Το πρώτο μου πρόγραμμα ===== | ||
| - | |||
| - | <code java MyFirstProgram.java> | ||
| - | |||
| - | public class MyFirstProgram { | ||
| - | public static void main(String args[]) { | ||
| - | if( args.length > 0 ) { | ||
| - | System.out.print(" | ||
| - | System.out.print(args[0]); | ||
| - | System.out.println(" | ||
| - | } | ||
| - | else { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ο παραπάνω κώδικας μεταγλωττίζεται ως εξής: | ||
| - | < | ||
| - | javac MyFirstProgram.java | ||
| - | </ | ||
| - | |||
| - | και εκτελείται ως εξής: | ||
| - | < | ||
| - | java MyFirstProgram | ||
| - | ή | ||
| - | java MyFirstProgram < | ||
| - | </ | ||
| - | |||
| - | Παρατηρήστε ότι εκτελούμε καλώντας το όνομα της κλάσης. Απαραίτητη προϋπόθεση για την εκτέλεση ενός προγράμματος Java είναι η ύπαρξη της μεθόδου **main** μέσα στην κλάση την οποία επιχειρούμε να εκτελέσουμε. Η μέθοδος **main** ορίζεται ως εξής: | ||
| - | |||
| - | <code java> | ||
| - | public static void main(String args[]) { | ||
| - | | ||
| - | | ||
| - | ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | όπου '' | ||
| - | - args[0]: το 1ο όρισμα | ||
| - | - args[1]: το 2ο όρισμα | ||
| - | - args[N-1]: το N-οστό όρισμα. | ||
| - | |||
| - | <WRAP center round todo 60%> | ||
| - | Κατεβάστε και τρέξτε το παραπάνω αρχείο ακολουθώντας τις παραπάνω οδηγίες μεταγλώττισης και εκτέλεσης. | ||
| - | </ | ||
| - | |||
| - | ===== Garbage Collection ===== | ||
| - | |||
| - | Μία από τις βασικές ιδιότητες τις Java είναι ότι ο προγραμματιστής δεν απαιτείται να ασχοληθεί με την δέσμευση και κυρίως με την αποδέσμευση μνήμης στο πρόγραμμα του. Η Java δεσμεύει μνήμη δυναμικά για όλα τα αντικείμενα που δημιουργεί και αποδεσμεύει την μνήμη αυτόματα μέσω ενός μηχανισμού που ονομάζεται //Garbage Collector// | ||
| - | |||
| - | Δείτε περισσότερα [[ java: | ||
| - | |||
| - | |Προηγούμενο: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||