Μετάβαση στο περιεχόμενο

Java

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Αυτή είναι μια παλιά έκδοση της σελίδας, όπως διαμορφώθηκε από τον Javaneze~elwiki (συζήτηση | συνεισφορές) στις 23:54, 17 Ιανουαρίου 2006 (Ιστορία της Java). Η τρέχουσα διεύθυνση (URL) είναι μόνιμος σύνδεσμος προς αυτή την έκδοση, που μπορεί να διαφέρει σημαντικά από την τρέχουσα έκδοση.
(διαφ.) ← Παλαιότερη έκδοση | Βλέπε τελευταία έκδοση (διαφ.) | Νεότερη έκδοση → (διαφ.)

Eισαγωγή

Όσοι ασχολούντε με τον προγραμματισμό, επαγγελματίες και μη, έχουνε aκούσει για τη γλώσσα προγραμματισμού Java. Όλα ξεκίνησαν απο τη διάσημη εταιρία στο χώρο της πληροφορικής Sun Microsystems. Ήταν αρχές του 1991 όταν στη Sun αναζητούσαν το κατάλληλο εργαλείο για ν' αποτελέσει την πλατφόρμα ανάπτυξης λογισμικού σε μικρο-συσκευές (έξυπνες οικιακές συσκευές εως πολύπλοκα συστήματα παραγωγής γραφικών). Τα εργάλεια της εποχής τα οποία πέρασαν από την «πασαρέλα» των υποψηφίων ηταν γλώσσες όπως η C++ και η C. Μετά απο διάφορους πειραματισμούς αποφάνθηκαν οτι οι υπάρχουσες γλώσσες δεν μπορούσαν να καλύψουν τις ανάγκες τους! Ο πατέρας της Java, James Gosling που εργαζόταν εκείνη την εποχή για την Sun, έκανε ήδη πειραματισμούς πάνω στη C++ και είχε παρουσιάσει κατά καιρούς κάποιες πειραματικές γλωσσες(C++ ++) ως πρότυπα για το νέο εργαλείο που αναζητουσαν στην Sun. Τελικα μετα απο λίγο καιρό κατέληξαν με μια πρόταση για το επιτελείο της εταιρίας, ήταν η γλωσσα Oak. Το όνομά της το πήρε απο το ομώνυμο δένδρο (βελανιδιά) το οποίο ο Gosling είχε έξω απο το γραφείο του και έβλεπε κάθε μέρα!


Από την Oak στη Java

H Oak ήταν μία γλώσσα που διατηρούσε μεγάλη συγγένεια με την C++. Παρολά αυτά είχε πολυ πιο έντονο αντικειμονοστραφή χαρακτήρα σε σχέση με την C++ και χαρακτηριζόταν για την απλότητα της. Σύντομα οι υπεύθυνοι ανάπτυξης της νέας γλώσσας ανακάλυψαν ότι το όνομα Oak ήταν ήδη κατοχυρωμένο οπότε κατά την διάρκεια μίας εκ' των πολλών συναντήσεων σε κάποιο τοπικό καφενείο αποφάσισαν να μετονομάσουν το νέο τους δημιούργημα σε Java που εκτός των άλλων ήταν το όνομα αγαπητού καφέ για τους δημιουργούς της (Java στην αγγλική γλώσσα είναι το φυτό που βγάζει τον καφέ)! Η επίσημη εμφάνιση της Java αλλα και του HotJava (πλοηγός με υποστήριξη Java) στη βιομηχανία της πληροφορικής έγινε το Μάρτιο του 1995 όταν η Sun την ανακοίνωσε στο συνέδριο Sun World 1995. O πρώτος αποδελτιωτής (compiler) της ήτανε γραμμένος στη γλώσσα C από τον James Gosling. Το 1994 ο A.Van Hoff ξαναγράφει τον αποδελτιωτή της γλώσσας σε Java (από τα πλεόν δύσκολα επιτεύγματα στο χώρο της πληροφορικής είναι να γράψεις έναν αποδελτιωτή μίας γλώσσας στην ίδια τη γλώσσα), ενώ το Δεκέμβριο του 1995 πρώτες οι IBM, Borland, Mitsubishi Electronics, Sybase και Symantec ανακοινώνουνε σχέδια να χρησιμοποιήσουνε τη Java για την δημιουργία λογισμικού. Από εκεί και πέρα η Java ακολουθεί μία ανοδική πορεία και είναι πλέον μία από τις πιο δημοφιλείς γλώσσες στον χώρο της πληροφορικής.


Τα χαρακτηριστικά της Java

