ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΑΤΙΚΩΝ ΑΝΟΙΚΤΟΥ ΚΩΔΙΚΑ ΓΙΑ ΠΑΙΓΝΙΑ» ΜΟΥΤΙΔΗΣ ΗΡΑΚΛΗΣ Επιβλέπων καθηγητής: Σταμέλος Ιωάννης Θεσσαλονίκη, Ιούνης 2013

2 Πρόλογος Η εργασία αυτή αποτελεί την πτυχιακή εργασία του Ηρακλή Μουτίδη και εκπονήθηκε στα πλαίσια του προπτυχιακού προγράμματος σπουδών του τμήματος Πληροφορικής του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης. Η εκπόνησή της πραγματοποιήθηκε το ακαδημαϊκό έτος Θα ήθελα να ευχαριστήσω θερμά τους επιβλέποντες την πτυχιακή μου εργασία, καθηγητή του Τμήματος Πληροφορικής ΑΠΘ, κ. Ιωάννη Σταμέλο και τον υποψήφιο διδάκτορα Απόστολο Κρητικό για την πολύτιμη καθοδήγησή τους, την άριστη συνεργασία κατά την πραγματοποίηση της εργασίας και για την μεγάλη υπομονή τους. Επίσης θα ήθελα να ευχαριστήσω θερμά όλους τους συναδέλφους που εργάζονταν εκείνη την περίοδο στο εργαστήριο τεχνολογίας λογισμικού του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης για την πολύτιμη τεχνική υποστήριξη που μου προσέφεραν. Τέλος, θα ήθελα να ευχαριστήσω την οικογένεια μου για την διαρκή στήριξη. Θεσσαλονίκη

3 Περιεχόμενα Πρόλογος Εισαγωγή Περιγραφή Στόχοι Εργασίας ομή Εργασίας Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ) Ιστορικό του Ελεύθερου Λογισμικού/Λογισμικού Ανοιχτού Κώδικα Ορισμοί του ελεύθερου λογισμικού/λογισμικού Ανοιχτού Κώδικα Ελεύθερο λογισμικό ή λογισμικό ανοιχτού κώδικα; Τα Υπόλοιπα ήδη λογισμικού ως προς τον τύπο των αδειών χρήσης τους Λίστα Αδειών Χρήσης Κατηγοριοποίηση Αδειών Ποιος το αναπτύσσει Η Γλώσσα προγραμματισμού Java Η ιστορία της Java Τα βασικά χαρακτηριστικά της Java Τα Κυριότερα Εργαλεία της Java Επαναχρησιμοποίηση κώδικα (Software reuse) Τι είναι το Software reuse Επίπεδα software reuse Τύποι software reuse Πλεονεκτήματα και μειονεκτήματα του software reuse Παραδείγματα software reuse Το project OPEN-SME (Open-Source Software Reuse Service for Small-Medium Enterprises) Τι είναι το OPEN-SME Εργαλεία του OPEN-SME COPE... 48

4 3 6. Πειραματική μελέτη Πεδίο εφαρμογής (domain) Java Card Games Έργα προς μελέτη Αποτελέσματα ανά έργο Four Row Solitare CoincheBox Jskat Jokers BlackJack Συμπεράσματα Βιβλιογραφεία

5 1. Εισαγωγή 1.1 Περιγραφή - στόχοι εργασίας Αρχικά, ο φοιτητής καλείται να γνωρίσει τα εργαλεία που πρόκειται να χρησιμοποιήσει, τα οποία αποτελούν μέρος της πλατφόρμας OPEN-SME ( και να εκπαιδευτεί στον ορθό τρόπο χρήσης τους. Στη συνέχεια καλείται να εφαρμόσει τα εργαλεία αυτά σε έργα Ελεύθερου Λογισμικού και Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) των οποίων ο πηγαίος κώδικας είναι γραμμένος σε γλώσσα Java και που ανήκουν σε συγκεκριμένο πεδίο εφαρμογής (στην παρούσα εργασία Java Card Games) με στόχο την εξαγωγή συστατικών λογισμικού (software components). Τέλος, τα συστατικά λογισμικού που προέκυψαν στο προηγούμενο βήμα θα πρέπει να αντιμετωπισθούν ως ξεχωριστές εφαρμογές και να τεκμηριωθούν ως προς τη λειτουργικότητά τους (component characterization). 1.2 ομή εργασίας Στα κεφάλαια 1 έως 5 γίνεται περιγραφή των βασικών εννοιών και εργαλείων που χρησιμοποιούνται ή εξετάζονται σ αυτήν την εργασία. Στο κεφάλαιο 2, το ελεύθερο λογισμικό και το λογισμικό ανοιχτού κώδικα (ΕΛ/ΛΑΚ) όπου είναι το είδος των έργων που χρησιμοποιήσαμε.

6 5 Στο κεφάλαιο 3, η γλώσσα προγραμματισμού Java στην οποία είναι γραμμένος ο πηγαίος κώδικας των έργων που χρησιμοποιήσαμε. Στο κεφάλαιο 4, η έννοια του Software Reuse, που είναι κατ ουσία ο σκοπός της εργασίας Στο κεφάλαιο 5 με την πλατφόρμα OPEN-SME που είναι το μέσο-εργαλείο με το οποίο πήραμε τα συστατικά λογισμικού που μελετήσαμε στο πειραματικό κομμάτι της εργασίας. Στο κεφάλαιο 6 πραγματοποιείται το πειραματικό σκέλος της εργασίας. Χρησιμοποιούνται συγκεκριμένα έργα λογισμικού από το πεδίο Java Games Development και γίνεται τεκμηρίωση ως προς την λειτουργικότητά των συστατικών λογισμικού που θα προκύψουν από αυτά τα έργα. Στο κεφάλαιο 7 αποτυπώνονται διάφορα συμπεράσματα και παρατηρήσεις που αφορούν το σύνολο της εργασίας Στις τελευταίες σελίδες παρατίθεται η βιβλιογραφία χρησιμοποιήθηκε για την εκπόνηση της πτυχιακής. 6

7 2. Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ) [1] 2.1 Ιστορικό του Ελεύθερου Λογισμικού/Λογισμικού Ανοιχτού Κώδικα.[2] Στη δεκαετία του 1960, η έννοια του προσωπικού υπολογιστή δεν υπήρχε ακόμα και οι υπολογιστές χρησιμοποιούνται κυρίως από στρατιωτικές υπηρεσίες και πανεπιστήμια. Η έννοια του λογισμικού έμπαινε σε δεύτερη μοίρα και δεν υπήρχε ακόμα η ιδέα για εμπορική εκμετάλλευση του. Το κερδοφόρο μέρος των υπολογιστών ήταν τα μηχανήματα (υλικό/hardware). Υπήρχαν πολλοί κατασκευαστές υπολογιστών, οι οποίοι είχαν όλοι διαφορετικά μηχανήματα που στηρίζονταν πάνω σε διαφορετικές αρχιτεκτονικές κατασκευής και διαφορετικά λειτουργικά συστήματα. Αυτό σήμαινε ότι το λογισμικό που γράφτηκε για έναν τύπο υπολογιστή, δεν μπορούσε να τρέξει σε άλλον τύπο άλλης εταιρείας. Για να τρέξει το λογισμικό σε άλλο τύπο υπολογιστών θα έπρεπε να ξαναγραφτεί για να γίνει συμβατό. Αυτή η διαδικασία ήταν πολύ χρονοβόρα και ασύμφορη οικονομικά. Αυτές οι ασυμβατότητες εμπόδιζαν την τεχνολογία από το να προχωρήσει κυρίως λόγω του μεγάλου κόστούς. Η λύση στο πρόβλημα αυτό ήρθε το 1969 στο Νιου Ζέρσεϊ όταν ο Dennis Ritchie και ο Ken Thompson της ΑΤ&T Βell Labs ανέπτυξαν ένα λειτουργικό σύστημα, με το όνομα Unix, το οποίο ήταν συμβατό με διαφορετικές αρχιτεκτονικές υπολογιστών. Το λειτουργικό αναπτύχθηκε αρχικά για χρήση μέσα στην εταιρεία αλλά σύντομα υπήρξε ενδιαφέρον και από αλλού για τη χρήση του. Παρά το γεγονός ότι δεν υπήρχε στόχος το Unix γίνει ποτέ εμπορικό 7

8 προϊόν η AT&T τελικά το έβγαλε στην αγορά μαζί με τον πηγαίο του κώδικα έναντι ενός μικρού αντιτίμου για την άδεια χρήσης του. Ήταν σύνηθες εκείνη την εποχή ο πηγαίος κώδικας να είναι διαθέσιμος για να μπορούν όλοι οι χρήστες να ξέρουν τι συμβαίνει με τον υπολογιστή τους και για να μπορεί ο καθένας να λύσει τα δικά του προβλήματα. Ο καιρός πέρασε και το Unix εξελίχθηκε σε ένα ισχυρό λειτουργικό σύστημα. Από τη στιγμή που μπορούσες να αγοράσεις τον πηγαίο κώδικα πολλά πανεπιστήμια και επιχειρήσεις έφτιαξαν τις δικές τους διανομές Unix σύμφωνα με τις ανάγκες τους και όλες είχαν διαφορετικά εργαλεία και προγράμματα. Αυτές οι διανομές τότε βγήκαν στο εμπόριο όταν η αγορά προσωπικών υπολογιστών άρχισε να μεγαλώνει. Ακολούθως η διαθεσιμότητα του πηγαίου κώδικα άρχισε να εξαφανίζεται. Το Unix μετατράπηκε σε αυτό που ήταν και τα υπόλοιπα διαθέσιμα εμπορικά λειτουργικά, ακριβά και κλειστού κώδικα. Αυτή η εξέλιξη άφησε ένα κενό σε ανθρώπους που θέλανε ένα λειτουργικό σύστημα, ισχυρό, με χαμηλό κόστος και διαθέσιμο λειτουργικό κώδικα. Την λύση την έδωσε αργότερα to 1979 ο Richard Stallman που εκείνη την εποχή δούλευε στα εργαστήρια του MIT. Την ίδια χρονιά Το εργαστήριο παρέλαβε τον πρώτο εκτυπωτή laser από την Xerox. Παρά το γεγονός ότι ο εκτυπωτής ήταν καλός συνήθιζε να πετάει το χαρτί. Αυτό δεν ήταν δύσκολο να λυθεί και ο Stallman σκέφτηκε να το λύσει μόνος του όπως συνηθιζόταν τότε στα εργαστήρια του MIT. Αυτό που χρειαζόταν ήταν ο πηγαίος κώδικας του προγράμματος οδήγησης του εκτυπωτή για να το διορθώσει. Όταν το ζήτησε από την XEROX το αίτημα του απορρίφθηκε. Αυτό οδήγησε τον Stallman να πιστέψει ότι το λογισμικό θα πρέπει να είναι ελεύθερο. Ακολούθως ο Stallman παραιτήθηκε από το MIT για να ασχοληθεί με την δημιουργία ελεύθερου λογισμικού. Ίδρυσε το Ίδρυμα Ελεύθερου Λογισμικού το Κάποια από τα πιο δημοφιλή προϊόντα που προήλθαν από το ίδρυμα του είναι τα GNU που ήταν συλλογές ελεύθερου λογισμικού. Η πιο σημαντική 8

