Μαθαίνοντας την JAVA – Μέρος 1
Σήμερα θα ξεκινήσουμε το πρώτο μας βοήθημα για την γλώσσα προγραμματισμού Java. Μέσα από μια σειρά εκπαιδευτικών βοηθημάτων που πρόκειται να ακολουθήσουν, θα μάθουμε να γράφουμε κώδικα σε Java, έτσι ώστε τελικώς να είμαστε σε θέση να δημιουργούμε πλήρες προγράμματα χρησιμοποιώντας τη συγκεκριμένη γλώσσα προγραμματισμού.
Η συγκεκριμένη σειρά βοηθημάτων, δεν απευθύνεται αποκλειστικά σε έμπειρους προγραμματιστές, αλλά πιστεύω πως θα φανεί ιδιαίτερα χρήσιμη σε άτομα που μόλις τώρα ξεκινούν, και τα οποία ψάχνουν από κάπου για να κάνουν τα πρώτα τους βήματα. Θα ξεκινήσουμε πραγματικά απ’ το μηδέν, έτσι ώστε ακόμη και ο πιο αρχάριος να είναι σε θέση να κατανοήσει και να ακολουθήσει τα συγκεκριμένα βοηθήματα βάζοντας έτσι γερές βάσεις για τη συνέχεια.
Σκοπός του σημερινού μας βοηθήματος είναι να ξεκαθαρίσουμε στο μυαλό μας τι είναι το λογισμικό, τι είναι ο μεταγλωττιστής, τι συμβαίνει κατά τη διαδικασία μεταγλώττισης κάποιου κώδικα, και τι το διαφορετικό συμβαίνει κατά τη διάρκεια αυτής της διαδικασίας στην Java. Όπως καταλαβαίνεις, το σημερινό μάθημα θα αναλωθεί κυρίως σε μπλα μπλα και θεωρία, είναι όμως απαραίτητο να κατανοήσουμε εξ αρχής κάποια βασικά πράγματα.
Ας ξεκινήσουμε λοιπόν!
Τι ονομάζουμε Λογισμικό
Ένας υπολογιστής θα ήταν πραγματικά άχρηστος χωρίς την ύπαρξη κάποιον εντολών οι οποίες να τον καθοδηγούν. Πολλές εντολές μαζί, αποτελούν ένα πρόγραμμα. Ως Λογισμικό ονομάζουμε ένα μεμονωμένο πρόγραμμα ή ακόμη και ένα γκρούπ προγραμμάτων.
Βασικά, υπάρχουν δύο ειδών Λογισμικά:
1. Λογισμικό Εφαρμογών – ονομάζονται όλα τα προγράμματα που εξυπηρετούν άμεσα τον χρήστη σε κάποια ανάγκη του, όπως για παράδειγμα εφαρμογές επεξεργασίας κειμένου, προγράμματα ζωγραφικής, παιχνίδια κτλ.
2. Λογισμικό Συστήματος – είναι μια κατηγορία προγραμμάτων τα οποία έχουν ως βασικό τους στόχο να συντονίζουν τον υπολογιστή και τα υποσυστήματα του. Παράδειγμα Λογισμικού Συστήματος είναι τα Λειτουργικά Συστήματα (Windows, Linux κτλ).
Τόσο τα Λογισμικά Εφαρμογών, όσο και τα Λογισμικά Συστήματος, είναι προγράμματα τα οποία είναι φτιαγμένα απο πολλές εντολές. Η διαδικασία σύνταξης αυτών τον εντολών ονομάζεται «προγραμματισμός». Όλες οι εντολές που αποτελούν ένα λογισμικό, γράφονται σε κάποια γλώσσα προγραμματισμού. Υπάρχουν αρκετές γλώσσες προγραμματισμού όπως για παράδειγμα C, C++, Visual Basic, Pascal, Java, και πολλές πολλές άλλες. Ανάλογα με το λογισμικό που θέλει να γράψει κάποιος, μπορεί να επιλέξει την πιο κατάλληλη γλώσσα προγραμματισμού που θα ήταν προτιμότερο να χρησιμοποιήσει στη συγκεκριμένη περίπτωση.
Η Java, είναι μια αρκετά εξελισσόμενη και αντικειμενοστραφής γλώσσα προγραμματισμού. Η λέξη «αντικειμενοστραφής», ίσως προς το παρόν να μην σου λέει απολύτως τίποτα, αργότερα όμως σε μελλοντικά βοηθήματα, θα κατανοήσεις πλήρως την δυναμική και τη σημασία που έχει στη δημιουργία λογισμικού.
Τι είναι η μεταγλώττιση ενός προγράμματος;
Σε όλες τις σύγχρονες γλώσσες προγραμματισμού συμπεριλαμβανομένης και της Java, η σύνταξη των εντολών που αποτελούν ένα πρόγραμμα γίνεται χρησιμοποιώντας κοινές αγγλικές λέξεις οι οποίες είναι καθορισμένες από το λεξιλόγιο της εκάστοτε γλώσσας προγραμματισμού. Για παράδειγμα στη Java μερικές από αυτές τις λέξεις-κλειδιά που μπορούν να χρησιμοποιηθούν κατα τον προγραμματισμό είναι: while, if, case.
Ένας υπολογιστής όμως, το μόνο που είναι σε θέση να κατανοεί είναι η γλώσσα μηχανής, η οποία δεν είναι τίποτα περισσότερο από μια ακολουθία χαρακτήρων 0 και 1. Έτσι δεν υπάρχει περίπτωση άμεσα να αντιλαμβάνεται το νόημα αυτών των λέξεων και κατ’ επέκταση των εντολών που γράφονται από τον προγραμματιστή. Εδώ αναλαμβάνει δράση ο μεταγλωττιστής (compiler), ο οποίος αναλαμβάνει να μεταφράσει τον πηγαίο κώδικα (έτσι ονομάζουμε τον κώδικα κάποιου προγράμματος) που έχει γράψει ο προγραμματιστής , σε γλώσσα μηχανής έτσι ώστε να γίνεται κατανοητή από τον υπολογιστή.
Ας το δούμε πιο αναλυτικά στο παρακάτω σχεδιάγραμμα.
Αφού λοιπόν ο προγραμματιστής γράψει μια σειρά από εντολές και φτιάξει ένα πρόγραμμα σε κάποια γλώσσα προγραμματισμού υψηλού επιπέδου, στη συνέχεια, χρησιμοποιώντας τον μεταγλωττιστή (compiler) της συγκεκριμένης γλώσσας, θα το μεταγλωττίσει και τότε θα παραχθούν κάποια νέα αρχεία τα οποία θα είναι σε γλώσσα μηχανής. Αυτά τα νέα αρχεία, είναι στην ουσία το εκτελέσιμο πρόγραμμα, και θα μπορεί να τρέξει στον υπολογιστή του ή και σε άλλους υπολογιστές του ίδιου τύπου. Το μόνο που θα χρειάζεται πλέον κάποιος για να εκτελέσει το συγκεκριμένο πρόγραμμα, θα είναι το αποτέλεσμα της μεταγλώττισης του, και όχι τον πηγαίο κώδικα που έχει γράψει αρχικά ο προγραμματιστής.
Διαδικασία μεταγλώττισης στην Java
Στις περισσότερες γλώσσες προγραμματισμού, η μεταγλώττιση γίνεται ακριβώς όπως στο πιο πάνω παράδειγμα. Εδώ όμως δημιουργείται το εξής θέμα. Αφού μεταγλωττιστεί κάποιο πρόγραμμα για κάποιου συγκεκριμένου τύπου υπολογιστή, αυτό θα είναι εκτελέσιμο μόνο σε άλλους υπολογιστές του ίδιου τύπου. Δηλαδή για παράδειγμα κάποιο πρόγραμμα που είναι μεταγλωττισμένο για PC, μπορεί να εκτελεστεί μόνο σε PC και όχι σε μηχανές MAC ή UNIX.
Εδώ ακριβώς βρίσκεται και η διαφορά της Java, που ο άμεσος σκοπός και στόχος της ήταν να ανεξαρτητοποιηθεί από την μηχανή στην οποία εκτελείτε ο κώδικας της, και να μπορεί το ίδιο μεταγλωττισμενο πρόγραμμα να τρέχει σε υπολογιστές οποιασδήποτε αρχιτεκτονικής.
Πως το πετυχαίνει αυτό; Η απάντηση βρίσκεται στο γεγονός ότι η Java, προσθέτει ένα επιπλέον επίπεδο μεταξύ του μεταγλωττισμένου προγράμματος, και του υπολογιστή στον οποίο πρόκειται να εκτελέσει το πρόγραμμα. Έτσι λοιπόν, κατά τη διαδικασία της μεταγλώττισης, δεν παράγεται κώδικας σε γλώσσα μηχανής ο οποίος θα είναι εκτελέσιμος αποκλειστικά μόνο σε ενός είδους μηχανές, αλλά παράγεται κάποιος ενδιάμεσος κώδικας ο οποίος ονομάζεται «Java bytecode». Ο κάθε ένας υπολογιστής για να είναι σε θέση να τρέξει κάποιο πρόγραμμα που είναι γραμμένο σε Java, θα πρέπει να έχει στον υπολογιστή του εγκαταστημένη την Java Virtual Machine (JVM) η οποία την στιγμή της εκτέλεσης αναλαμβάνει να μεταφράσει τα «Java bytecodes» στη γλώσσα μηχανής του είδους του υπολογιστή στον οποίο εκτελείτε. Με αυτό τον τρόπο, ο ίδιος κώδικας είναι εκτελέσιμος σε οποιουδήποτε είδους μηχανή, φτάνει αυτή να έχει εγκαταστημένη την JVM.
Αυτή τη διαδικασία μπορούμε να τη δούμε αναλυτικά στο παρακάτω σχεδιάγραμμα.
Αυτά τα λίγα για σήμερα. Ελπίζω να ήμουν αρκετά κατανοητός, βοηθώντας σε έτσι να κάνεις τα πρώτα σου βασικά αλλά σημαντικά βήματα. Για οποιεσδήποτε προτάσεις, σχόλια ή και απορίες μπορείς να χρησιμοποιήσεις την φόρμα σχολίων που θα βρείς στο τέλος της σελίδας.
Θα τα πούμε και πάλι σύντομα.





Ευχαριστο πολλυ.