Τί κάνει όμως τη Java τόσο δημοφιλή; Ένα από τα βασικά πλεονεκτήματα της Java έναντι των περισσότερων άλλων γλωσσών είναι η ανεξαρτησία του λειτουργικού συστήματος και πλατφόρμας. Τα προγράμματα που είναι γραμμένα σε Java τρέχουνε ακριβώς το ίδιο σε Windows, Linux, Unix και Macintosh (σύντομα θα τρέχουνε και σε Playstation καθώς και σε άλλες παιχνιδομηχανές) χωρίς να χρειαστεί να ξαναγίνει διάταξη αποδελτίωσης (compiling) ή να αλλάξει ο πηγαίος κώδικας για κάθε διαφορετικό λειτουργικό σύστημα. Για να επιτευχθεί όμως αυτό χρειαζόταν κάποιος τρόπος ετσι ώστε τα προγράμματα γραμμενα σε Java να μπορουν να είναι «κατανοητά» από κάθε υπολογιστή αναξάρτητα του είδους επεξεργαστή (Intel x86, IBM, Sun SPARC, Motorola) αλλα και λειτουργικού συστήματος (Windows, Unix, Linux, Unix, MacOS). Ο λόγος είναι ότι κάθε κεντρική μονάδα επεξεργασίας μπορεί και «καταλαβαίνει» διαφορετικό assembly κώδικα. Ο συναρμολογούμενος (assembly) κώδικας που τρέχει σε Windows είναι διαφορετικός από αυτόν που τρέχει σε ένα Macintosh. Η λύση δόθηκε με την ανάπτυξη της Εικονικής Mηχανής (Virtual Machine ή VM ή ΕΜ στα ελληνικά).


H εικονική μηχανή της Java