9 όμως προσφορά του Stallman στον κόσμο των υπολογιστών είναι η άδεια GPL. Το Ελεύθερο λογισμικό από μόνο του θα ήταν ευάλωτο και άναρχο. Με τον πηγαίο κώδικα διαθέσιμο δεν θα υπήρχε κανένας τρόπος από το να αποτρέψει οποιονδήποτε να οικειοποιηθεί την δουλεία άλλων και να κερδίσει από αυτήν. Αυτό λύθηκε με την άδεια χρήσης GPL. Η άδεια αυτή διασφάλισε το ελεύθερο λογισμικό και έδωσε συγκεκριμένες ελευθερίες πάνω σε αυτό που θα αναλυθούν με τους ορισμούς του ελεύθερου λογισμικού παρακάτω. Η άδεια δημιούργησε ένα δρόμο και προστάτεψε αυτούς που ήθελαν να δημιουργήσουν ελεύθερο λογισμικό. Επίσης δεν απέτρεψε κανέναν από το να βγάλει χρήματα από το λογισμικό αυτό. Παρ όλες αυτές τις εξελίξεις υπήρχε κάτι ακόμα που έλειπε και αυτό ήταν ένα λειτουργικό σύστημα. Το Ίδρυμα ελεύθερου λογισμικού δούλευε πάνω στο να δημιουργήσει το δικό της λειτουργικό σύστημα αλλά η ανάπτυξη του αργούσε για κάποιους λόγους. Το 1991 η λύση ήρθε ανέλπιστα από έναν 21 χρόνο Φιλανδό φοιτητή του πανεπιστημίου του Ελσίνκι. Το όνομα αυτού Linus Tovalds. Εκείνη τη χρονιά ο Tovalds αγόρασε τον πρώτο του 386 υπολογιστή (η αρχιτεκτονική x86 έγινε αργότερα αυτό που λέγεται σήμερα προσωπικός υπολογιστής). Δεν του άρεσαν το MS-Dos που ήταν κυρίαρχο λειτουργικό εκείνη την εποχή καθώς και τα υπόλοιπα λειτουργικά που ήταν βασισμένα στο Unix ήταν όλα βασισμένα σε εμπορικά πρότυπα και έξω από τις αρχές του ως φοιτητής. Ήθελε ένα λειτουργικό σύστημα παρόμοιο με το Unix που θα είχε ενδιαφέρον να δουλέψει πάνω σε αυτό. Από τη στιγμή που ο προγραμματισμός ήταν το κυριότερο του προσόν ξεκίνησε να γράφει το δικό του λειτουργικό σύστημα σαν χόμπι. Ο Linus Tovalds δημοσίευε τη δουλειά του σε Usenet Groups και με τον καιρό άλλοι ενδιαφερόμενοι άρχισαν να την παρατηρούν. Διάβαζαν τον κώδικα και άρχισαν να προτείνουν αλλαγές και να στέλνουν διορθώσεις και προσθήκες. Ο Tovalds έπαιρνε αυτές τις ιδέες και τις έβαζε στο πρόγραμμά του και έδινε αναφορές και ευχαριστίες σε όσους τις ιδέες χρησιμοποίησε. Αυτή η μέθοδος 9

10 διαδικασίας έπιασε και έτσι βρέθηκαν πολλοί ενδιαφερόμενοι να από όλο τον κόσμο να βοηθήσουν στην ανάπτυξη του. Αργότερα εκείνη την περίοδο ο Tovalds έκδωσε την έκδοση 0.1 του πυρήνα του LINUX. O πυρήνας είναι το κέντρο ενός λειτουργικού συστήματος και ελέγχει τις βασικές λειτουργίες που κάνουν έναν υπολογιστή να δουλέψει. Το Linux έγινε δημοφιλές και όταν βγήκε ή έκδοση 1.0 το 1994 είχε περισσότερους από ένα εκατομμύριο χρήστες σε όλο τον κόσμο. Ο Tovalds διέθεσε το λογισμικό κάτω από την άδεια GPL. Σήμερα υπάρχουν πολλές κοινότητες που αναπτύσσουν διάφορα project στα οποία ασχολούνται χιλιάδες συμμετέχοντες (εταιρείες, απλοί χομπίστες κ.α.) και αναπτύσσουν ελεύθερο λογισμικό. Φυσικά υπάρχουν και εμπορικές δραστηριότητες γύρω από αυτό που θα αναλυθούν σε παρακάτω κεφάλαια. 2.2 Ορισμοί του ελεύθερου λογισμικού/λογισμικού Ανοιχτού Κώδικα.[1],[9] Υπάρχουν δύο όρισμοι. Ένας από το FSF και ένας από το OSI. Οι διαφορές είναι κυρίως ιδεολογικές όπως αναφέρθηκε και στα ιδρύματα. Ο πρώτος σύμφωνα με το ίδρυμα ελεύθερου λογισμικού και σύμφωνα με αυτόν είναι τέσσερις ελευθερίες που καθορίζουν τι είναι ελεύθερο λογισμικό: 1. Η ελευθερία χρήσης του προγράμματος, για οποιονδήποτε σκοπό. 2. Η ελευθερία μελέτης του πώς λειτουργεί το πρόγραμμα, καθώς και η δυνατότητα τροποποίησής του, από τον χρήστη, ανάλογα με τις ανάγκες του. 3. Η ελευθερία αναδιανομής αντιγράφων, προκειμένου να βοηθηθεί ο πλησίον σας. 10

11 4. Η ελευθερία βελτίωσης του προγράμματος και δημόσιας επανέκδοσής του, ώστε όλη η κοινότητα να επωφεληθεί. Οι ελευθερίες αυτές είναι δικαιώματα, όχι υποχρεώσεις, αν και ο σεβασμός προς αυτές, υπέρ της κοινωνίας, ενδέχεται να υποχρεώσουν το άτομο. Κάθε άνθρωπος μπορεί να επιλέξει να μην κάνει χρήση τους, αλλά μπορεί να επιλέξει και τη χρήση όλων των ελευθεριών. Ειδικότερα, πρέπει να γίνει κατανοητό πως το Ελεύθερο Λογισμικό δεν αποκλείει την εμπορική χρήση. Αν ένα πρόγραμμα δεν επιτρέπει την εμπορική χρήση ή την εμπορική διανομή, δεν είναι Ελεύθερο Λογισμικό. Πράγματι, ένας αυξανόμενος αριθμός εταιρειών, βασίζουν το επιχειρηματικό τους μοντέλο ολοκληρωτικά ή μερικώς, σε Ελεύθερο Λογισμικό, μεταξύ αυτών και μερικές από τις μεγαλύτερες κατασκευάστριες ιδιόκτητου λογισμικού. Το Ελεύθερο Λογισμικό καθιστά νόμιμη την παροχή βοήθειας ή υποστήριξης, δεν την καθιστά απαραίτητη. O δεύτερος ορισμός του ανοιχτού κώδικα σύμφωνα με το το OSI (Open source Initiative) λέει ότι ο ανοιχτός κώδικας δεν σημαίνει μόνο την πρόσβαση στον πηγαίο κώδικα αλλά και ότι οι όροι διανομής του λογισμικού ανοιχτού κώδικα πρέπει να συμμορφωθούν με τα ακόλουθα κριτήρια: 1. Ελεύθερη αναδιανομή: Η άδεια δεν θα πρέπει να περιορίζει οποιοδήποτε συμβαλλόμενο μέρος από την πώληση ή να δώσει μακριά το λογισμικό ως μέρος μιας διανομής λογισμικού που περιέχει προγράμματα από διαφορετικές πηγές. Η άδεια δεν θα πρέπει να απαιτεί χρήματα από πνευματικά δικαιώματα η άλλη αμοιβή από μια τέτοια πώληση. 2. Πηγαίος Κώδικας: Το πρόγραμμα πρέπει να περιλαμβάνει τον πηγαίο κώδικα και πρέπει να επιτρέπει τη διανομή σε μορφή κώδικα καθώς και σε μορφή συνταγμένη για να εκτελείται κατευθείαν από το λειτουργικό. Όταν 11

12 σε κάποια μορφή του πρόγραμμα δεν διανέμεται με τον πηγαίο κώδικα, πρέπει να υπάρχει κάποιο καλά-κοινοποιημένο μέσο για την απόκτηση του πηγαίου κώδικα με κόστος όχι μεγαλύτερο από το λογικό για την αναπαραγωγή του, κατά προτίμηση αυτός ο τρόπος να είναι η δυνατή μεταφόρτωση του από το διαδίκτυο χωρίς χρέωση. Ο πηγαίος κώδικας πηγής πρέπει να είναι η προτιμώμενη μορφή με την οποία ένας προγραμματιστής θα τροποποιούσε το πρόγραμμα. Η σκόπιμη αλλαγή του κώδικα για να μην είναι κατανοητός η ασαφής δεν επιτρέπεται. 3. Παραγόμενες εργασίες: Η άδεια πρέπει να επιτρέπει τις τροποποιήσεις και την εξαγωγή παραγόμενων έργων και πρέπει να επιτρέψει σε αυτά να διανεμηθούν υπό τους ίδιους όρους της άδειας που υπόκειται το αρχικό λογισμικό. 4. Ακεραιότητα του πηγαίου κώδικα του συντάκτη: Η άδεια μπορεί να περιορίσει τον πηγαίο-κώδικα από το να διανεμηθεί σε τροποποιημένη μορφή μόνο εάν η άδεια επιτρέπει τη διανομή μικρών αρχείων-προγραμμάτων που να προσθέτουν λειτουργίες μαζί με τον πηγαίο κώδικα με σκοπό την τροποποίηση του λογισμικού στο χρόνο κατασκευής του. Η άδεια πρέπει ρητά να επιτρέπει τη διανομή του λογισμικού που χτίζεται από τον τροποποιημένο κώδικα πηγής. Η άδεια μπορεί να απαιτήσει από τα παραγόμενα έργα να φέρουν διαφορετικό όνομα ή αριθμό έκδοσης από το αρχικό λογισμικό. 5. Καμία διάκριση ενάντια στα πρόσωπα ή ομάδες: Η άδεια δεν πρέπει να κάνει διακρίσεις εις βάρος οποιουδήποτε προσώπου ή ομάδας προσώπων. 12

13 6. Καμία διάκριση ενάντια στους τομείς χρήσης: Η άδεια δεν πρέπει να απαγορεύσει σε κανέναν από τη χρήση του προγράμματος σε ένα συγκεκριμένο τομέα χρήσης. Π.χ δεν μπορεί να μην περιορίσει το πρόγραμμα από τη χρησιμοποίηση σε μια επιχείρηση, ή από τη χρησιμοποίηση για τη γενετική έρευνα. 7. Διανομή της άδειας: Τα δικαιώματα που συνδέονται με το πρόγραμμα πρέπει να ισχύσουν σε όλους, όσους διανέμεται το πρόγραμμα χωρίς την ανάγκη αποδοχής αποδοχής πρόσθετης άδειας από αυτά τα συμβαλλόμενα μέρη. 8. Η άδεια δεν πρέπει να είναι συγκεκριμένη για ένα προϊόν: Τα δικαιώματα που συνδέονται σε ένα πρόγραμμα δεν πρέπει να εξαρτώνται από το γεγονός ότι το πρόγραμμα είναι μέρος μιας ιδιαίτερης διανομής λογισμικού. Εάν το πρόγραμμα είμαι μέρος εκείνης της διανομής και χρησιμοποιείται ή διανέμεται μέ στους όρους της άδειας του προγράμματος, όλα τα συμβαλλόμενα μέρη στα οποία το πρόγραμμα αναδιανέμεται πρέπει να έχουν τα ίδια δικαιώματα όπως εκείνα που χορηγούνται από κοινού με την αρχική διανομή λογισμικού. 9. Η άδεια δεν πρέπει να περιορίσει άλλο λογισμικό: Η άδεια δεν πρέπει να τοποθετήσει τους περιορισμούς σε άλλο λογισμικό που διανέμεται μαζί με το αδειοδοτημένο λογισμικό. Παραδείγματος χάριν, η άδεια δεν πρέπει να επιμείνει ότι όλα τα άλλα προγράμματα που διανέμονται μαζί με το πρόγραμμα ανοιχτού κώδικα στο ίδιο μέσο πρέπει να είναι λογισμικό ανοικτού κώδικα. 13

