User Tools

Site Tools


java:jre

Το περιβάλλον μεταγλώττισης και εκτέλεσης Java (JRE/JDK)

H Java είναι μία γλώσσα υψηλού επιπέδου η οποία όταν μεταγλωττίζεται παράγεται ένας ιδιαίτερος τύπος κώδικα χαμηλού επιπέδου που ονομάζεται Java Byte Code. Το Java Byte Code μοιάζει με assembly με την ιδιαιτερότητα όμως ότι δεν συμπίπτει με κάποια υφιστάμενη αρχιτεκτονική υπολογιστή. Ο κώδικας αυτός είναι εύκολο να μεταγλωττιστεί και να εκτελεστεί σε πραγματικό χρόνο από μία εικονική μηχανή εκτέλεσης κώδικα (Virtual Machine) στην γλώσσα μηχανής του κάθε υπολογιστή. Η διαδικασία μεταγλώττισης και εκτέλεσης ψευδο-κώδικα σε πραγματικό χρόνο ονομάζεται Just-in-time_compilation.

O κώδικας που προκύπτει από την μεταγλώττιση των προγραμμάτων Java, απαιτεί για την εκτέλεση του μία μηχανή εκτέλεσης κώδικα (Java Byte Code), το λεγόμενο Java Virtual Machine (JVM). To JVM είναι μία εικονική μηχανή εκτέλεσης κώδικα (για αυτό και ο όρος Virtual). H μηχανή JVM δεν υλοποιείται σε υλισμικό (hardware) αλλά σε λογισμικό (software).

Αν και η δομή του Java Byte Code επιτρέπει την γρήγορη εκτέλεση του κώδικα Java σε οποιαδήποτε αρχιτεκτονική, δεν πρέπει να παραγνωρίζουμε ότι εφόσον εμπλέκεται λογισμικό στην εκτέλεση του κώδικα (αντί για εκτέλεση απευθείας πάνω στο υλισμικό), η γλώσσα Java δεν μπορεί παρά να είναι πιο αργή στην εκτέλεση της από οποιαδήποτε γλώσσα που εκτελείται απευθείας στο hardware, όπως οι C ή C++.

Στα παρακάτω σχήματα απεικονίζεται η διαδικασία μεταγλώττισης και εκτέλεσης ενός προγράμματος Java. O κώδικας Java μεταγλωττίζεται σε διαδικά αρχεία .class τα οποία είναι εκτελέσιμα από το JVM. To JVM είναι διαθέσιμο για διαφορετρικά λειτουργικά συστήματα (π.χ. Windows και Unix/Linux) και για διαφορετικές αρχιτεκτονικές υλισμικού (ARM, i386 κ.α.). Με τη βοήθεια του JVM, το ίδιο εκτελέσιμο αρχείο .class μπορεί να εκτελεστεί σε υπολογιστές διαφορετικής αρχιτεκτονικής, χωρίς να απαιτείται η επαναμεταγλώττιση του.

Το περιβάλλον εκτέλεσης - Java Runtime Environment

 Java Runtime Environment Το περιβάλλον εκτέλεσης οποιουδήποτε προγράμματος Java (Java Runtime Environment - JRE) αποτελείται από τα εξής:

  1. Java Virtual Machine (JVM)
  2. Java API classes (standard βιβλιοθήκη της Java)

Το περιβάλλον μεταγλώττισης

Το περιβάλλον μεταγλώττισης αποτελείται από το Java compiler (javac). Κάθε κλάση στη Java οφείλει να είναι ένα αυτόνομο αρχείο, του οποίου το όνομα να είναι ίδιο με το όνομα της κλάσης ακολουθούμενο από την κατάληξη .java. Για παράδειγμα, η κλάση FirstProgram πρέπει να είναι σε ένα αρχείο με όνομα FirstProgram.java.

Κάθε κλάση μεταγλωττίζεται με την εντολή javac ακολουθούμενη από το όνομα του αρχείου όπου βρίσκεται η κλάση, δηλαδή

javac FirstProgram.java

Το αποτέλεσμα είναι ένα πρόγραμμα byte-code του οποίου το όνομα αρχείου είναι το ίδιο με το όνομα της κλάσης ακολουθούμενο από την κατάληξη .class, για το παραπάνω παράδειγμα, το εκτελέσιμο αρχείο έχει όνομα FirstProgram.class.

Το πρώτο μου πρόγραμμα

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.");
    }
  }
}

Ο παραπάνω κώδικας μεταγλωττίζεται ως εξής:

javac MyFirstProgram.java

και εκτελείται ως εξής:

java MyFirstProgram
ή 
java MyFirstProgram <YourName>

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

public static void main(String args[]) {
   ... 
   σώμα της main 
   ...
}

όπου String args[] είναι ένας πίνακας από ορίσματα τύπου java.lang.String, τα οποία λαμβάνει το πρόγραμμα από την γραμμή εντολών. Αναλυτικότερα τα ορίσματα έχουν ως εξής.

  1. args[0]: το 1ο όρισμα
  2. args[1]: το 2ο όρισμα
  3. args[N-1]: το N-οστό όρισμα.

Κατεβάστε και τρέξτε το παραπάνω αρχείο ακολουθώντας τις παραπάνω οδηγίες μεταγλώττισης και εκτέλεσης.

java/jre.txt · Last modified: 2021/02/18 12:05 (external edit)