Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Περιεχόμενα

1. Java - Τι σόι καφές είναι αυτός; (History/Internals)

1.1 Ιστορική Αναδρομή:

Το 1991 η Sun αναλαμβάνει να φτιάξει μία πλατφόρμα εφαρμογών (σε C++) ικανή για να τρέξει εφαρμογές σε μία μεγάλη γκάμα υπολογιστικών συστημάτων. Μέσα από το project αυτό, γεννήθηκε μία γλώσσα προγραμματισμού, ονόματι Oak.

Το 1994, βλέποντας την ταχύτητα με την οποία αναπτύσσεται το World Wide Web, η Sun προσθέτει ορισμένα Web-extensions στην Oak και την μετονομάζει σε Java.

Το 1995 οι Αlpha eκδόσεις της Java και της HotJava διανέμονται δωρεάν εκ του δικτύου για τις πλατφόρμες των Solaris και ΝΤ. Σύντομα γίνονται και τα ports σε Linux και Win95.

Στις αρχές του 1996 κυκλοφορεί η έκδοση 1.0. Τόσο το Netscape όσο και o Internet Explorer υποστηρίζουν Java, σε server και εσωτερική (browser) μορφή. Μετά από _αρκετά_ bug και security fixes, η εταιρεία ανεβάζει στο Web την Βeta έκδοση της σειράς 1.1. Διαθέτει εκτός των άλλων: RMI (κλήση συναρτήσεων εξ αποστάσεως), functions για ανταλλαγή πληροφοριών με βάσεις δεδομένων, μοντέλα για κρυπτογραφικές ρουτίνες και πολλά άλλα...

Η πρώτη επίσημη έκδοση της σειράς 1.1 βγαίνει το Μάρτιο του ΄97. Αυτή τη στιγμή η τελευταία σταθερή έκδοση για Linux είναι η 1.1.7v3 αν και υπάρχει έκδοση της σειράς 1.2 (JDK 1.2 pre-v1).

Το παρακάτω link δίνει περισσότερες πληροφορίες για τις διαφορές από release σε release. Θα φανεί ιδιαίτερα χρήσιμο στο προγραμματιστικό κοινό, καθώς οι αλλαγές που έχουν επέλθει από την έκδοση 1.1 στην 1.2 είναι αρκετές και θεμελιώδεις.

1.2 Εσωτερική Δομή:

Η Java ανήκει στην κατηγορία των interpreted γλωσσών. Όταν θα τρέξουμε το πρόγραμμά μας, ο υπολογιστής δεν θα διαβάσει κατ΄ευθείαν ένα binary executable, αλλά μια σειρά εντολών, που με τη σειρά της θα γίνει compiled την ώρα της εκτέλεσης. Εμπειρικά μπορούμε να πούμε, ότι αυτό θα κάνει το πρόγραμμά μας, 10-20 φορές πιο αργό απ΄το αντίστοιχο πρόγραμμα,γραμμένο σε C.

Η Java χρησιμοποιεί μία εικονική μηχανή, ένα Virtual Machine, το οποίο αναλαμβάνει να πάρει τον κώδικα σε μια semi-compiled μορφή (ονομαζόμενη byte code) και κατά την εκτέλεση, να τον μετατρέψει σε machine-dependent κώδικα. Εκτός, όμως, από αυτή τη λειτουργία, το Java Virtual Machine θα μπορούσε να χαρακτηριστεί και ως "κουτί ασφαλείας". Ελέγχει και προστατεύει το πρόγραμμα από τυχόν "παράνομες" κλήσεις, προσπαθώντας να αποτρέψει ένα γενικότερο κακό (π.χ. το πρόγραμμα να απο φασίσει ξαφνικά να φάει όλα τα memory resources του λειτουργικού μας) ή τουλάχιστον να δώσει όσο περισσότερες debugging πληροφοριές γίνεται περί του "τι έγινε" πριν το κακό :)

Εφόσον είναι στην ευθύνη του JVM να φτιάξει τον κατάλληλο κώδικα για την πλατφόρμα μας... αυτό μας επιτρέπει να κυκλοφορούμε από μηχάνημα σε μηχάνημα με τον ίδιο :) Java semi-compiled κώδικα. Με άλλα λόγια, παίρνουμε τον πηγαίο κώδικά μας, τον κάνουμε compile με κάποιο εργαλείο (όπως το javac) που φτιάχνει "byte-code" κώδικα, και το νέο αρχείο με κατάληξη ".class" μπορούμε να το τρέξουμε κάτω από οποιοδήποτε JVM είτε αυτό βρίσκεται σε PC, είτε σε SUN-ακι είτε σε κάποια άλλη supported πλατφόρμα...

Το παρακάτω σχήμα δείχνει πώς, κατά την εκτέλεση του προγράμματος, η εφαρμογή βρίσκεται "πάνω" σε έναν JVM, αυτός με τη σειρά του επικοινωνεί με το λειτουργικό σύστημα που με τη σειρά του επικοινωνεί με το hardware.


Εφαρμογή
Java Virtual Machine
Λειτουργικό Σύστημα
Hardware

Επόμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!