14 10. Η άδεια πρέπει να είναι τεχνολογικά-ουδέτερη: Καμία παροχή άδειας δεν πρέπει να βασίζεται σε καμία μεμονωμένη τεχνολογία η στυλ απεικόνισης και οργάνωσης δεδομένων. 2.3 Ελεύθερο λογισμικό ή λογισμικό ανοιχτού κώδικα; [9] Το ελεύθερο λογισμικό είναι το λογισμικό στο οποίο η επεξεργασία και αναδιανομή του είναι ελεύθερη. Είναι λογισμικό του οποίου ο πηγαίος κώδικας είναι διαθέσιμος και μπορεί να τροποποιηθεί και να αναδιανεμηθεί. Παρόλα αυτά υπάρχει μια σύγχυση γύρω από τον όρο αυτό. Ελεύθερο λογισμικό δεν σημαίνει απαραίτητα δωρεάν λογισμικό. Επειδή στην αγγλική γλώσσα η λέξη free έχει διπλή σημασία. Free σημαίνει και ελεύθερος αλλά και δωρεάν. Ένα παράδειγμα για να λυθεί η παρερμηνεία αυτή είναι ότι το ελεύθερο λογισμικό είναι ελεύθερο σαν την ελευθερία λόγου (free speech). Το ελεύθερο λογισμικό γίνεται να διανεμηθεί και δωρεάν αλλά και με χρηματικό αντίτιμο, αλλά θα πρέπει πάντα να είναι διαθέσιμος ο πηγαίος κώδικας με στόχο την μελλοντική καινοτομία. Ο όρος Λογισμικό Ανοιχτού Κώδικα είναι ένα όνομα που δόθηκε για λόγους μάρκετινγκ σε μια προσπάθεια να προσπεραστεί η σύγχυση αυτή γύρω από τη λέξη free στην αγγλική γλώσσα. Μπορεί να χρησιμοποιείται σαν όρος μάρκετινγκ γιατί ο όρος ελεύθερος (free) δημιουργούσε προβλήματα όπως ανησυχία και σύγχυση στην επιχειρηματική δραστηριότητα. Μάλιστα σύμφωνα με το OSΙ (Open source Initiative) κατάφερε να αλλάξει σχεδόν ολοκληρωτικά την άσχημη εικόνα που είχε το ελεύθερο λογισμικό έξω από την κοινότητα των προγραμματιστών του. 14

15 2.4 Τα Υπόλοιπα ήδη λογισμικού ως προς τον τύπο των αδειών χρήσης τους. Για την καλύτερη κατανόηση παρακάτω αναφέρονται και υπόλοιπα είδη λογισμικού, ως αναφορά τις άδειες χρήσεις τους, εκτός από το ελεύθερο/ανοιχτού κώδικά. Αυτές συνήθως αναφέρονται στο ιδιωτικό λογισμικό (proprietary) και στις διάφορες μορφές του. Έτσι διακρίνονται τα εξής είδη λογισμικού: Ιδιωτικό (proprietary) λογισμικό ή αλλιώς μη ελεύθερό λογισμικό. Είναι λογισμικό με περιορισμούς στην χρήση, αντιγραφή και τροποποίηση από τον ιδιοκτήτη του. Οι περιορισμοί αυτοί είναι είτε από τεχνικής είτε από νομικής πλευράς πλευρές. Τεχνικοί περιορισμοί αφορούν είτε και από τις δύο την έκδοση του προγράμματος σε μορφή που να διαβάζεται από μηχανήματα και τα δικαιώματα πρόσβασης στον πηγαίο κώδικα. Οι νομικοί περιορισμοί περιλαμβάνουν την άδεια χρήσης του λογισμικού, τα πνευματικά δικαιώματα και το νόμο περί πατεντών λογισμικού. Έτσι το λογισμικό αυτού του είδους είναι το ακριβώς αντίθετο από το ελεύθερο λογισμικό αφού οι ίδιοι νόμοι που χρησιμοποιούνται από μια άδεια μονοπωλιακού λογισμικού χρησιμοποιούνται και από το ελεύθερο λογισμικό για να προστατέψουν τις ελευθερίες χρήσης, αντιγραφής και τροποποίησης του λογισμικού. Το ιδιωτικό λογισμικό επίσης περιλαμβάνει και το freeware και το shareware λογισμικό. Το freeware είναι λογισμικό που διανέμεται δωρεάν αλλά δεν δίνει δικαιώματα τροποποίησης και αναδιανομής στους χρήστες του. 15

16 Το shareware είναι λογισμικό που διανέμεται με άδεια για αναδιανομή αντιγράφων αλλά δίνει περιορισμούς στη χρήση είτε χρονικούς είτε σε λειτουργίες και όποιος θέλει να συνεχίσει να το χρησιμοποιεί θα πρέπει να πληρώσει. Και στα 2 παραπάνω είδη λογισμικού ο πηγαίος κώδικας δεν είναι διαθέσιμος. 2.5 Λίστα Αδειών Χρήσης Μια άδεια για να πιστοποιηθεί θα πρέπει να πληρεί τις προϋποθέσεις του Ορισμού του Ανοιχτού κώδικα του OSI. Οι πιστοποιημένες άδειες από το ίδρυμα OSI είναι: 1. Academic Free License 3.0 (AFL 3.0) 2. Affero GNU Public License 3. Adaptive Public License 4. Apache License, Apple Public Source License 6. Artistic license Attribution Assurance Licenses 8. New and Simplified BSD licenses 9. Boost Software License (BSL1.0) 10. Computer Associates Trusted Open Source License Common Development and Distribution License 12. Common Public Attribution License 1.0 (CPAL) 13. Common Public License CUA Office Public License Version EU DataGrid Software License 16. Eclipse Public License 17. Educational Community License, Version Eiffel Forum License V Entessa Public License 16

17 20. Fair License 21. Frameworx License 22. GNU General Public License (GPL) 23. GNU General Public License version 3.0 (GPLv3) 24. GNU Library or "Lesser" General Public License (LGPL) 25. GNU Library or "Lesser" General Public License version Historical Permission Notice and Disclaimer 27. IBM Public License 28. ISC License 29. Lucent Public License Version Microsoft Public License (Ms-PL) 31. Microsoft Reciprocal License (Ms-RL) 32. MIT license 33. Motosoto License 34. Mozilla Public License 1.1 (MPL) 35. Multics License 36. NASA Open Source Agreement NTP License 38. Naumen Public License 39. Nethack General Public License 40. Nokia Open Source License 41. Non-Profit Open Software License 3.0 (Non-Profit OSL 3.0) 42. OCLC Research Public License Open Group Test Suite License 44. Open Software License 3.0 (OSL 3.0) 45. PHP License 46. Python license (CNRI Python License) 47. Python Software Foundation License 48. Qt Public License (QPL) 49. RealNetworks Public Source License V Reciprocal Public License 1.5 (RPL1.5) 51. Ricoh Source Code Public License 52. Simple Public License Sleepycat License 17

18 54. Sun Public License 55. Sybase Open Watcom Public License University of Illinois/NCSA Open Source License 57. Vovida Software License v W3C License 59. wxwindows Library License 60. X.Net License 61. Zope Public License 62. zlib/libpng license Οι κυριότερες από τις παραπάνω είναι οι εξής: 1) Apache Licence Δημιουργήθηκε από το Apache Foundation και είναι η άδεια υπό την οποία διανέμεται ο εξυπηρετητής HTTP Apache. Είναι μια πολύ αναλυτικά διατυπωμένη άδεια, που ενώ επιτρέπει την αναδιανομή και τροποποίηση του λογισμικού, απαιτεί αυτή να γίνεται υπό την ίδια άδεια, να δείχνονται αναλυτικά ποια αρχεία του πηγαίου κώδικα πείραξε ο χρήστης και απαγορεύει τη χρήση υλικού που σχετίζεται με πατέντες λογισμικού καθώς και τη χρήση ονομάτων και συμβόλων του αρχικού συγγραφέα για διαφημιστικούς σκοπούς. Τέλος, απαλλάσσει το δημιουργό από κάθε ευθύνη σχετική με τη χρήση του προγράμματος. Εκτός από τον Apache, την άδεια χρησιμοποιούν πολλά προγράμματα που σχετίζονται με αυτόν, όπως ο Tomcat. 2) Artistic Licence Την συνέταξε ο συγγραφέας της perl, Larry Wall. Η πρώτη της έκδοση ήταν τόσο περίπλοκα διατυπωμένη που πολλοί την κατηγόρησαν ότι δεν είναι άδεια ελεύθερου λογισμικού. Η γλώσσα προγραμματισμού perl αλλά και πολλά modules της ήταν συνδεδεμένα με αυτήν. Η δεύτερη έκδοση είναι πιο σαφώς διατυπωμένη, και δίδει το δικαίωμα ανάγνωσης, τροποποίησης και αναδιανομής του 18

19 πηγαίου κώδικα/προγράμματος (υπό οποιαδήποτε άδεια), εφόσον διατηρείται η αναφορά στον αρχικό συγγραφέα του προγράμματος, σε περίπτωση που δεν υπάρξει τροποποίηση. Επιπλέον, απαλλάσσει το συγγραφέα από κάθε ευθύνη σχετική με τη χρήση του προγράμματος. Η postgresql διατίθεται υπό αυτήν την άδεια. 3) New BSD Licence Η άδεια αυτή αφορά λογισμικό που αναπτύχθηκε αρχικά στο πανεπιστήμιο Berkeley στην Καλιφόρνια των ΗΠΑ. Είναι μια από τις πιο 'ελεύθερες' άδειες, εφόσον επιτρέπει τροποποίηση και την αναδημοσίευση την ανάγνωση, την του προγράμματος υπό οποιαδήποτε άδεια, με ή χωρίς τον πηγαίο κώδικα, σε εμπορικά ή μη εμπορικά πακέτα. Επιπλέον, υπάρχουν τροποποιήσεις της άδειας, που αφορούν όμως μόνο το θέμα της χρήσης του ονόματος του αρχικού συγγραφέα για διαφημιστικούς σκοπούς. Παράδειγμα προγραμμάτων που τη χρησιμοποιούν είναι όλα τα είδη λειτουργικού BSD (freebsd, netbsd, openbsd) καθώς και οι αρχικές εκδόσεις των προγραμμάτων ηλεκτρονικού σχεδιασμού Spice, Magic και IrSim. Ως αποτέλεσμα της ελευθερίας που δίδει η άδεια για χρήση κώδικα ελεύθερων προγραμμάτων σε ιδιωτικά προγράμματα, πολλά κλειστά λειτουργικά συστήματα έχουν κομμάτια βασισμένα στο BSD (π.χ. μέρος του network API στα Windows 2000 ) και πολλά ιδιωτικά πακέτα ηλεκτρονικού σχεδιασμού βασίζονται στο Spice. Αυτό εκλαμβάνεται σαν ελευθερία από τους οπαδούς της άδειας, αλλά πολλές φορές δρα ανασταλτικά προς την ανάπτυξη του ελεύθερου λογισμικού. 4) GNU General Public Licence (GPL) Γράφτηκε αρχικά από τον Richard Stallman για το GNU project. Επιτρέπει την ανάγνωση, τροποποίηση και αναδιανομή του λογισμικού, μαζί με τον πηγαίο κώδικα του, με τον όρο ότι τροπoποιημένες ή μη εκδόσεις του θα αναδιανέμονται υπό την ίδια άδεια. Εν ολίγης, διασφαλίζει ότι οι χρήστες του τροποποιημένου 19