Τι κάνει λοιπόν το Java Virtual Machine; Αφου γραφτεί κάποιο πρόγραμμα σε Java τότε γίνεται compile μέσω του Java compiler (javac), εκείνος με την σειρά του δίνει ένα αριθμό απο .class αρχεια (=bytocode). Το bytecode είναι η μορφή που παίρνει ο πηγαίος κώδικας της Java όταν έρθει σε μία διάταξη αποδελτίωσης) αναλόγως με το πόσες κλάσεις έχουνε γραφτεί για την εφαρμογή. Οταν προσπαθήσουμε λοιπόν να εκτελέσουμε την εφαρμογή μας το Java Virtual Machine που πρέπει να είναι εγκατεστημένο στο μηχάνημά μας, θα αναλάβει να διαβάσει τα .class αρχεία και να τα μεταφράσει σε γλώσσα και εντολές (assembly) που υποστηρίζει το λειτουργικό μας και ο επεξεργαστής μας, έτσι ώστε να εκτελεστεί (να σημειώσουμε εδώ ότι αυτό συμβαίνει με την παραδοσιακή Εικονική Μηχανή (Virtual Machine) . Πιο σύγχρονες εφαρμογές της εικονικής Μηχανής μπορούνε και αποδελτιώνουνε τα πολύχρηστα τμήματα bytecode απ' ευθείας σε ιθαγενή κώδικα (native code) με αποτέλεσμα να βελτιώνεται η ταχύτητα). Χωρίς αυτό δε θα ηταν δυνατή η εκτέλεση λογισμικού γραμμένο σε Java. Πρέπει να πούμε οτι το Virtual Machine ειναι λογισμικό platform specific δηλαδή για κάθε είδος λειτουργικού και ανάλογης τεχνολογίας επεξεργαστή, υπάρχει διαφορετική έκδοση! Έτσι υπάρχουν διαθέσιμες εκδόσεις του για Windows, Linux, Unix, Macintosh, κινητά τηλέφωνα, παιχνιδομηχανές κλπ!


The Java Platform

Ο,τιδήποτε θέλει να κάνει ο προγραμματιστής (ή ο χρήστης) γίνεται μέσω της εικονικής μηχανής. Αυτό βοηθάει στο να υπάρχει μεγαλύτερη ασφάλεια στο σύστημα γιατί η εικονική μηχανή είναι υπεύθυνη για την επικοινωνία χρήστη - υπολογιστή. Ο προγραμματιστής δεν μπορεί να γράψει κώδικα ο οποίος θα έχει καταστροφικά αποτελέσματα για τον υπολογιστή γιατί η εικονική μηχανή θα τον ανιχνεύσει και δε θα επιτρέψει να εκτελεστεί. Από την άλλη μεριά ούτε ο χρήστης μπορεί να κατεβάσει «κακό» κώδικα από το δίκτυο και να τον τρέξει. Αυτό είναι ιδιαίτερα χρήσιμο για μεγάλα διανεμειμένα συστήματα όπου πολλοί χρήστες χρησιμοποιούνε το ίδιο πρόγραμμα συγχρόνως.


Ο συλλέκτης σκουπιδιών (Garbage Collector)

Ακόμα μία ιδέα που βρίσκεται πίσω από τη Java είναι η ύπαρξη του συλλέκτη σκουπιδιών (Garbage Collector). Σύλλεξη σκουπιδιών είναι μία κοινή ονομασία που χρησιμοποιείται στον τομέα της πληροφορικής για να δηλώσει την ελευθέρωση τμημάτων μνήμης από δεδομένα που δε χρειάζοντε και δε χρησιμοποιούντε άλλο. Αυτή η απελευθέρωση μνήμης στη Java είναι αυτόματη και γίνεται μέσω του συλλέκτη απορριμάτων. Υπεύθυνη για αυτό είναι και πάλι η εικονική μηχανή η οποία μόλις «καταλάβει» ότι η στοίβα (heap) της μνήμης (στη Java η συντριπτική πλειοψηφία των αντικειμένων αποθηκεύοντε τη στοίβα σε αντίθεση με τη C++ που αποθηκεύοντε κυρίως στο σωρό - stack) κοντεύει να γεμίσει ενεργοποιεί το συλλέκτη απορριμάτων. Έτσι ο προγραμματιστής δε χρειάζεται να ανησυχεί για το πότε και αν θα ελευθερώσει ένα συγκεκριμένο τμήμα της μνήμης, ούτε και για δείκτες (pointers) που εστιάζουνε σε άδειο κουτάκι μνήμης. Αυτό είναι ιδιαίτερα σημαντικό αν σκεφτούμε ότι ένα μεγάλο ποσοστό κατάρρευσης των προγραμμάτων οφείλονται σε λάθος χειρισμό της μνήμης.


Eπιδόσεις

Πάντως τίποτα σε αυτόν τον κόσμο δεν έρχεται χωρίς κόστος. Έτσι λοιπόν, παρόλο που η εικονική μηχανή προσφέρει όλα αυτά (και όχι μόνο) τα πλεονεκτήματα, η Java είναι πιο αργή σε σχέση με άλλες προγραμματιστικές γλώσσες υψηλού επιπέδου (high-level) όπως η C και η C++. Έχει αποδειχτεί ότι η C++ μπορεί να είναι αρκετές φορές γρηγορότερη από τη Java. Ευτυχώς γίνοντε φιλότιμες προσπάθειες από τη Sun για τη βελτιστοποίηση της εικονικής μηχανής, ενώ και διάφορες άλλες πραγματοποιήσεις της εικονικής μηχανής υπάρχουνε από διάφορες άλλες εταιρίες (όπως IBM) οι οποίες μπορεί σε κάποια σημεία να προσφέρουνε καλύτερα και σε κάποια άλλα χειρότερα αποτελέσματα. Επιπλέον με τον ερχομό των JIT (Just In Time) compilers, οι οποίοι μετατρέπουνε το bytecode απ' ευθείας σε γλώσσα μηχανής, η διαφορά ταχύτητας από τη C++ έχει μικρύνει κατά πολύ.Οι τελευταίες εκδόσεις του Java Compiler με την χρήση της τεχνολογίας Hot Spot καταφέρνει να παρέχει αξιόλογες επιδόσεις που πλησιάζουν ή και περνάνε σε μερικές περιπτώσεις native κώδικα.


Εργαλεία ανάπτυξης

Όλα τα εργαλεία που χρειάζεται κάποιος για να γράψει Java προγράμματα έρχοντε δωρεάν. Από περιβάλλον ανάπτυξης μέχρι build εργαλεία και βιβλιοθήκες. Ευτυχώς η Sun και οι υπόλοιπες εταιρίες είναι αρκετά γενναιόδωρες ώστε να μας τα παρέχουνε χωρίς χρέωση. Όπως είπαμε και πιο πάνω υπάρχουνε πολλές διαφορετικές εφαρμογές της Εικονικής Μηχανής και του compiler της Java. Είναι στο χέρι του καθενός να επιλέξει το κατάλληλο περιβάλλον. Πάντως ο δικτυακός τόπος της Sun είναι ένα καλό σημείο για να αρχίσει κάποιος. Η Εικονική Μηχανή και ο compiler μπορούνε να βρεθούνε στο επίσημο site της Sun Microsystems Java Sun όπου θα συνιστούσαμε να κατεβάσετε τις τελευταίες εκδόσεις (1.5.0) καθώς και τα συνοδευτικά έγγραφα (documentation) διότι είναι αρκετά κατατοπιστικά. Προσοχή, και τα τρία αρχεία είναι αρκετά μεγάλα σε μέγεθος, οπότε χρήστες με αργή σύνδεση θα πρέπει να περιμένουνε ώρα.


Σύνθετο περιβάλλον ανάπτυξης (IDE)

Για να να γράψει κάποιος Java κώδικα δε χρειάζεται τίποτα άλλο παρά έναν επεξεργαστή κειμένου όπως notepad ή emacs αλλά ένα ολοκληρωμένο περιβάλλον ανάπτυξης βοηθάει πολύ, ιδιαίτερα στον εντοπισμό σφαλμάτων. Υπάρχουνε αρκετά διαθέσιμα, πολλά από αυτά έρχονται δωρεάν. Μερικά από αυτά είναι το Jcreator(Windows μόνο), το Jedit, το Eclipse, το Netbeans και ο Jbuilder.

Α.Π, Π.Κ The Java Hellenic User Group

The Java Hellenic User Group