20 λογισμικού θα απολαμβάνουν τις ίδιες ελευθερίες με το χρήστη του αρχικού λογισμικού. Συνεπώς απαγορεύει την χρήση (ολόκληρου ή τμήματος) του πηγαίου κώδικα του προγράμματος σε κλειστά πακέτα λογισμικού. Αυτό εξασφαλίζεται δίνοντας το copyright του προγράμματος στον αρχικό δημιουργό, οπότε σε περίπτωση που κάποιος δε σεβαστεί την GPL μπορεί να μηνυθεί για καταπάτηση πνευματικών δικαιωμάτων. Η GNU GPL έχει κατηγορηθεί από πολλούς ως "ιός" (επειδή θα πρέπει κάθε πρόγραμμα που έχει σχέση με το αρχικό να τη φέρει) και ότι στερεί τη δημιουργία άμεσου κέρδους στον προγραμματιστή (επειδή μπορεί οποιοσδήποτε να αναδιανείμει το λογισμικό). Παρά τις κριτικές αποτελεί τη σημαντικότερη και πιο διαδεδομένη άδεια ελεύθερου λογισμικού. Σημαντικά προγράμματα που τη χρησιμοποιούν είναι ο πυρήνας του Linux, o μεταγλωττιστής gcc, ο επεξεργαστής κειμένου Emacs, ο διερμηνέας της Perl, o Mozilla Firefox, η ΜySQL, το Cygwin, το σύστημα αρχείων ReiserFS και πλέον και η βιβλιοθήκη Qt. Μια πιο ελαστική έκδοση της GPL είναι η GNU Lesser General Public Licence (LGPL). Μια LGPL βιβλιοθήκη για παράδειγμα, μπορεί να συνδεθεί με ένα πρόγραμμα που χρησιμοποιεί άλλη άδεια, ακόμα και αν αυτό δεν είναι ελεύθερο λογισμικό. H GNU GPL βρίσκεται στη δεύτερη έκδοση, η οποία οριστικοποιήθηκε το Το 2005 άρχισαν συζητήσεις για την τρίτη έκδοση της άδειας, η οποία αναμένεται είτε τον Οκτώβριο του 2006 είτε στις αρχές του 2007 και δίνει ιδιαίτερη έμφαση σε θέματα πατεντών λογισμικού και DRM (Digital Right Marks). Ένα προσχέδιο δόθηκε στις 16 Ιανουαρίου 2006 και ένα ακόμα αναμένεται για τον Ιούλιο του

21 5) MIT Licence H άδεια αυτή επιτρέπει την τροποποίηση και την αναδιανομή του προγράμματος με οποιονδήποτε τρόπο, υπό οποιαδήποτε άδεια, για οποιονδήποτε σκοπό. Το πιο γνωστό πρόγραμμα που τη χρησιμοποιεί είναι ο X Window System (X11) που χρησιμοποιείται για το παραθυρικό περιβάλλον στις περισσότερες διανομές Linux, και γι' αυτό η άδεια αυτή ονομάζεται πολλές φορές και X Licence ή X11 Licence. Άλλα προγράμματα που τη χρησιμοποιούν είναι το Expat, το MetaKit, και το PuTTY. 6) Open Software Licence Ουσιαστικά δίvει τις ίδιες ελευθερίες και τους ίδιους περιορισμούς με την GNU GPL (δλδ. απαιτεί την αναδιανομή υπό την ίδια άδεια) με σημαντική διαφορά τον όρο που αφορά τις πατέντες λογισμικού. Ο όρος αυτός τερματίζει αυτόματα την άδεια και στερεί τον χρήστη από τις ελευθερίες της στην περίπτωση που ο χρήστης μηνύσει οποιοδήποτε λογισμικό που τη χρησιμοποιεί για καταπάτηση πατεντών λογισμικού, που πολλοί πιστεύουν ότι έχουν γίνει επιζήμιες για το ελεύθερο λογισμικό. 2.6 Κατηγοριοποίηση Αδειών Οι άδειες χρήσεως του λογισμικού ανοιχτού κώδικα μπορούν να κατηγοριοποιηθούν σε κάποιες βασικές κατηγορίες ώστε η χρήση, τροποποίηση και διανομή του λογισμικού ανοιχτού κώδικα να ακολουθεί νομικά βάσιμες αρχές. Ιστορικά εμφανίζονται κυρίως τρείς τύποι αδειών: 1. Academic licenses (MIT Athena, Berkeley, and Apache) Δίνουν πλήρη δικαιώματα στον χρήστη του λογισμικού, ακόμα και για να το τροποποιήσει, να το επεκτείνει ή και να το πουλήσει. Δεν απαιτούν το απορρέον επεκταμένο λογισμικό να δίδεται με 21

22 την ίδια άδεια και δεν απαιτούν την κοινοποίηση των αλλαγών ή επεκτάσεων. Με αυτό τον τρόπο εξουσιοδοτούν ιδιόκτητο λογισμικό να εμπεριέχει τέτοιου τύπου άδειας Ανοιχτό Λογισμικό. Το μόνο που απαιτούν είναι να παραμένουν και να αναφέρονται (attribution) τα δικαιώματα του δημιουργού (copyrights). Αποκηρύσσονται οποιασδήποτε εγγύησης για την χρήση του λογισμικού. 2. Free software licenses (General Public License and the LGPL) Αν ο χρήστης επιθυμεί να τροποποιήσει και διανείμει το λογισμικό, τότε όλες οι αλλαγές πρέπει να κοινοποιούνται και το λογισμικό να διανεμηθεί με την ίδια άδεια. Εάν ο χρήστης συμπεριλάβει τέτοιας άδειας λογισμικό μέσα σε λογισμικό που έχει ο ίδιος αναπτύξει, ολόκληρο το απορρέον λογισμικό συμπεριλαμβανόμενου του ιδιόκτητου κώδικα πρέπει να υπαχθεί κάτω από την ίδια άδεια (propagate license). Αποκηρύσσονται οποιασδήποτε εγγύησης για την χρήση του λογισμικού. 3. Mozilla-style licenses (Mozilla, and the IBM licenses) Απαιτεί παράγωγα που προκύπτουν με την προσθήκη λογισμικού να διανέμονται με την ίδια άδεια Eπιτρέπει το λογισμικό να συνδυαστεί με άλλο λογισμικό δημιουργώντας ένα μεγαλύτερο προϊόν το οποίο μπορεί να διανεμηθεί με διαφορετικού τύπου άδεια. Υποστηρίζει έτσι την ανάπτυξη ιδιόκτητου λογισμικού, όπως και στην περίπτωση των Academic Licenses. Συζητά θέματα πατεντών σχετικά με την άδεια του λογισμικού. Αποκηρύσσονται οποιασδήποτε εγγύησης για την χρήση του λογισμικού. 22

23 2.7 Ποιος το αναπτύσσει. Η ανάπτυξη του Ελ/λακ γίνεται από κοινότητες. Οι κοινότητες αποτελούνται από απλούς προγραμματιστές, απλούς χρήστες του και από εταιρείες που συμβάλλουν και αυτές. Για τους ιδιώτες προγραμματιστές η συμμετοχή σε κοινότητες ΕΛΛΑΚ και η δημιουργία του θεωρείται από τον περισσότερους ερευνητές ως μια ιδιωτική ασχολία. Απλοί ιδιώτες προσφέρουν στα έργα ΕΛΛΑΚ για δικούς τους λόγος είτε αυτό είναι γιατί τους αρέσει, είτε γιατί πιστεύουν ότι έχουν κάτι να κερδίσουν από αυτό είτε γιατί η δραστηριότητα τους φέρνει έμμεσες κέρδη στην αγορά. Πχ. Η συμμετοχή ενός προγραμματιστή σε έργα ΕΛΛΑΚ ανεβάζει την εικόνα του στη κοινότητα και μπορεί να του δώσει πρόσβαση σε δουλείες προγραμματισμού. (Raymond, 2000). Τα μεγαλύτερα κίνητρα για τη συμμετοχή σε ένα έργο ΕΛΛΑΚ για τους ιδιώτες είναι: η ανάπτυξη νέων ικανοτήτων στο προγραμματισμό και ο διαμοιρασμός της γνώσης τους σε όλους. Επίσης σημαντικό κίνητρο είναι η βελτίωση των ευκαιριών τους για δουλεία. (Ghosh et al., 2002). Ένα μέρος της κοινότητας αποτελείται από ιδιώτες που έχουν προσληφθεί αποκλειστικά από εταιρείες για να αναπτύσσουν ελεύθερο λογισμικό. Ο Gosh et al. (2002) σημειώνει ότι περίπου το 1/3 των ερωτηθέντων της έρευνας του πληρώνονται μόνο για να αναπτύσσουν Ελ/λακ. Αυτό είναι μια απόρροια των αποφάσεων εταιρειών να χρηματοδοτήσουν το ελεύθερο λογισμικό. Επίσης υπάρχουν πολλά παραδείγματα εταιρειών που διέθεσαν το λογισμικό τους υπό μια άδεια Ελ/λακ ενώ πριν το ίδιο ήταν κλειστού κώδικα. Οι δυνατότητες σε πόρους που μπορούν να διαθέσουν οι μεγάλες εταιρίες στην ανάπτυξη λογισμικού είναι πολύ μεγάλες. 23

24 Για παράδειγμα η IBM ισχυρίζεται ότι έχει ξοδέψει πάνω από ένα εκατομμύριο δολάρια μόνο για την συμμετοχή της στο Linux και ξεχωριστά βοηθάει σε πολλά άλλα έργα. Οι εταιρείες θέλουν να εκμεταλλευτούν το Ελ/λακ για να πουλήσουν συμπληρωματικά προϊόντα ή υπηρεσίες. Στόχος κάθε εταιρείας είναι τα κέρδη και αυτό είναι απολύτως θεμιτό. Από τη στιγμή που δεν μπορούν να το κάνουν άμεσα πουλώντας ένα ελεύθερα διαθέσιμο προϊόν πρέπει να το επιτύχουν πουλώντας κάτι συμπληρωματικό η μέσω κάποιας άλλης έμμεσης δραστηριότητας τους. Οι Red Hat και η Suse είναι καλά παραδείγματα εταιρειών που προσφέρουν συμπληρωματικά προϊόντα και υπηρεσίες σε σχέση με το Ελ/λακ και το Linux ειδικότερα. Η έκδοση του λογισμικού τους υπό άδεια Ελ/λακ κάτω από ορισμένες προϋποθέσεις μπορεί να δράσει υπέρ της επιχείρησης. Αυτό γίνεται στην περίπτωση που μια επιχείρηση πιστεύει ότι μπορεί να βελτιώσει τα κέρδη της από τον συμπληρωματικό τομέα. Απαραίτητο για αυτήν την περίπτωση είναι τα κέρδη από τον συμπληρωματικό τομέα να είναι μεγαλύτερα από τα κέρδη που θα έκανε το λογισμικό αν δεν είχε μετατραπεί σε ανοιχτού κώδικα. Δεν τα καταφέρνουν όλες οι εταιρίες με την στρατηγική του αυτή καθώς όλο το λογισμικό δεν τυχαίνει της ίδιας σημασία από τις κοινότητες και τους χρήστες Τα κίνητρα που οδηγούν τις επιχειρήσεις να συμμετέχουν στο Ελ/λακ είναι τα εξής (Berlecon Research, 2002) α) Η τυποποίηση του λογισμικού β) Το ίδιο το λογισμικό ως χαμηλού κόστος μέρους του προϊόντος τους. γ) Στρατηγικές αποφάσεις 24

25 3. Η Γλώσσα προγραμματισμού Java 3.1 Η ιστορία της Java [2] Η γλώσσα της Java αρχικά αναπτύχθηκε από την Sun Microsystems υπό την αιγίδα των James Gosling και Bill Joy, σαν μέρος ενός ερευνητικού έργου ανάπτυξης λογισμικού για ηλεκτρονικές συσκευές καταναλωτικού επιπέδου (π.χ video,τηλεόραση). Ο τρόπος αυτός χρησιμοποίησης της, την μετέτρεψε σε μία ιδανική γλώσσα για την διανομή εκτελέσιμων προγραμμάτων μέσω του WWW (Παγκόσμιου Ιστού) καθώς επίσης σε μία γενικού σκοπού γλώσσα προγραμματισμού για την ανάπτυξη προγραμμάτων τα οποία θα είναι εύκολα στην χρήση και θα μπορούν να μεταφέρονται σε διαφορετικά λειτουργικά συστήματα. Αν και χρησιμοποιήθηκε από την Sun σε πολλές εφαρμογές (με το όνομα Οακ) με σκοπό την δημιουργία προϊόντων για την ηλεκτρονική αγορά, ενδιαφέρον προκάλεσε στο κοινό μόνο όταν συνδυάστηκε με το πρόγραμμα ανάγνωσης ιστοσελίδων (browser) της HotJava. Αυτό είχε ως αποτέλεσμα, η γλώσσα αυτή να συνδεθεί στενά με την ανάπτυξη μικρό - εφαρμογών στο διαδίκτυο και συγκεκριμένα στον Παγκόσμιο Ιστό (WWW). Η πραγματική όμως απογείωση της δημοτικότητας της Java ξεκίνησε όταν η Netscape ενσωμάτωσε την δυνατότητα της HotJava να τρέχει μικρό- εφαρμογές μέσα στο δικό της πρόγραμμα ανάγνωσης ιστοσελίδων (browser). Το γεγονός, ότι τα τελευταία χρόνια η Java χρησιμοποιείται κυρίως για την ανάπτυξη μικρό - εφαρμογών δεν σημαίνει ότι η γλώσσα αυτή δεν είναι κατάλληλη για την δημιουργία ολοκληρωμένων εφαρμογών. Εξάλλου αυτό αποδεικνύεται από το γεγονός ότι τα περισσότερα εργαλεία της έχουν γραφτεί με την Java. Μάλιστα, σύμφωνα με την θεωρεία ανάπτυξης μεταγλωττιστών, μία γλώσσα έχει "ενηλικιωθεί" όταν ο μεταγλωττιστής της μπορεί να γραφτεί από την ίδια την γλώσσα. Συνεπώς η Java ως γλώσσα προγραμματισμού έχει ενηλικιωθεί. 25

26 Αυτό που θα πρέπει κανείς να θυμάται για την Java είναι ότι πρόκειται για μία καλά οργανωμένη και καλά εκφρασμένη γλώσσα προγραμματισμού που έχει δανειστεί πολλά θετικά χαρακτηριστικά από άλλες γλώσσες όπως τη C++, τη SmallTalk και τη Lisp, αφαίρεσε όμως όλα εκείνα τα στοιχεία αυτών των γλωσσών που ίσως οδηγούσαν σε σύγχυση τους χρήστες. 3.2 Τα βασικά χαρακτηριστικά της Java[2] Οι δημιουργοί της Java την έχουν χαρακτηρίσει ως μία γλώσσα απλή, αντικειμενοστραφή, διαμοιραζόμενη, εύρωστη, ασφαλή, με ουδέτερηαρχιτεκτονική, εύκολη στην μεταφορά, υψηλής απόδοσης και πολυνηματική. Για να γίνουν όμως κατανοητοί όλοι αυτοί οι χαρακτηρισμοί θα πρέπει να αναλυθεί ο κάθε ένας ξεχωριστά. Αρχεία JAR (Java Archive Files) Η Java προέκυψε από την C++ με την αφαίρεση ορισμένων χαρακτηριστικών. Συνεπώς, η Java είναι σίγουρα ευκολότερη από την C++. Αυτό σε συνδυασμό με το γεγονός ότι οι περισσότεροι προγραμματιστές πρώτα μαθαίνουν C++, οδηγεί στο συμπέρασμα ότι είναι πολύ πιο εύκολο για αυτούς να μάθουν την Java. Η Java είναι πιο απλή γιατί περιλαμβάνει τρεις μόνο βασικούς τύπους δεδομένων τους αριθμούς, τις λογικές μεταβλητές (Boolean) και τους πίνακες. Όλα τα υπόλοιπα στην Java αποτελούν μία κλάση. Για παράδειγμα, τα αλφαριθμητικά είναι αντικείμενα και όχι απλά ένας πίνακας χαρακτήρων. Αναφέραμε πριν ότι η Java έχει αφαιρέσει ορισμένα χαρακτηριστικά από την C++, όπως είναι η δήλωση goto, η υπερφόρτωση των τελεστών (η οποία προκαλούσε σύγχυση στους προγραμματιστές της C++), οι δομές, τα ενωτικά όπως επίσης τις δηλώσεις #define και Typedef. Όλα αυτά τα 26

27 χαρακτηριστικά ήταν απαραίτητα στην C++ προκειμένου να μπορέσει ο μεταγλωττιστής να μεταγλωττίσει σωστά τον ήδη υπάρχοντα κώδικα της C ο οποίος και σχετιζόταν με τα χαρακτηριστικά αυτά. Το βασικό όμως στοιχείο της C++ το οποίο παραλήφθηκε από την Java είναι η άμεση διαχείριση της μνήμης, μέσα από την χρησιμοποίηση των δεικτών. Όπως ομολογούν οι περισσότεροι προγραμματιστές της C ή της C+ +, οι δείκτες αποτελούν την πηγή προβλημάτων τόσο κατά την διάρκεια γραφής του προγράμματος, όσο και κατά την μεταγλώττιση του. Οι δείκτες μπορούν κατά λάθος να οριστούν από τον χρήστη να δείχνούν σε λάθος μεταβλητή, με αποτέλεσμα την μη σωστή λειτουργία του προγράμματος. Πολλές φορές μάλιστα αυτό μπορεί να οδηγήσει σε κατάρρευση του προγράμματος. Επίσης, οι δείκτες μπορούν να αποθηκεύουν κατανεμημένη μνήμη. Εάν η κατανεμημένη αυτή μνήμη δεν απελευθερωθεί το πρόγραμμα σιγά- σιγά θα δεσμεύει μνήμη μέχρις ότου να μην υπάρχει καθόλου διαθέσιμη μνήμη. Έχουν δημιουργηθεί αρκετά προϊόντα, όπως το Bounds Checker, προκειμένου να βοηθήσουν τους προγραμματιστές να επιλύσουν τα προβλήματα αυτά που προκύπτουν από τους δείκτες. Η Java όμως, απλοποιεί το πρόβλημα αυτό με το να αφαιρεί την έννοια των δεικτών από την γλώσσα προγραμματισμού. Βέβαια η Java δεν αφαιρεί μόνο στοιχεία από την C++, αλλά προσθέτει και νέα γιατί διαφορετικά δεν θα μιλούσαμε για μία νέα γλώσσα προγραμματισμού, αλλά για ένα φτωχό μεταγλωττιστή. Επομένως, ένα από τα βασικά χαρακτηριστικά που έχει προσθέσει η Java είναι η αυτόματη διαχείριση της μνήμης, γνωστό και ως "μονάδα συλλογής σκουπιδιών" (garbage collector). Ο προγραμματιστής δεν χρειάζεται να απελευθερώνει την μνήμη που κατανέμει- η εικονική μηχανή της Java (Virtual Machine ή VMJ) κάνει την δουλεία αυτή για λογαριασμό του προγραμματιστή. 27

28 Επίσης, υποστηρίζει τη δημιουργία πολυνηματικών προγραμμάτων. Ένα πρόγραμμα λέγεται πολυνηματικό, όταν σχεδιάζεται έτσι ώστε να μπορεί να εκτελεί περισσότερες από μία δουλείες ταυτόχρονα. Αντικειμενοστραφής Όσον αφορά στα αντικείμενα η Java ακολουθεί περισσότερο τα χαρακτηριστικά της γλώσσας SmallTalk παρά της C++. Όπως έχουμε ήδη αναφέρει εκτός από τους τύπους των δεδομένων, όλα τα υπόλοιπα στην Java αποτελούν αντικείμενα. Στην Java δεν υπάρχουν καθολικές συναρτήσεις: όλες οι συναρτήσεις καλούνται μέσα από ένα αντικείμενο. Σημαντικό επίσης είναι, ότι η Java δεν υιοθετεί τα χαρακτηριστικά της πολλαπλής κληρονομικότητας, καθώς κάτι τέτοιο θα έκανε πιο πολύπλοκα τα πράγματα. Οι κλάσεις στην Java αποτελούνται από τις μεθόδους και τις μεταβλητές. Μέθοδοι λέγονται οι συναρτήσεις στις οποίες μπορεί να απευθύνεται το αντικείμενο μίας κλάσης. Μεταβλητές λέγονται τα δεδομένα που καθορίζουν την κατάσταση ενός αντικειμένου. Διαμοιραζόμενη Η Java επιτρέπει την δημιουργία διαμοιραζόμενων εφαρμογών από μία σειρά κλάσεων οι οποίες χρησιμοποιούνται σε δικτυακές εφαρμογές. Με την χρησιμοποίηση της URL κλάσης της Java, μία εφαρμογή μπορεί πολύ εύκολα να προσπελάσει έναν απομακρυσμένο διακομιστή. Εύρωστη Οι σχεδιαστές της Java προέβλεψαν ότι η γλώσσα αυτή επρόκειτο να χρησιμοποιηθεί για την επίλυση πολύπλοκων προγραμματιστικών προβλημάτων. Η δημιουργία ενός διαμοιραζόμενου, πολυνηματικού 28

29 προγράμματος το οποίο μπορεί να τρέχει σε μία ποικιλία λειτουργικών συστημάτων με διάφορους επεξεργαστές δεν είναι εύκολη δουλεία. Προκειμένου να βοηθήσουν στην επίλυση ενός τέτοιου είδους προβλήματος οι σχεδιαστές της Java δημιούργησαν μία πολύ δυνατή γλώσσα. Η διαχείριση της μνήμης έχει απλουστευτεί στην Java με δύο τρόπους: Πρώτον, δεν χρησιμοποιούνται οι δείκτες και επομένως είναι αδύνατον ένα πρόγραμμα της Java να καταστρέψει δεδομένα ή να γράψει πάνω σε άλλα. Δεύτερον, η Java ακολουθεί την γλώσσα Lisp και SmallTalk οι οποίες επιτρέπουν την αυτόματη απελευθέρωση της μνήμης η οποία έχει καταμεριστεί αλλά δεν χρησιμοποιείται πια. Ασφάλεια Οι ισχυροί μηχανισμοί ασφάλειας της Java δρουν σε τέσσερα διαφορετικά επίπεδα της αρχιτεκτονικής του συστήματος. Κατ αρχήν, η ίδια η γλώσσα Java σχεδιάστηκε να είναι ασφαλής και ο μεταγλωττιστής της Java διασφαλίζει ότι ο πηγαίος κώδικας δεν παραβιάζει τους κανόνες ασφάλειας. Κατά δεύτερον, όλος ο κώδικας σε μορφή bytecode που εκτελείται από το περιβάλλον χρόνου εκτέλεσης, ελέγχεται για να διασφαλιστεί ότι και αυτός επίσης υπακούει στους κανόνες ασφάλειας. Κατά τρίτον, η μονάδα φόρτωσης κλάσεων διασφαλίζει ότι οι κλάσεις δεν παραβιάζουν τους ισχύοντες περιορισμούς όταν φορτώνονται στο σύστημα. Τέλος, η συγκεκριμένη ως προς το API ασφάλεια εμποδίζει τις μίνι - εφαρμογές να κάνουν καταστροφικά πράγματα στο σύστημα. Ουδέτερη- Αρχιτεκτονική Την δεκαετία του 1980 υπήρχε μεγάλη ποικιλία από προσωπικούς ηλεκτρονικούς υπολογιστές (PC). Μπορούσες να αγοράσεις υπολογιστή από την Apple, Commodone, Radio Shack, Atari και από την IBM. Συγκεκριμένα κάθε διαφορετικού τύπου Ηλεκτρονικός Υπολογιστής είχε το 29

30 δικό του διαφορετικό λειτουργικό σύστημα. Επειδή, η ανάπτυξη λογισμικού απαιτούσε πολύ χρόνο, πολύ λίγο από το λογισμικό που αναπτυσσόταν για να χρησιμοποιηθεί από ένα Ηλεκτρονικό Υπολογιστή είχε εφαρμογή σε κάποιο άλλο διαφορετικό μηχάνημα. Η λύση στο πρόβλημα αυτό ήρθε με την ανάπτυξη των Windows, των Macintosh της Apple και του Unix. Ωστόσο, η ανάπτυξη λογισμικού για την χρησιμοποίηση του ταυτόχρονα και από τα Windows NT, Unix και Macintosh εξακολουθεί να είναι μία δύσκολη εργασία. Η Java έχει καταφέρει να λύσει το πρόβλημα της χρησιμοποίησης των εφαρμογών που έχουν αναπτυχθεί από διαφορετικά μηχανήματα. Το γεγονός ότι ο μεταγλωττιστής της Java δημιουργεί κώδικα εντολών γραμμένο σε byte ο οποίος μεταγλωττίζεται από τον μεταγλωττιστή της Java προσδίδει στην Java μία ουδέτερη αρχιτεκτονική. Έτσι, τα προγράμματα της Java μπορούν να εκτελούνται από οποιοδήποτε μηχάνημα ανεξαρτήτως λειτουργικού συστήματος. Εύκολη στην μεταφορά Βασικός στόχος της Java ήταν η δημιουργία φορητών εφαρμογών έτσι ώστε καθώς αναπτύσσονται νέες αρχιτεκτονικές ( είτε λόγω των λειτουργικών συστημάτων, είτε λόγω των ίδιων των μηχανημάτων), το περιβάλλον της Java να μπορεί να λειτουργεί μέσα σε αυτές. Στην Java όλοι οι τύποι δεδομένων (π.χ ακέραιοι, κινητής υποδιαστολής και κινητής υποδιαστολής διπλής ακριβείας ) έχουν προκαθορισμένο μέγεθος ανεξάρτητα από το μηχάνημα ή το λειτουργικό σύστημα στο οποίο το πρόγραμμα τρέχει. Αυτό βέβαια έρχεται σε αντίθεση με την C++, όπου το μέγεθος των παραπάνω τύπων εξαρτάται από τον μεταγλωττιστή. 30

31 Υψηλή απόδοση Μία εφαρμογή που αναπτύχθηκε με την Java σίγουρα δεν έχει την αποδοτικότητα που θα είχε αν είχε γραφτεί σε C++. Ωστόσο, για τις περισσότερες εφαρμογές που περιλαμβάνουν γραφικά τα οποία συναντάμε κυρίως στο διαδίκτυο, η απόδοση της Java είναι περισσότερο από αρκετή. Για ορισμένες μάλιστα εφαρμογές δεν υπάρχει ορατή διαφορά στην απόδοση ανάμεσα στην Java και την C++. Πάντως, ένα είναι σίγουρο ότι η Java είναι αρκετά γρήγορη και μπορεί να επιτρέψει στους προγραμματιστές να κάνουν πράγματα που δεν θα μπορούσαν με την C++. Πολυνηματική Οι σύγχρονες εφαρμογές χρειάζεται να εκτελούν περισσότερες από μία λειτουργίες κάθε φορά. Η Java ενισχύει την ανάπτυξη τέτοιων εφαρμογών μέσω των νημάτων. Τα νήματα είναι μία ροή εκτέλεσης μέσα σε μία εφαρμογή. Ένα νήμα μπορεί να εκτελείται ανεξάρτητα σε μία εφαρμογή ή πολλά νήματα μπορούν να εκτελούνται ταυτόχρονα. Η χρησιμοποίηση συγχρονισμένων νημάτων είναι εξαιρετικά χρήσιμη στην δημιουργία διαμοιραζόμενων, δικτυακών εφαρμογών. Ένα παράδειγμα τέτοιας εφαρμογής είναι η επικοινωνία με ένα απομακρυσμένο διακομιστή μέσω ενός νήματος, ενώ με ένα άλλο νήμα πραγματοποιείται η αλληλεπίδραση με τον χρήστη. 31

32 3.3 Τα Κυριότερα Εργαλεία της Java[2] Για να γράψει κανείς μία εφαρμογή ή μίνι - εφαρμογή στην Java, χρειάζεται εκτός από την ίδια την γλώσσα και τα εργαλεία με τα οποία θα γράψει, θα δοκιμάσει και θα μεταγλωττίσει το πρόγραμμα. Κατά καιρούς έχουν αναπτυχθεί πολλά περιβάλλοντα για την εκτέλεση των προγραμμάτων σε Java. Ωστόσο αυτό που κυρίως χρησιμοποιείται είναι το JDK που αναπτύχθηκε από την Sun Microsystems και το οποίο είναι διαθέσιμο στην ηλεκτρονική διεύθυνση Ο Διερμηνευτής χρόνου εκτέλεσης Ο διερμηνευτής χρόνου εκτέλεσης (Interpreter), γνωστός και ως Java, είναι ένα εργαλείο το οποίο χρησιμοποιείται για την εκτέλεση προγραμμάτων και εφαρμογών της Java. Οι μίνι- εφαρμογές της Java απαιτούν την υποστήριξη ενός Web προγράμματος περιήγησης για την εμφάνιση τους. Μπορεί να είναι ένα αυτόνομο τμήμα λογισμικού ή μέρος μίας μεγάλης εφαρμογής, όπως είναι το Netscape. Επιτρέπει στο χρήστη να κάνει πολλά πράγματα, όπως είναι η φόρτωση αρχείων κλάσεων και η ερμηνεία δυαδικού κώδικα (δηλαδή αρχείων σε μορφή bytecode). Πολλές φορές λειτουργεί και ως μεταγλωττιστής ο οποίος μεταγλωττίζει τον δυαδικό κώδικα Java σε κώδικα μηχανής. Έχει την δυνατότητα να εκτελεί τόσο προγράμματα με υποστήριξη μόνο κειμένου, όσο και εφαρμογές Java με υποστήριξη γραφικών, αλλά όχι μίνιεφαρμογές. 32

33 Η σύνταξη για την χρήση του διερμηνευτή χρόνου εκτέλεσης είναι: java Επιλογές Όνομα_κλάσης Ορίσματα Το όρισμα Όνομα_κλάσης προσδιορίζει το όνομα της κλάσης που θέλουμε να εκτελεστεί. Εάν η κλάση βρίσκεται σε ένα πακέτο, πρέπει να προσδιοριστεί πλήρως το όνομα της. Για παράδειγμα, εάν θέλετε να εκτελέσετε μία κλάση με το όνομα Suffle η οποία βρίσκεται σε ένα πακέτο με όνομα CardActions, θα πρέπει να καλέσετε τον διερμηνευτή ως εξής: java CardActions.Suffle Όταν ο διερμηνευτής της Java εκτελεί μία κλάση, αυτό που κάνει στην πραγματικότητα είναι να εκτελεί την μέθοδο main() της κλάσης. Ο διερμηνευτής τερματίζει όταν η μέθοδος main() και οποιαδήποτε νήματα δημιουργήθηκαν από αυτήν ολοκλήρωσαν την εκτέλεση τους. Η μέθοδος main() δέχεται μία λίστα ορισμάτων τα οποία μπορούν να χρησιμοποιηθούν για τον έλεγχο του προγράμματος. Μεταγλωττιστής Ο μεταγλωττιστής της Java (javac) χρησιμοποιείται για την μεταγλώττιση των αρχείων πηγαίου κώδικα σε εκτελέσιμες κλάσεις ( σε μορφή bytecode). Στην Java, τα αρχεία πηγαίου κώδικα έχουν επέκταση.java και είναι αρχεία ASCII, παρόμοια με τα αρχεία πηγαίου κώδικα άλλων γλωσσών προγραμματισμού όπως είναι η C++. Τα εκτελέσιμα αρχεία έχουν επέκταση.class και αντιπροσωπεύουν μία κλάση της Java στην χρησιμοποιήσιμη μορφή της. Τα bytecode της Java είναι ένα ειδικό σύνολο εντολών μηχανής, οι οποίες δεν απευθύνονται αποκλειστικά σε έναν συγκεκριμένο επεξεργαστή ή σύστημα υπολογιστή. Ένας συγκεκριμένος, ως προς το σύστημα 33

34 διερμηνευτής, εκτελεί τις οδηγίες των bytecode. Ο διερμηνευτής αυτός λέγεται και εικονική μηχανή της Java. Ο μεταγλωττιστής επιτρέπει την ύπαρξη μίας μόνο public κλάσης. Είναι απαραίτητη η κοινή ονομασία του αρχείου και της κλάσης. Η σύνταξη της εντολής είναι: javac Επιλογές Όνομα Αρχείου Το όρισμα Όνομα Αρχείου καθορίζει το όνομα του αρχείου με τον πηγαίο κώδικα που θέλετε να μεταγλωττίσετε. Ο μεταγλωττιστής θα παράγει αρχεία κλάσεων σε μορφή bytecode για όλες τις κλάσεις που ορίζονται μέσα στο αρχείο αυτό. Εάν μεταγλωττίζετε την κλάση Α η οποία παράγεται από την κλάση Β και η κλάση Β δεν έχει μεταγλωττιστή ακόμα, τότε ο μεταγλωττιστής παρατηρεί την εξάρτηση αυτή και μεταγλωττίζει και τις δύο κλάσεις. Έτσι, με την εκτέλεση της εντολής javac BigBird δημιουργείται μία κλάση με το όνομα BigBird.class που αποθηκεύεται σε ένα κοινό κατάλογο με το πηγαίο αρχείο. Το όρισμα Επιλογές του μεταγλωττιστή καθορίζει επιλογές που σχετίζονται με το πως δημιουργούνται τα εκτελέσιμα αρχεία κλάσεων της Java από τον μεταγλωττιστή. Η επιλογή -d καθορίζει τον αρχικό κατάλογο στον οποίο αποθηκεύονται οι μεταγλωττισμένες κλάσεις. Αυτό είναι σημαντικό επειδή πολλές φορές οι κλάσεις οργανώνονται σε ιεραρχική δομή καταλόγων. Με την επιλογή -d, η δομή καταλόγων θα δημιουργηθεί κάτω από τον κατάλογο που προσδιορίζει η επιλογή. Η επιλογή -g αναγκάζει τον μεταγλωττιστή να παράγει πίνακες αποσφαλμάτωσης για τις κλάσεις της Java. Οι πίνακες αποσφαλμάτωσης χρησιμοποιούνται από τον αποσφαλματωτή της Java και περιέχουν πληροφορίες όπως τοπικές μεταβλητές και αριθμοί γραμμών. 34

35 Αρχεία JAR (Java Archive Files) Μπορείτε να χρησιμοποιήσετε τα αρχεία JAR για να συμπιέσετε και να εσωκλείσετε ένα μεγάλο αριθμό αρχείων έτσι ώστε να μπορείτε να τα φορτώσετε όλα μαζί με μίας σε ένα μίνι πακέτο, πράγμα που επιταχύνει σημαντικά την διαδικασία της φόρτωσης. Για να δημιουργήσετε ένα αρχείο JAR, χρησιμοποιείστε το αρχείο jar.exe. Για παράδειγμα έστω ότι η μίνιεφαρμογή canvaser.java δημιουργεί δύο αρχεία κλάσης κατά την μεταγλώττιση:canvaser.class και BoxCanvas.class. Μπορείτε να συμπιέσετε (Zip) και τα δύο αρχεία αυτά και να τοποθετήσετε σε ένα αρχείο JAR έτσι ώστε η φόρτωσή τους να γίνεται μαζί. Για να το κάνετε αυτό χρησιμοποιήστε το Jar.exe για να δημιουργήσετε το canvaser.jar ως εξής: C:\java-1\canvaser>jar cvf canvaser.jar* Το σύμβολο " * " στο τέλος της παραπάνω πρότασης σημαίνει ότι θα συμπιέσετε όλα τα αρχεία του τρέχοντος καταλόγου μέσα σε αυτό το αρχείο JAR, ενώ η συμβολοσειρά cvf δείχνει τις επιλογές που θέλετε να χρησιμοποιήσετε με το αρχείο jar.exe. Βοήθημα εμφάνισης μίνι- εφαρμογών (Applet Viewer) Οι δημιουργοί εφαρμογών της Java έχουν έναν ακόμη τρόπο για να τρέχουν τις μίνι - εφαρμογές, ο οποίος δεν απαιτεί την χρήση ενός Web προγράμματος περιήγησης. Ο τρόπος αυτός είναι το βοήθημα εμφάνισης μίνι -εφαρμογών (applet viewer) της java, το οποίο εξυπηρετεί σαν ένας στοιχειώδης μηχανισμός ελέγχου των μίνι - εφαρμογών που γράφονται με την java. Αν και το βοήθημα εμφάνισης μίνι - εφαρμογών λογικά καταλαμβάνει την θέση ενός Web προγράμματος περιήγησης, λειτουργεί πολύ διαφορετικά από τα web προγράμματα περιήγησης. Κατ αρχήν λειτουργεί πάνω σε HTML έγγραφα, αλλά ψάχνει μόνο για τις ενσωματωμένες ετικέτες <Applet> και αγνοεί όλο τον υπόλοιπο κώδικα που υπάρχει στο 35

36 έγγραφο. Κάθε φορά που το βοήθημα εμφάνισης μίνι - εφαρμογών συναντά μία ετικέτα <Applet> μέσα σε ένα HTML έγγραφο, ανοίγει ένα ξεχωριστό παράθυρο, το οποίο περιέχει την αντίστοιχη μίνι εφαρμογή. Το μόνο μειονέκτημα είναι ότι δεν δείχνει πως θα τρέχει η μίνι - εφαρμογή όταν θα περιοριστεί μέσα στα όρια μίας πραγματικής ιστοσελίδας. Η σύνταξή του είναι: appletviewer Επιλογές URL Το όρισμα URL καθορίζει το URL του εγγράφου που περιέχει μία HTML σελίδα σε μία ενσωματωμένη μίνι - εφαρμογή της Java. Αποσφαλματωτής Ο απασφαλματωτής της java (jdb) επιτρέπει την αποσφαλμάτωση των προγραμμάτων που γράφονται με την java. Παρέχει τις εξής λειτουργίες αποσφαλμάτωσης: τον ορισμό των σημείων διακοπής, δηλαδή τον καθορισμό της γραμμής του κώδικα στην οποία σταματά η εκτέλεση του προγράμματος και την βηματική εκτέλεση του κώδικα, δηλαδή την εκτέλεση του κώδικα γραμμή προς γραμμή. Πριν χρησιμοποιηθεί ο αποσφαλματωτής θα πρέπει πρώτα να μεταγλωττιστή ο κώδικας. Η σύνταξη του είναι: jdb Επιλογές <Όνομα Κλάσης> Το όρισμα Όνομα Κλάσης είναι προαιρετικό και καθορίζει το όνομα της κλάσης που θα εκτελεστεί. 36

37 Γεννήτρια Τεκμηρίωσης (JavaDoc) Η γεννήτρια τεκμηρίωσης της Java (javadoc) είναι ένα χρήσιμο εργαλείο για την παραγωγή τεκμηρίωσης απευθείας από τον πηγαίο κώδικα. Αναλύει τα πηγαία αρχεία και παράγει HTML σελίδες βασιζόμενη στις δηλώσεις και στα σχόλια. Η σύνταξη της είναι: javadoc Επιλογές Όνομα Αρχείου Το όρισμα Όνομα Αρχείου καθορίζει είτε ένα πακέτο, είτε ένα αρχείο πηγαίου κώδικα της Java. Η γεννήτρια τεκμηρίωσης υποστηρίζει ειδικές ετικέτες για την πρόσθεση επιπλέον πληροφοριών στα παραγόμενα HTML έγγραφα. Όλες οι ετικέτες ξεκινούν με το το οποίο και πρέπει να εμφανίζεται στην αρχή κάθε γραμμής. Ένα παράδειγμα πηγαίου κώδικα που χρησιμοποιεί ετικέτες τεκμηρίωσης κλάσεων είναι και το ακόλουθο: /** Object Game.Solitare *@version 3.1 May Μουτίδης Ηρακλής */ Diassembler αρχείων κλάσεων Ο diassembler αρχείων κλάσεων της java (javap) χρησιμοποιείται για την "αποσυναρμολόγηση" ενός αρχείου κλάσης, πράγμα που σημαίνει ότι το 37

e-patents Διπλώματα Ευρεσιτεχνίας στο Λογισμικό Βασίλης Βλάχος Σύλλογος Διπλωματούχων Μηχανικών Η/Υ και Πληροφορικής

e-patents Διπλώματα Ευρεσιτεχνίας στο Λογισμικό Βασίλης Βλάχος Σύλλογος Διπλωματούχων Μηχανικών Η/Υ και Πληροφορικής e-patents Διπλώματα Ευρεσιτεχνίας στο Λογισμικό Βασίλης Βλάχος Σύλλογος Διπλωματούχων Μηχανικών Η/Υ και Πληροφορικής Σύλλογος Διπλωματούχων Μηχανικών Η/Υ και Πληροφορικής Μέλη του Συλλόγου : Μηχανικοί

Διαβάστε περισσότερα

Α.Τ.Ε.Ι.Θ. ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΕΜΠΟΡΙΑΣ ΚΑΙ ΔΙΑΦΗΜΙΣΗΣ. Πτυχιακή εργασία

Α.Τ.Ε.Ι.Θ. ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΕΜΠΟΡΙΑΣ ΚΑΙ ΔΙΑΦΗΜΙΣΗΣ. Πτυχιακή εργασία Α.Τ.Ε.Ι.Θ. ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΕΜΠΟΡΙΑΣ ΚΑΙ ΔΙΑΦΗΜΙΣΗΣ Πτυχιακή εργασία ΘΕΜΑ Το Μάρκετινγκ του Ελεύθερο Λογισμικού/Λογισμικού Ανοιχτού Κώδικα. Οι ιδιαιτερότητες που παρουσιάζει και οι δυσκολίες

Διαβάστε περισσότερα

Ελεύθερο Λογισμικό. Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι)

Ελεύθερο Λογισμικό. Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι) Ελεύθερο Λογισμικό Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι) Τι είναι το Λογισμικό; Τι είναι το Λογισμικό; Λογισμικό Οδηγίες (Προγράμματα) Δεδομένα... για τον Ηλεκτρονικό Υπολογιστή Τι είναι

Διαβάστε περισσότερα

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα Ελεύθερο Λογισμικό Λογισμικό Ανοικτού Κώδικα GNU/Linux and FOSS Το κίνημα του ελεύθερου λογισμικού Έχει ως στόχο να

Διαβάστε περισσότερα

Ελεύθερο Λογισμικό. Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014

Ελεύθερο Λογισμικό. Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014 Ελεύθερο Λογισμικό Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014 1 Τι θα παρακολουθήσουμε Τι είναι το Λογισμικό Κατηγορίες Λογισμικού Ιστορική αναφορά Οικονομικά στοιχεία Πηγές εσόδων

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

Διαβάστε περισσότερα

«Επαναχρησιμοποίηση συστατικών λογισμικού εφαρμογών ήχου»

«Επαναχρησιμοποίηση συστατικών λογισμικού εφαρμογών ήχου» ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «Επαναχρησιμοποίηση συστατικών λογισμικού εφαρμογών ήχου» Κρητικός Σπυρίδων Επιβλέπων καθηγητής : Σταμέλος Ιωάννης Θεσσαλονίκη,

Διαβάστε περισσότερα

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. Εργαλεία του JDK Β.1 Εργαλεία του JDK Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. O µεταγλωττιστής (compiler) της Java javac. O διερµηνευτής (interpreter) της Java java. Το υπεύθυνο εργαλείο για

Διαβάστε περισσότερα

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

Διαβάστε περισσότερα

Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας

Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας 1 Ατζέντα Εισαγωγή Εργαλεία Ανοιχτού Λογισμικού για Μηχανικούς Λογισμικού Χρήση και

Διαβάστε περισσότερα

Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα

Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα Copyright (C) Konstantinos Togias. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

Διαβάστε περισσότερα

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΕΡΩΤΗΣΗ 1: Σε ποιες μεγάλες κατηγορίες μπορούμε να χωρίσουμε το Λογισμικό. Μπορούμε να χωρίσουμε το Λογισμικό στις παρακάτω μεγάλες κατηγορίες: στο Λογισμικό Συστήματος (System Software),

Διαβάστε περισσότερα

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Συστήματα γεωγραφικών πληροφοριών 2 η Σειρά Εκπαίδευσης 1 ο σεμινάριο 21 Οκτωβρίου 2014 Ελεύθερο Λογισμικό ΕΛ/ΛΑΚ: Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ)

Διαβάστε περισσότερα

Από την Διακίνηση της Πληροφορίας ως τα Creative Commons

Από την Διακίνηση της Πληροφορίας ως τα Creative Commons Εργαστήριο Ψηφιακών Βιβλιοθηκών και Ηλεκτρονικής Δημοσίευσης Τμήμα Αρχειονομίας Βιβλιοθηκονομίας Ιόνιο Πανεπιστήμιο Από την Διακίνηση της Πληροφορίας ως τα Creative Commons Σαράντος Καπιδάκης sarantos@ionio.gr

Διαβάστε περισσότερα

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Γενικά Χαρακτηριστικά ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΓΕΝΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

Διαβάστε περισσότερα

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος Λογισμικό Συστήματος Λογισμικό 2 Λογισμικό Συστήματος Τα ειδικά εργαλεία χρησιμοποιούνται για την ανάπτυξη λογισμικού εφαρμογών και την εκτέλεση βοηθητικών εργασιών. Το λειτουργικό σύστημα (operating system)

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 1: Εισαγωγή Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Μπορούμε και χωρίς Πατέντες

Μπορούμε και χωρίς Πατέντες Μπορούμε και χωρίς Πατέντες Ι. Σταμέλος Αναπλ. Καθηγητής Α.Π.Θ. Μέλος Δ.Σ. Εταιρείας ΕΛΛΑΚ Με τη συνδρομή του Π. Τσιάβου, Νομικού, Μέλους Δ.Σ. ΕΛΛΑΚ Εταιρεία ΕΛΛΑΚ Εταιρεία μη κερδοσκοπικού χαρακτήρα,

Διαβάστε περισσότερα

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Συστήματα γεωγραφικών πληροφοριών 1 ος Κύκλος Εκπαίδευσης 1 ο σεμινάριο 27 Μαΐου 2014 Ελεύθερο Λογισμικό ΕΛ/ΛΑΚ: Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ)

Διαβάστε περισσότερα

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το Σηµαντικά σηµεία κεφαλαίου Τα τρία στάδια επίλυσης ενός προβλήµατος: Ακριβής προσδιορισµό του προβλήµατος Ανάπτυξη του αντίστοιχου αλγορίθµου. ιατύπωση του αλγορίθµου σε κατανοητή µορφή από τον υπολογιστή.

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 6: Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

Linux με τη χρήση κονσόλας

Linux με τη χρήση κονσόλας Linux με τη χρήση κονσόλας Κεφάλαιο 1 Κείμενα Χρυσούλα Παπάζογλου Πανεπιστήμιο Μακεδονίας, Βιβλιοθήκη και Κέντρο Πληροφόρησης Υπηρεσία Ασύγχρονης Τηλεκπαίδευσης Θεσσαλονίκη, Μάρτης 2009 Το υλικό διατίθεται

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα 4o Εργαστήριο Σ.Α.Ε Ενότητα : Μελέτη και Σχεδίαση Σ.Α.Ε Με χρήση του MATLAB Aναστασία Βελώνη Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

Ομάδα (3) Γιάννης Καρανάσος. Μαριάννα Κοβού. Ήλιας Λάμπρου. Σπυριδούλα Γαντζούδη

Ομάδα (3) Γιάννης Καρανάσος. Μαριάννα Κοβού. Ήλιας Λάμπρου. Σπυριδούλα Γαντζούδη Ομάδα (3) Γιάννης Καρανάσος Μαριάννα Κοβού Ήλιας Λάμπρου Σπυριδούλα Γαντζούδη Τι είναι το Copyleft? Copyleft είναι το όνομα ενός τύπου αδειών χρήσης για ότι αφορά τα πνευματικά δικαιώματα. Αυτός ο τύπος

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

Διαβάστε περισσότερα

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου Θέματα διπλωματικών εργασιών σε συστοιχίες παράλληλης εξυπηρέτησης εφαρμογών Διαδικτύου Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές Σκοπός του εργαστηρίου αυτού είναι η χρησιμοποίηση κάποιων εφαρμογών που θα μας φανούν πολύ χρήσιμες κατά τη διάρκεια του μαθήματος της Εισαγωγής στον Προγραμματισμό.

Διαβάστε περισσότερα

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Προγραμματισμός Διαχείρισης Συστημάτων Ι Προγραμματισμός Διαχείρισης Συστημάτων Ι Μάθημα 7ο X Window System Μιχαηλίδης Παναγιώτης Tι είναι παραθυρικό σύστημα; Ένα παραθυρικό σύστημα (window system) είναι μια γραφική διεπαφή χρήστη (Graphical

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς PERL Δήμος Παύλου Δημήτρης Κουζαπάς Perl Η Perl είναι μια διερμηνευομένη δυναμική γλώσσα προγραμματισμού. Συνδυάζει χαρακτηριστικά από διάφορες γλώσσες. (C/C++, Awk, Lisp κλπ) Διαδόθηκε λόγω της μεγάλης

Διαβάστε περισσότερα

Τμήμα Μηχανικών Πληροφορικής ΤΕ. Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού. Άννα Ρήγα (ΑΜ: Τ03134)

Τμήμα Μηχανικών Πληροφορικής ΤΕ. Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού. Άννα Ρήγα (ΑΜ: Τ03134) ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Άννα Ρήγα (ΑΜ: Τ03134) Επιβλέπων:

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «Εκμάθηση, δοκιμή και εφαρμογή των εργαλείων της πλατφόρμας OPEN-SME για επαναχρησιμοποίηση κώδικα»

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «Εκμάθηση, δοκιμή και εφαρμογή των εργαλείων της πλατφόρμας OPEN-SME για επαναχρησιμοποίηση κώδικα» ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «Εκμάθηση, δοκιμή και εφαρμογή των εργαλείων της πλατφόρμας OPEN-SME για επαναχρησιμοποίηση κώδικα» Θεοδωρίδης Γεώργιος Επιβλέπων

Διαβάστε περισσότερα

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG ΕΙΣΑΓΩΓΗ: Τι είναι Ελεύθερο Λογισμικό; Η φιλοσοφία και οι αξίες του ΕΛ/ΛΑΚ Ζήσης Μιχάλης GreekLUG ΕΛ/ΛΑΚ! Τι είναι Λογισμικό & τι Λειτουργικό

Διαβάστε περισσότερα

Αγροτική Ανάπτυξη Περιβάλλον

Αγροτική Ανάπτυξη Περιβάλλον ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Αγροτική Ανάπτυξη Περιβάλλον 1 ος Κύκλος Εκπαίδευσης 4 ο σεμινάριο 4 Ιουλίου 2014 GRASS GIS Τι είναι το GRASS GIS; Ένα άρτιο ΣΓΠ Ανοιχτού Κώδικα (Open Source GIS)

Διαβάστε περισσότερα

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος. Û ØÓÒ ÔÖÓ Ö ÑÑ Ø Ñ ¾ Ç Ö ÐÓ ØÛÒ ÙÔÓÐÓ ØôÒ Ο υπολογιστής είναι εργαλείο επίλυσης προβλημάτων λόγω: ταχύτητας υπολογισμού και μεγέθους μνήμης γενικής χρησιμότητας μέσω της έννοιας του προγραμματισμού. Η

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή

Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή Πως ξεκίνησε το Linux Linus Torvalds : Εμπνευστής και δημιουργός του, φοιτητής του Πανεπιστημίου του Helsinki στην Φιλανδία Πως ξεκίνησε το Linux Βασίστηκε

Διαβάστε περισσότερα

ΕΛΛΑΚ Ελεύθερο Λογισμικό Λογισμικό Ανοιχτού Κώδικα. Δρ. Δημήτρης Καβρουδάκης www.dimitrisk.gr dimtirisk@geo.aegean.gr

ΕΛΛΑΚ Ελεύθερο Λογισμικό Λογισμικό Ανοιχτού Κώδικα. Δρ. Δημήτρης Καβρουδάκης www.dimitrisk.gr dimtirisk@geo.aegean.gr ΕΛΛΑΚ Ελεύθερο Λογισμικό Λογισμικό Ανοιχτού Κώδικα Δρ. Δημήτρης Καβρουδάκης www.dimitrisk.gr dimtirisk@geo.aegean.gr Ελεύθερο Λογισμικό Λογισμικό Ανοικτού Κώδικα Linux Περιεχόμενα Εφαρμογές ΕΛ/ΛΑΚ Ανοικτά

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Χειρισμός Αρχείων ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Αρχεία Συλλογές δεδομένων. Αποθηκεύονται στην περιφερειακή μνήμη: π.χ.

Διαβάστε περισσότερα

Τεκμηρίωση Tetravex i. Τεκμηρίωση Tetravex

Τεκμηρίωση Tetravex i. Τεκμηρίωση Tetravex i Τεκμηρίωση Tetravex ii Copyright 2001 Rob Bradford Copyright 2007-2008 Χρήστος Μπούνταλης (mpounta@gmail.com) Δίνεται άδεια για αντιγραφή, διανομή και/ή τροποποίηση του εγγράφου υπό τους όρους της Ελεύθερης

Διαβάστε περισσότερα

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης Μικρομεσαίες Επιχειρήσεις και Καινοτομία Ηλεκτρονικό Εμπόριο H δυνατότητα των καταναλωτών και των εμπορικών καταστημάτων να κάνουν

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

Διαβάστε περισσότερα

Εισαγωγή στην Python. Διάλεξη 0

Εισαγωγή στην Python. Διάλεξη 0 Εισαγωγή στην Python Διάλεξη 0 Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Τι είναι ο προγραμματισμός : Αλγόριθμος γραμμένος σε γλώσσα που καταλαβαίνει

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κύκλος ζωής λογισμικού source: Forouzan, Mosharraf Τροποποιήσεις διόρθωση σφαλμάτων, αλλαγή απαιτήσεων χρήστη,...

Διαβάστε περισσότερα

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Ενότητα 2 Πηγές Λογισμικού Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Μαθησιακοί στόχοι Εξοικείωση με εναλλακτικές πηγές λογισμικού Κατανόηση του τρόπου αξιολόγησης έτοιμου λογισμικού

Διαβάστε περισσότερα

Το ελεύθερο λογισμικό στη ζωή μας

Το ελεύθερο λογισμικό στη ζωή μας Το ελεύθερο λογισμικό στη ζωή μας Τάσος Κούτλας @akoutlas Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 11/06/2014 τι είναι το ελεύθερο λογισμικό / πώς άλλαξε την τεχνολογία / ελεύθερο λογισμικό στην Ελλάδα τι είναι το

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΤΙ ΕΊΝΑΙ ΛΟΓΙΣΜΙΚΟ Για τη λειτουργία ενός υπολογιστικού συστήματος χρειάζεται εκτός από το υλικό (hardware) και το λογισμικό (software). Σε αυτό περιλαμβάνονται όλα τα Προγράμματα

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ 1η διάλεξη (2012-13) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Γιατί να μάθει κανείς C++; Απαιτούμενο προσόν για πολλές θέσεις εργασίας. Υψηλού επιπέδου προγραμματισμός.

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

Διαβάστε περισσότερα

ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΣΥΣΤΑΤΙΚΩΝ ΛΟΓΙΣΜΙΚΟΥ ΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Φανή Α. Ορεστιάδου. Αναπληρωτής Καθηγητής Πληροφορικής

ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΣΥΣΤΑΤΙΚΩΝ ΛΟΓΙΣΜΙΚΟΥ ΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Φανή Α. Ορεστιάδου. Αναπληρωτής Καθηγητής Πληροφορικής ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΣΥΣΤΑΤΙΚΩΝ ΛΟΓΙΣΜΙΚΟΥ ΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Φανή Α. Ορεστιάδου Επιβλέπων : Ιωάννης Σταμέλος Αναπληρωτής Καθηγητής Πληροφορικής Θεσσαλονίκη, Οκτώβριος 2012

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Τεχνική υποστήριξη λογισμικού HP

Τεχνική υποστήριξη λογισμικού HP Τεχνική υποστήριξη λογισμικού HP Τεχνολογικές υπηρεσίες HP βάσει συμβολαίου Τεχνικά δεδομένα Η τεχνική υποστήριξη λογισμικού HP παρέχει ολοκληρωμένες υπηρεσίες απομακρυσμένης υποστήριξης για προϊόντα λογισμικού

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Μεταδεδομένα ψηφιακού περιεχομένου

Μεταδεδομένα ψηφιακού περιεχομένου Μεταδεδομένα ψηφιακού περιεχομένου Ελεύθερο λογισμικό και λογισμικό ανοιχτού κώδικα για τη δημιουργία ψηφιακών βιβλιοθηκών - αποθετηρίων Αλέξανδρος Ταγκούλης Αριστεία ΕΛ/ΛΑΚ ΤΕΙ Αθήνας 2 Μεταδεδομένα Δεδομένα

Διαβάστε περισσότερα

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού Κεφάλαιο 1: Εισαγωγή Η Επιστήμη της Πληροφορικής (Computer Science) αποτελεί σήμερα μία από τις σημαντικότερες και πλέον εξελισσόμενες επιστήμες. Οι εφαρμογές της έχουν εισχωρήσει σε όλα τα πεδία της ερευνητικής

Διαβάστε περισσότερα

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( ) ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016

Διαβάστε περισσότερα

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που 1 Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ

ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΤΙΣ ΕΦΑΡΜΟΓΕΣ ΤΟΥ Το Linux είναι χτισμένο με ένα συγκεκριμένο σύνολο ενοποίηση αρχές στο μυαλό. Η κατανόηση αυτών των αρχών είναι πολύ χρήσιμη για την κατανόηση του πώς λειτουργεί

Διαβάστε περισσότερα

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

Διαβάστε περισσότερα

Εισαγωγή στο ΕΛ/ΛΑΚ. Προσαρμογή: Α. Ανδρεάτος Μάϊος 2011. Εισαγωγή στο ΕΛ\ΛΑΚ 1

Εισαγωγή στο ΕΛ/ΛΑΚ. Προσαρμογή: Α. Ανδρεάτος Μάϊος 2011. Εισαγωγή στο ΕΛ\ΛΑΚ 1 Εισαγωγή στο ΕΛ/ΛΑΚ Προσαρμογή: Α. Ανδρεάτος Μάϊος 2011 Εισαγωγή στο ΕΛ\ΛΑΚ 1 Εισαγωγή στο ΕΛ/ΛΑΚ και τη χρήση του Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) στην Εκπαίδευση, τη ημόσια ιοίκηση

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα2 Προγραμματιστικά Περιβάλλοντα Δημιουργία Εφαρμογών 6.1 Γλώσσες και εργαλεία προγραμματισμού Τι είναι οι γλώσσες προγραμματισμού; Είναι οι τεχνητές γλώσσες στις οποίες γράφονται οι εντολές των

Διαβάστε περισσότερα

Ελεύθερο Λογισμικό και GNU/Linux

Ελεύθερο Λογισμικό και GNU/Linux Ελεύθερο Λογισμικό και GNU/Linux Πηγές: http://rainbow.cs.unipi.gr/projects/oss/wiki/eventzero http://dimitris.glezos.com/opensource/ http://www.myubuntu.gr/index.php/γιατί-linux/ http://www.gnu.org/philosophy/free-sw.el.html

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού Κεφάλαιο 6 ο Διαχείριση στοιχείων λογισμικού Διδακτικοί στόχοι Να περιγραφούν οι κύριοι τύποι λογισμικού Να εξεταστεί το λογισμικό συστήματος και τα λειτουργικά συστήματα Να αναλυθούν οι πιο σημαντικές

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα