ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και

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

Download "ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και"

Transcript

1 ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και VRML. ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και VRML ΕΙΣΑΓΩΓΗ VRML... 6 ΒΑΣΙΚΗ ΘΕΩΡΙΑ ΚΟΜΒΟΙ...10 INTERPOLATION...15 VRML και ΗΧΟΣ...16 υναµική κίνηση αντικειµένων JAVA...25 Τύποι εφαρµογών...25 Αυτόµατη συλλογή απορριµµάτων (automatic garbage collection)...30 Μικροεφαρµογές και ιστοσελίδες...31 ιαδικασία που ακολουθείται για να φορτωθεί µία µικροεφαρµογή...35 Νήµατα (Threads)...36 Θύρα...43 Υπηρεσία...43 Κλάσεις της Java για TCP πρίζες Ασφάλεια µικροεφαρµογών...49 Ασφάλεια και περιορισµοί των µικροεφαρµογών Σύνδεση VRML και JAVA...59 Ανταλλαγή πληροφοριών µε την σκηνή...63 Απόκτηση αναφοράς σε έναν κόµβο...64 Ανάγνωση τιµών από πεδία κόµβων της VRML σκηνής...64 Λήψη και αναγνώριση συµβάντων προερχόµενων από την VRML σκηνή...66 Αποστολή συµβάντων προς την VRML σκηνή...69 ηµιουργία σκηνών VRML µέσα από πρόγραµµα Java ΠΕΡΙΓΡΑΦΗ ΕΦΑΡΜΟΓΗΣ...73 Συνάρτηση...84 Τύπος ορίσµατος...84 Λειτουργία ΕΙΣΑΓΩΓΗ Η τεχνολογία στον τοµέα των γραφικών υπολογιστών κάνει συνεχή άλµατα. Τα τελευταία χρόνια έχει δοθεί ιδιαίτερη έµφαση στις εφαρµογές που σχετίζονται µε τρισδιάστατα γραφικά στο διαδίκτυο. 1

2 Τέτοιες εφαρµογές είναι η τηλεπαρουσίαση τρισδιάστατων µοντέλων, η τηλεσυνεργασία σε θέµατα τρισδιάστατων µοντέλων ή γραφικών (µεταξύ δύο συνεργαζόµενων σχεδιαστών ή µηχανικών), η αναπαράσταση τρισδιάστατων κόσµων στο δίκτυο, η µετάδοση κινούµενης εικόνας µε κωδικοποίηση βασισµένη στα τρισδιάστατα µοντέλα, τα τρισδιάστατα παιχνίδια στα οποία συµµετέχουν πολλοί χρήστες, η διαφήµιση στο δίκτυο κ. α. κόσµων Μέχρι και σήµερα χρησιµοποιούνται πολλά πρότυπα για την αποθήκευση των τρισδιάστατων γραφικών σε ψηφιακή µορφή, όπως τα αρχεία τύπου DXF για εφαρµογές CAD, τα αρχεία τύπου OFF (Object File Format) κ. α. Όµως, στη συνέχεια, καθώς ήταν όλο και περισσότεροι αυτοί που άρχισαν να ασχολούνται µε τρισδιάστατα γραφικά, άρχισαν να γίνονται εµφανή τα πρώτα προβλήµατα που σχετίζονταν µε την ασυµβατότητα µεταξύ των προγραµµάτων δηµιουργίας και απεικόνισης τρισδιάστατων γραφικών, την πλατφόρµα υπολογιστών στην οποία λειτουργούσαν, έγινε επιτακτική η ανάγκη υιοθέτησης ενός προτύπου το οποίο θα λύνει τα προβλήµατα συµβατότητας και θα µπορεί να χρησιµοποιηθεί από όλους. Την διέξοδο σε αυτά τα προβλήµατα ήρθε να δώσει η VRML. Η Virtual Reality Modeling Language (VRML) είναι µια γλώσσα που δίνει τη δυνατότητα αναπαράστασης τρισδιάστατων γραφικών που έχει σχεδιαστεί για να χρησιµοποιείται στο Internet, intranets, και local client systems, αλλά το σπουδαιότερο από όλα προσφέρει ένα παγκόσµιο 2

3 πρότυπο τυποποίησης. Μπορεί να ενσωµατωθεί σε µία ιστοσελίδα αλλά βέβαια για να απεικονιστεί ο κόσµος από τον εξεταστή VRML (που υπάρχει ενσωµατωµένος στον εξεταστή ιστοσελίδων ) θα πρέπει να υπάρχει το ή τα αντίστοιχα αρχεία στον τοπικό δίσκο. εν υπάρχει δηλαδή η δυνατότητα για ένα οπτικό αποτέλεσµα προς τον χρήστη παράλληλα µε την ροή των δεδοµένων του τρισδιάστατου µοντέλου µέσω του δικτύου (streaming). Ακόµη όµως και εάν αυτό γινόταν θα έπρεπε να περιοριστούµε σε streaming δεδοµένων που θα είχαν προαποθηκευτεί σε ένα αρχείο σε κάποιο σηµείο του διαδικτύου. Αυτό γενικά είναι και το µεγαλύτερο πρόβληµα στην χρησιµοποίηση 3D γραφικών στις περισσότερες εφαρµογές στο διαδίκτυο. Η VRML 2.0 παρέχει τρόπους για δυναµική δηµιουργία, µετατροπή, προσθήκη ή και διαγραφή αντικειµένων. Όπως το script node,και το ποιο «επίσηµο» EAI (External Authoring Interface), το οποίο µπορεί να χρησιµοποιηθεί για τη ροή πληροφορίας που αφορά τα χαρακτηριστικά και την κίνηση τρισδιάστατων αντικειµένων σε ένα κόσµο της VRML και προσφέρει ουσιαστικά τη σύνδεση και απευθείας επικοινωνία µε εξωτερικές applets. Το ΕΑΙ έχει υλοποιηθεί σε JAVA. Η Java, όµως, είναι µία πλήρης γλώσσα προγραµµατισµού που µπορεί να χρησιµοποιηθεί για την µετάδοση δεδοµένων µέσω δικτύου. Έτσι, αν συνδυαστούν οι δυνατότητες που προσφέρουν οι Java, ΕΑΙ και VRML µπορεί να αναπτυχθεί µία πληθώρα 3

4 εφαρµογών που βασίζονται στην µετάδοση και εικονοποίηση 3D γραφικών. Ένα από τα σηµαντικότερα πλεονεκτήµατα εφαρµογών που δηµιουργούνται µε Java, EAI και VRML είναι η δυνατότητα που προσφέρει κάθε µία από τις προηγούµενες προγραµµατιστικές γλώσσες (άρα και όλες µαζί συνδυαζόµενες) να λειτουργούν µε τον ίδιο τρόπο σε όλες τις πλατφόρµες υπολογιστών µια και όλες οι χρησιµοποιούµενες κλάσεις που απαιτούνται για την µετάφραση βρίσκονται στον html browser. Σκοπός της εργασίας αυτής ειναι η δηµιουργία, µετάδοση και η ανακατασκευή ενός εικονικού κόσµου δηλαδή τρισδιάστατου µοντέλου (ή συνόλου µοντέλων) που θα είχε πραγµατικά χαρακτηριστικά, όπως κίνηση και ήχος στο world wide web. Στο δεύτερο κεφάλαιο γίνεται µια αρκετά λεπτοµερής αναφορά στη γλώσσα µοντελοποίησης τρισδιάστατων γραφικών VRML στον τρόπο σύνταξής της και τις δυνατότητες για παραγωγή ζωντανών τρισδιάστατων κόσµων. Στο τρίτο κεφάλαιο αναφέρεται η γλώσσα προγραµµατισµού Java, ορισµένες δυνατότητές της και συγκεκριµένες λειτουργίες που σχετίζονται µε την εφαρµογή, όπως είναι η χρήση πριζών (sockets) για τη δηµιουργία επικοινωνιών µέσω δικτύου, η χρήση πολυνηµατικού κώδικα, δοµή και λειτουργία µικροεφαρµογών. 4

5 Στο κεφάλαιο τέσσερα αναφέρονται οι τρόποι σύνδεσης της VRML µε τη Java και γίνεται λεπτοµερής αναφορά στον τρόπο λειτουργίας του ΕΑΙ που έχει επιλεγεί για τη σύνδεσή τους στη συγκεκριµένη εφαρµογή. Στο πέµπτο κεφάλαιο γίνεται µια ολοκληρωµένη περιγραφή του συνολικού προγράµµατος πελάτηεξυπηρετητή σύµφωνα µε χρονικό διάγραµµα που αυτή εκτελείται. Και στο τέλος παρουσιάζονται τα αποτελέσµατα της εφαρµογής, καθώς και συµπεράσµατα και ιδέες για τη χρησιµοποίηση της τεχνικής που αναπτύξαµε. Το World Wide Web (WWW) είναι σήµερα η πιο σηµαντική υπηρεσία στο διαδίκτυο, λόγω της δυνατότητας ταυτόχρονης παρουσίασης κειµένου, γραφικών και multimedia που διαθέτει. Ωστόσο, η γλώσσα που χρησιµοποιείται για τη συγγραφή hypermedia κειµένων, η Hypertext Mark-Up Language (HTML), περιορίζει την απεικόνιση της πληροφορίας σε ένα δισδιάστατο πλαίσιο. Την ανάγκη απεικόνισης µιας τρισδιάστατης διεπιφάνειας, που προσεγγίζει πιο ρεαλιστικά τον πραγµατικό κόσµο δηµιουργήθηκε για να ικανοποιήσει η VRML, που έχει τη δυνατότητα να δηµιουργεί τρισδιάστατους κόσµους (worlds) και να τους ενσωµατώνει σε σελίδες WWW τρέχοντας πάνω σε πλατφόρµα Netscape Navigator ή Microsoft Internet Explorer. 5

6 2.VRML Η VRML ήταν η πρώτη προσπάθεια για την ύπαρξη ενός εργαλείου µε µία κοινή γλώσσα για την περιγραφή 3D κόσµων. Μετά από διάφορες προτάσεις την άνοιξη του 1994 στο πρώτο ετήσιο συνέδριο του WWW στην Γενεύη, όπου συζητήθηκε η υποστήριξη διεπιφανειών εικονικής πραγµατικότητας (Virtual Reality Ιnterfaces) στο World Wide Web και κατέληξαν στη διατύπωση των προδιαγραφών της έκδοσης 1.0., κατατέθηκαν αρκετές προτάσεις για την µορφή του αρχείου (file format), από τις οποίες επιλέχθηκε τελικά αυτή του Open Inventor της Silicon Graphics. Πάνω σε αυτό το format στηρίχθηκε η κατασκευή της VRML. Ωστόσο, οι κόσµοι που µπορούσε να δηµιουργήσει κανείς µε τη VRML 1.0 ήταν πολύ φτωχοί. Τα αντικείµενα ήταν "άψυχα", δεν υπήρχε καµία δυνατότητα αλληλεπίδρασης του χρήστη µε το εικονικό περιβάλλον. Αυτό είχε ως συνέπεια οι εικονικοί κόσµοι της VRML να µην έχουν καµία χρησιµότητα και να µοιάζουν µε απλές τρισδιάστατες απεικονίσεις γραφικών. Έτσι, έγινε φανερή η ανάγκη επέκτασης της γλώσσας, ώστε να µην περιγράφει απλά τρισδιάστατους χώρους, αλλά και να ορίζει τρόπους αλληλεπίδρασης µε το χρήστη. Για το σκοπό αυτό κατατέθηκαν εκ νέου προτάσεις, από τις οποίες τελικά δηµιουργήθηκαν οι προδιαγραφές (specifications) της VRML 2.0. Η VRML 2.0 σχεδιάστηκε έτσι ώστε να ικανοποιεί τα παρακάτω κριτήρια: Την ανάπτυξη προγραµµάτων ικανών για την δηµιουργία, σύνταξη και υποστήριξη VRML αρχείων 6

7 καθώς και προγραµµάτων αυτόµατης µετάφρασης άλλων συνηθισµένων αρχείων 3D τυποποίησης σε VRML αρχεία. Να παρέχει την δυνατότητα χρησιµοποίησης και συνδυασµού δυναµικών 3 αντικειµένων καθώς και την δυνατότητα επαναχρησιµοποίησης τους. Επεκτατότητα, δηλαδή την δυνατότητα να προσθεθούν τύποι αντικειµένων όχι σαφώς ορισµένων στην VRML. Ικανότητα υλοποίησης σε ευρεία ποικιλία συστηµάτων. Επιδόσεις αλληλεπίδρασης σε διάφορες πλατφόρµες προγραµµατισµού καθώς και την δυνατότητα δηµιουργίας αυθαίρετα µεγάλων δυναµικών 3δ κόσµων. Η VRML δίνει τη δυνατότητα µε ένα απλό editor να γράψει κανείς τους δικούς του τρισδιάστατους κόσµους µε απλές εντολές (σε σχέση µε άλλα πακέτα γραφικών), έχοντας µόνο κάποιες βασικές γνώσεις γραφικών. Οι έτοιµες δοµές που παρέχει επιτρέπουν τη σχεδίαση βασικών ή και πλέον περίπλοκων σχηµάτων και την παράθεση τους στο χώρο, καθώς και χρησιµοποίηση έτοιµων αντικειµένων. Τα αντικείµενα αυτά µπορούν να είναι ακριβή αντίγραφα πραγµατικών αντικειµένων που έχουν δηµιουργηθεί σε ειδικά εργαστήρια, είτε µε ειδικά βοηθητικά προγράµµατα δηµιουργίας 3δ γραφικών (π.x. Spazz 3d, cosmo 3d). Ακόµη, όπως και η HTML, είναι ανεξάρτητη από την πλατφόρµα εκτέλεσης, επιτρέπει δηλαδή τη χρήση ενός παγκόσµια αποδεκτού προτύπου για τον προγραµµατισµό, ανεξάρτητα από το hardware. Αποµένει στις εταιρείες πληροφορικής να κατασκευάζουν κατάλληλα προγράµµατα (π.χ. πρόσθετα για το πρόγραµµα Netscape, plug-ins [14]) που να διαβάζουν τη VRML και να απεικονίζουν τους κόσµους µέσα από ένα εξεταστή ιστοσελίδων. Για παράδειγµα µία έκδοση του Netscape ανώτερη του 4.5 και η έκδοση του πρόσθετου Cosmo Player, παρέχουν πλήρεις δυνατότητες απεικόνισης των VRML κόσµων. Τέλος, σε περίπτωση που θέλουµε να προσθέσουµε 7

8 περισσότερες δυνατότητες και λειτουργικότητα στους VRML κόσµους µας, µπορούµε να χρησιµοποιήσουµε την Java και το EAI (External Authoring Interface). Η έκδοση 1.2 της Java είναι η ενδεδειγµένη σε µία τέτοια περίπτωση. ΒΑΣΙΚΗ ΘΕΩΡΙΑ 3 Η VRML χρησιµοποιεί ένα δεξιόστροφο σύστηµα συντεταγµένων. ηλαδή τα θετικά x είναι προς τα δεξιά, τα θετικά y είναι προς τα πάνω και τα θετικά z είναι προς την πλευρά του θεατή (δηλαδή από την οθόνη προς τον θεατή), όπως φαίνεται και στο σχήµα 2.1. y x z y Σχήµα 2.1 Το σύστηµα συντεταγµένων που χρησιµοποιεί η VRML. 8

9 Σε πεδία συντεταγµένων χρειάζεται πάντα να προσδιορίζονται και οι τρεις συντεταγµένες. Η σειρά ορισµού τους είναι πάντα η x y z, έχοντας µεταξύ τους ένα ή περισσότερα κενά. Η διεύθυνση που ορίζει ο άξονας z είναι αυτή που θεωρείται ως διεύθυνση παρακολούθησης και γενικά ως η προεπιλεγµένη διεύθυνση όταν δεν καθορίζεται κάποια άλλη. Ακόµη, οτιδήποτε και αν συµβεί σε ένα αντικείµενο µιας σκηνής (µετακίνηση περιστροφή κ.λ.π.), θεωρείται πάντα σε σχέση µε το κέντρο του αντικειµένου, µε εξαίρεση ορισµένες ειδικές περιπτώσεις που δεν ενδιαφέρουν άµεσα. Τώρα που ορίσαµε το σύστηµα συντεταγµένων που χρησιµοποιεί η VRML ας δούµε τι γίνεται όταν έχουµε µια οµάδα αντικειµένων και θέλουµε να τα χειριστούµε στο δικό τους σύστηµα συντεταγµένων. Για να διευκρινίσουµε αυτό το παράδειγµα ας δούµε το ηλιακό σύστηµα µε αρχή συντεταγµένων το ήλιο. Σ αυτή την περίπτωση οι τιµές των συντεταγµένων ( x, y, z ) για τους δεκατέσσερις δορυφόρους του ήλιου θα ήταν ιδιαίτερα µεγάλες και ιδιαίτερα δύσκολο για µας να τους διαχειριστούµε και να συντηρήσουµε. Αυτό που θέλουµε να κάνουµε είναι να ορίσουµε τον ήλιο και τους δορυφόρους του στο δικό τους σύστηµα συντεταγµένων, το οποίο στη συνέχεια θα εισάγουµε στο ηλιακό σύστηµα συντεταγµένων. Αυτού του τύπου το εντοπισµένο σύστηµα συντεταγµένων θα το ονοµάζουµε τοπικό σύστηµα συντεταγµένων. Χρησιµοποιώντας το τοπικό σύστηµα συντεταγµένων απλοποιούµε τη δηµιουργία σκηνών VRML,αφού µπορούµε να χτίσουµε και να δοκιµάσουµε κάθε κοµµάτι µιας σκηνής χωριστά και µετά να συναρµολογήσουµε όλη τη σκηνή σε ένα ενιαίο σύστηµα. Και άλλωστε µ αυτόν τον τρόπο κρατάµε και σε λογικό επίπεδο τους αριθµούς που χρησιµοποιούµε στη γεωµετρία 9

10 της σκηνής, δεδοµένου ότι αν χρησιµοποιούσαµε συντεταγµένες αναφορικά µε τον ήλιο θα έπρεπε να χρησιµοποιήσουµε αστρονοµικά νούµερα. ΚΟΜΒΟΙ Για την διευκόλυνση µας, η VRML παρέχει ένα σαφή τρόπο ορισµού αντικειµένων. Για να ορίσουµε ένα αντικείµενο στο χώρο χρειάζεται να ορίσουµε τη γεωµετρία, τη θέση, το χρώµα και το υλικό της επιφάνειάς του. Στη VRML αυτό γίνεται εύκολα µε τη χρήση των κόµβων(nodes). Ο κάθε κόµβος περιλαµβάνει ένα σύνολο από πεδία, τα οποία καθορίζουν τις βασικές ιδιότητες αυτού του κόµβου. Ένας κόµβος αποτελεί µια βασική δοµή, η οποία µπορεί να υπάρξει 10

11 µόνη της σε ένα VRML αρχείο. Η VRML διαθέτει 54 κόµβους. Αυτοί, ανάλογα µε τις λειτουργίες τους, χωρίζονται σε εννιά κατηγορίες. Αυτές είναι οι εξής: Κόµβοι οµαδοποίησης (grouping nodes), ειδικές οµάδες (special groups), απλοί κόµβοι (common nodes), αισθητήρες (sensors), κόµβοι γεωµετρίας (geometry), κόµβοι γεωµετρικών ιδιοτήτων (geometric properties), κόµβοι εµφάνισης (appearance), κόµβοι παρεµβολής (interpolators) και κόµβoι ένωσης (bindable nodes). Η VRML υποστηρίζει δύο κύριες κατηγορίες τύπων δεδοµένων, τα field και event. Τα βασικά αυτά δεδοµένα χρησιµοποιούνται σε όλους τους κόµβους (nodes) για τον ορισµό των αντικειµένων. Υπάρχουν δύο κλάσεις των παραπάνω τύπων. Η µία περιέχει field και event που έχουν µία µόνο τιµή, ενώ η άλλη περιέχει field και event που έχουν παραπάνω από µία τιµή, περιέχουν δηλαδή µία πλειάδα τιµών. Τα ονόµατα όλων των field και event που ανήκουν στην πρώτη κλάση ξεκινάει µε SF (singlevalue field) ενώ της δεύτερης µε MF (multi-value field). Οι τιµές των MF δεδοµένων γράφονται µέσα σε αγκύλες και τα δεδοµένα χωρίζονται µεταξύ τους µε κενά ή µε κόµµα. Ένα MF δεδοµένο µε µηδενικές τιµές γράφεται []. Για όλα τα δεδοµένα που είναι τύπου MF η αρχική τιµή είναι η []. Υπάρχουν δύο κατηγορίες πεδίων, τα απλά fields και τα exposedfields. Τα πρώτα ορίζουν την αρχική τιµή ενός node και είναι private, δηλαδή δεν µπορούν να αλλάξουν τιµή κατά τη διάρκεια εκτέλεσης του προγράµµατος. Αντίθετα, 11

12 τα exposedfields ορίζουν και αυτά την αρχική τιµή ενός node αλλά είναι public, δηλαδή µπορούν να αλλάξουν τιµή. Αυτό µας επιτρέπει κάποια nodes να µετατρέπουν την τιµή κάποιων πεδίων άλλων nodes. Κάθε node στην VRML µπορεί να λάβει και να στείλει events. Τα events που λαµβάνει ορίζονται σαν eventin, ενώ αυτά που µπορεί να λάβει ορίζονται σαν eventout. Το συµβάν εξόδου (eventout) που παράγεται από έναν κόµβο της VRML µπορεί να οδηγηθεί σαν συµβάν εισόδου σε έναν άλλον κόµβο µε την εντολή ROUTE. Αυτό αποτελεί µια πολύ χρήσιµη ιδιότητα της VRML, γιατί, όπως θα δούµε, µ αυτόν τον τρόπο συνδέονται τα διάφορα αντικείµενα ενός κόσµου. Η VRML χρησιµοποιεί µια δοµή δέντρου για κόµβους που περιέχονται σε µια σκηνή. Αυτό σηµαίνει ουσιαστικά ότι έχουµε µία λογική δοµή δέντρου, η οποία ξεκινά µε τον γονέα κόµβο, από τον οποίο µπορούµε να έχουµε άλλον ή άλλους κόµβους µε µία σχέση γονέα παιδιού, οι οποίοι µε τη σειρά τους µπορούν να αποτελούν γονέα κόµβο και ούτω καθεξής. Σε κάθε ένωση µεταξύ κόµβων υπάρχει ένας συσσωρευτικός κόµβος µετασχηµατισµού, ο οποίος αναφέρεται σε όλους. Υπάρχει δηλαδή µια οµαδοποίηση µεταξύ αυτών των κόµβων, η οποία είναι πολύ χρήσιµη σε περιπτώσεις που θέλουµε να έχουµε µια συνολική µετακίνηση ή περιστροφή πολλών αντικειµένων. 12

13 Αλλά για να γίνει αντιληπτό το νόηµα των παραπάνω είναι καλύτερα να παρουσιάσουµε ένα χαρακτηριστικό παράδειγµα: Παρακάτω φαίνεται σε δοµή δέντρου ένα µοντέλο ηλιακού συστήµατος. Αν θα θέλαµε να υλοποιήσουµε µε την ίδια δοµή σε VRML ο κώδικας θα είχε την παρακάτω µορφή: #VRML V2.0 utf8 DEF ROOTNODE Transform { children [ DEF SOL Transform { children Shape { appearance Appearance { material Material { diffusecolor shininess 1 13

14 here } ] } } geometry Sphere { radius 5 } } } DEF TERRA Transform { translation children [ DEF EARTH Transform { children Shape { appearance Appearance { material Material { diffusecolor } } geometry Sphere { } } } DEF LUNA Transform { translation children Shape { geometry Sphere { radius 0.5 } } } ] } DEF JUPITER Transform { children [ # Jupiter and it's 14 moons in } ] 14

15 Όπως µπορεί να φανεί σ αυτό το παράδειγµα, ο κώδικας είναι δοµηµένος σε πολλά τοπικά συστήµατα συντεταγµένων και κάθε µετασχηµατισµός που εφαρµόζεται σε κάθε transform κόµβο θα εφαρµόζεται και στα παιδιά του στην ίδια τοπική αρχή συντεταγµένων. Για παράδειγµα, αν εφαρµόσουµε ένα translation πεδίο στον transform κόµβο που ονοµάζεται TERRΑ, τότε όλα τα παιδιά (children) του κόµβου αυτού θα υποστούν αυτή τη µεταβολή. ηλαδή και η σφαίρα που την ονοµάσαµε µε την εντολή DEF EARTH και η σφαίρα LUNA θα µετασχηµατιστούν κατά την καθορισµένη ποσότητα. INTERPOLATION Οι interpolator nodes µας επιτρέπουν να κάνουµε γραµµική προσέγγιση µιας συνάρτησης. Υπάρχουν διάφορες κατηγορίες interpolators, όλοι όµως έχουν κοινά τα παρακάτω πεδία. Το <type> εξαρτάται από τον τύπο του interpolator που χρησιµοποιούµε και οι τιµές που δίνουµε θα πρέπει να είναι ανάλογου τύπου. exposedfield MFFloat key [...] exposedfield MF<type> keyvalue [...] eventin SFFloat set_fraction eventout [S M]F<type> value_changed Στο πεδίο key ορίζουµε τις τιµές που διαµερίζουν το πεδίο ορισµού της συνάρτησης. Στο πεδίο keyvalue εισάγουµε τις τιµές της άγνωστης συνάρτησης F που 15

16 θέλουµε να προσεγγίσουµε. Κάθε τιµή στο πεδίο key αντιστοιχεί σε µία τιµή στο πεδίο keyvalue. Στο set_fraction εισάγουµε µία τιµή και στο value_changed µας επιστρέφει την τιµή που προκύπτει από την προσέγγιση της F στο "σηµείο" set_fraction. Η τιµή που µας επιστρέφει εξαρτάται από τον τύπο του interpolator. Το πλήθος των τιµών του πεδίου key θα πρέπει να είναι ίσο µε το πλήθος των τιµών του πεδίου keyvalue. VRML και ΗΧΟΣ Η VRML δίνει τη δυνατότητα αναπαραγωγής αρχείων ήχου, επιβεβαιώνοντας ακόµα περισσότερο το σκοπό για τον οποίο αναπτύχθηκε, τη ρεαλιστική, δηλαδή, απεικόνιση της πραγµατικότητας. Μια πληθώρα παραµέτρων και πεδίων µέσα στα δύο βασικά nodes δίνουν την ευκαιρία στον προγραµµατιστή να ελέγχει πλήρως τον τρόπο µε τον οποίο θα ενσωµατωθεί ο ήχος µέσα στον VRML κόσµο. Sound node Sound { exposedfield SFVec3f direction exposedfield SFFloat intensity 1 exposedfield SFVec3f location exposedfield SFFloat maxback 10 exposedfield SFFloat maxfront 10 exposedfield SFFloat minback 1 exposedfield SFFloat minfront 1 exposedfield SFFloat priority 0 16

17 exposedfield SFNode source NULL field SFBool spatialize TRUE } Με το node Sound µπορούµε να περιγράψουµε λεπτοµερώς τη θέση και τον τρόπο εκποµπής του ήχου. Υπάρχουν δύο τρόποι διάδοσης ήχου εκπεµπόµενου από σηµείο που υποστηρίζονται στη VRML, ο σφαιρικός και ο ελλειψοειδής, µε το δεύτερο να είναι σαφώς περισσότερο ευέλικτος. Ωστόσο, εκτός από τη σηµειακή εκποµπή, είναι δυνατή η εκλογή περιβαλλοντικής εκποµπής ήχου, όπως συµβαίνει εξάλλου και στην πραγµατικότητα, ακούγοντας π.χ. τον ήχο της πόλης από µακριά. Αναλυτικά τα πεδία του node Sound έχουν ως εξής: Το πεδίο direction είναι ένα τρισδιάστατο διάνυσµα που περιγράφει τη διεύθυνση διάδοσης. Όταν η διάδοση είναι σφαιρική, δεν έχει ιδιαίτερο νόηµα, όταν όµως είναι ελλειψοειδής, ρυθµίζει σε συνδυασµό µε τις τιµές των minback και minfront τη διεύθυνση της εσωτερικής έλλειψης (αναλόγως µε τα maxback και maxfront για την εξωτερική έλλειψη). Η default τιµή του είναι [0 0 1], δηλαδή στραµµένο προς τον άξονα z. Το πεδίο intensity καθορίζει την ένταση του ήχου που θα εκπέµπει κάθε πηγή και οι τιµές του κυµαίνονται από 0.0 (µηδενική ένταση) έως 1.0 (πλήρης ένταση). Με τον τρόπο αυτό προσεγγίζεται η πραγµατικότητα, αφού οι πηγές ήχου δεν έχουν όλες την ίδια ένταση. Για ένα αεροπλάνο π.χ. η τιµή θα 17

18 ήταν κοντά στο 1.0, ενώ για ένα ρυάκι κοντά στο 0.0. Η default τιµή του είναι 1. Το πεδίο location είναι το διάνυσµα στο οποίο ορίζουµε τη θέση της πηγής ήχου µέσα στον κόσµο. Η default τιµή του είναι [0 0 0], δηλαδή το σήµα εκπέµπεται από το κέντρο του κόσµου που έχουµε δηµιουργήσει. Τα πεδία minback και minfront είναι οι εστίες που ορίζουν µια έλλειψη, µέσα στην οποία η ένταση του ήχου είναι σταθερή και έχει τη µέγιστη τιµή της (αυτή που ορίστηκε στο πεδίο intensity). Tα πεδία maxback και maxfront είναι οι εστίες που ορίζουν µια έλλειψη, έξω από την οποία η ένταση του ήχου είναι µηδενική. Εποµένως, η ένταση του ήχου µειώνεται σταδιακά από την εσωτερική στην εξωτερική έλλειψη και µάλιστα αντιστρόφως ανάλογα µε το τετράγωνο της απόστασης. Πρακτικά, για να έχουµε µια οµαλή ελάττωση του ήχου, χωρίς να αποκόπτεται απότοµα στα άνω και κάτω όρια, πρέπει να διαλέξουµε τιµές για τα maxback και maxfront δέκα φορές µεγαλύτερες από τα αντίστοιχα minback και minfront. Η default τιµή των minback και minfront είναι 1, ενώ των maxback και maxfront είναι 10. Το πεδίο priority µας επιτρέπει να θέσουµε κάποια ιεραρχία στους ήχους που θέλουµε να ακουστούν, στην περίπτωση που το µέσο αναπαραγωγής (η κάρτα ήχου) δε διαθέτει αναγκαίο αριθµό καναλιών ώστε να επεξεργαστεί όλες τις διακριτές εκποµπές. Οι τιµές του πεδίου κυµαίνονται από 0.0 έως 1.0. Οι περισσότεροι ήχοι θα πρέπει να έχουν προτεραιότητα 18

19 0.0, ενώ µόνο σύντοµοι και ειδικοί ήχοι (π.χ. µια σύγκρουση) µπορούν να έχουν υψηλές τιµές προτεραιότητας ώστε να ακουστούν ακόµα και αν έχουν χαµηλότερη ένταση ή είναι µακρύτερα από κάποια άλλη πηγή ήχου. Η default priority είναι 0. Το πεδίο source είναι τύπου node και εκεί δηλώνουµε το node από το οποίο θα διαβάσει ο browser τον ήχο που έχουµε αναθέσει στο αντικείµενο. Τέτοια nodes είναι το AudioClip, στο οποίο θα αναφερθούµε παρακάτω και το MovieTexture. Σε ότι αφορά το MovieTexture, θα πρέπει να επιλεγεί format κινούµενης εικόνας στο οποίο υποστηρίζεται και ήχος (π.χ. το MPEG ή το Quicktime). Η default τιµή είναι NULL. To πεδίο spatialize είναι τύπου boolean και είναι αυτό που µας επιτρέπει να δηµιουργήσουµε περιβαλλοντικούς (ambient) ήχους. Όταν η τιµή του είναι TRUE, ο browser πρέπει να ενεργοποιήσει το stereo και να τοποθετήσει στο σωστό σηµείο µεταξύ Left και Right την πηγή ήχου ανάλογα µε τη θέση της (η διαδικασία λέγεται panning), αν φυσικά η κάρτα ήχου του συστήµατος είναι στερεοφωνική. Όταν η τιµή του πεδίου είναι FALSE, η εκποµπή γίνεται µονοφωνικά και έτσι δίνεται η εντύπωση στον ακροατή ότι ο ήχος είναι οµοιόµορφα διαδεδοµένος στο χώρο. Για να δηµιουργήσουµε ambient ήχους που ακούγονται σε όλο τον κόσµο που έχουµε κατασκευάσει, πρέπει να θέσουµε τιµές στα πεδία minfront και minback τέτοιες που να καλύπτουν το σκηνικό από τη µια άκρη στην άλλη, αφού η ένταση του ήχου µέσα στην έλλειψη 19

20 που δηµιουργούν είναι αναλλοίωτη. Η default τιµή του πεδίου είναι TRUE. AudioClip node AudioClip { exposedfield SFString description "" exposedfield SFBool loop FALSE exposedfield SFFloat pitch 1.0 exposedfield SFTime starttime 0 exposedfield SFTime stoptime 0 exposedfield MFString url [] eventout SFTime duration_changed eventout SFBool isactive } Με το node AudioClip πραγµατοποιούµε τη διασύνδεση των αρχείων ήχου µε τα nodes της VRML που εµπεριέχουν ήχο (όπως το Sound). Εδώ ορίζουµε την ακριβή τοποθεσία του αρχείου, τη διάρκεια του αποσπάσµατος, το αν θα επαναλαµβάνεται συνεχώς κλπ. Τα πεδία που περιλαµβάνει είναι τα ακόλουθα: Το πεδίο description είναι τύπου string και προσφέρεται για να δοθεί µια περιγραφή κειµένου που χαρακτηρίζει το απόσπασµα που θα ακουστεί. Αν και δεν είναι απαραίτητο, µπορεί να απεικονιστεί στην οθόνη την ώρα της αναπαραγωγής του ήχου. Το πεδίο loop είναι µια boolean µεταβλητή που καθορίζει αν το audioclip θα επαναλαµβάνεται συνεχώς ή θα εκτελεστεί µια µόνο φορά. H default τιµή είναι 20

21 FALSE, δηλαδή το απόσπασµα δεν επαναλαµβάνεται. Λειτουργεί σε συνδυασµό µε τα πεδία starttime και stoptime, όπως θα δούµε παρακάτω. Η τιµή του πεδίου pitch είναι ένας πολλαπλασιαστής µε τον οποίο αλλάζουµε την ταχύτητα αναπαραγωγής (playback speed) του αρχείου. Αν είναι 1.0 τότε το κοµµάτι αναπαράγεται όπως ακριβώς είναι στην πραγµατικότητα, ενώ αν είναι 2.0 τότε η ταχύτητά του είναι διπλάσια, ενώ οι νότες είναι µια οκτάβα ψηλότερα (στα MIDI αρχεία η αντιστοιχία είναι επακριβής). Αναλόγως, αν ο πολλαπλασιαστής είναι 0.5 τότε η ταχύτητα γίνεται υποδιπλάσια και το κοµµάτι κατεβαίνει µια οκτάβα. Αν το αρχείο προέρχεται από δειγµατοληψία (π.χ. Wave αρχεία), το pitch αλλάζει το playback rate. Έτσι, αν η τιµή του είναι 2.0 θεωρείται ότι σε αρχείο Wave µε ρυθµό δειγµατοληψίας (sampling rate) 11.05kHz έχει γίνει δειγµατοληψία στα 22.1kHz και το αποτέλεσµα είναι αυτό που προαναφέραµε. Η default τιµή του πεδίου είναι 1. To πεδίο starttime ορίζει σε ποια χρονική στιγµή το audioclip θα γίνει ενεργό, ενώ το πεδίοstoptime ορίζει σε ποια χρονική στιγµή το audioclip θα γίνει ανενεργό. Ισχύουν µερικές παραδοχές: Αν θέσουµε τιµή στο stoptime µικρότερη ή ίση µε το starttime, τότε η τιµή του stoptime δε λαµβάνεται υπόψη και το audioclip είναι ενεργό µέχρι να τελειώσει ο πρώτος κύκλος του playback, αν to loop είναι FALSE, ή για πάντα, αν το loop είναι TRUE. Αν, αντίθετα η τιµή του stoptime είναι 21

22 µεγαλύτερη του starttime, τότε το audioclip είναι ενεργό µέχρι να τελειώσει ο πρώτος κύκλος, αν duration < (stoptime-starttime) και loop = FALSE ή µέχρι να φτάσει η χρονική στιγµή που αντιπροσωπεύει το stoptime, αν (stoptime-starttime)< duration (ανεξαρτήτως τιµής του loop) ή (stoptime-starttime) > duration και loop = TRUE. To πεδίο url είναι τύπου string και δέχεται το URL (Uniform Resource Locator) του αρχείου ήχου που έχουµε επιλέξει. Η διεύθυνση του αρχείου µπορεί να είναι στο ίδιο directory µε το αρχείο wrl, σε κάποιο άλλο directory του server, ή και σε άλλο web server οπουδήποτε στον κόσµο. Οι προδιαγραφές της VRML 2.0 επιβάλλουν να υποστηρίζεται τουλάχιστον το format Wave της Microsoft, ενώ συνίσταται η υποστήριξη του General ΜΙDI format. Ο Cosmoplayer της Silicon Graphics υποστηρίζει και τα δύο. To event duration_changed παράγεται όταν η διάρκεια του κοµµατιού είναι διαφορετική από αυτή που έχει δηλωθεί. Αυτό πρακτικά µπορεί να συµβεί µόνο όταν ενώ έχει φορτωθεί το κοµµάτι, τo URL στο οποίο βρίσκεται έχει αλλάξει. Η αλλαγή της τιµής του pitch δεν επηρεάζει το event αυτό, γιατί η διάρκεια υπολογίζεται πάντα µε την τιµή του pitch στο 1.0. Επίσης ούτε η τιµή του loop επηρεάζει το event γιατί η διάρκεια υπολογίζεται πάντα για loop ίσο µε FALSE. Το event isactive χρησιµοποιείται από τα υπόλοιπα nodes για να διαπιστωθεί αν το audioclip. 22

23 είναι ενεργό. Αν κάτι τέτοιο συµβαίνει, θα πρέπει να αναπαράγεται ο ήχος που αντιστοιχεί στο δεδοµένο χρονικό σηµείο που γίνεται το query. To isactive γίνεται ενεργό σύµφωνα µε τον δίπλα πίνακα, όπως εξηγήθηκε παραπάνω στην αναφορά µας για τα starttime και stoptime. Tις υπόλοιπες χρονικές στιγµές, το isactive είναι FALSE. 23

24 υναµική κίνηση αντικειµένων Η VRML 2.0 µας παρέχει µια σειρά κόµβων που µας δίνουν τη δυνατότητα να δώσουµε ζωή στον κόσµο που δηµιουργήσαµε. Αυτό γίνεται µε τη χρησιµοποίηση των Sensor nodes που είναι ο τρόπος του χρήστη για απευθείας αλληλεπίδραση µε τον κόσµο. Έχουµε τρεις κατηγορίες sensors: 1) Touch Sensors, που µας παρέχουν τρόπους ανίχνευσης επίδρασης από το χρήστη χρησιµοποιώντας µία συσκευή εισόδου συνήθως το mouse. 2) Spatial Sensors, που προσφέρουν αισθητηριακά σχετικά µε τον κόσµο. 3) Temporal Sensors. Υπάρχει µόνο ένας Temporal Sensor, ο οποίος είναι ο TimeSensor, ο οποίος παράγει συµβάντα κατά καθορισµένες χρονικές περιόδους, καθώς και κατά καθορισµένα τακτικά διαστήµατα κατά τη διάρκεια αυτών των περιόδων. Οδηγώντας τα συµβάντα που παράγουν αυτοί οι nodes χρησιµοποιώντας την εντολή ROUTE ως συµβάντα εισόδου σε κάποιους άλλους κόµβους, µπορούµε να δηµιουργήσουµε κίνηση, περιστροφή, να παράγουµε ήχο κ.λ.π. αλληλεπιδρώντας ουσιαστικά µε τον VRML κόσµο. Αν θέλουµε µάλιστα η κίνηση που θα παράγουµε να είναι πιο οµαλή µπορούµε να χρησιµοποιήσουµε και κάποιον interpolator node και µέσω αυτού να µεταφερθεί η κίνηση στον κόµβο που θέλουµε να κινήσουµε. Αν ο κόµβος αυτός είναι κόµβος πατέρας περισσότερων αντικειµένων, τότε η κίνηση που θα εφαρµοστεί σ αυτόν θα αφορά και τους υποκείµενους κόµβους. 24

25 3.JAVA Τύποι εφαρµογών Οι εφευρέτες της Java [1, 8] παραδέχονται ότι η Java είναι βασισµένη σε αρχές που είναι δανεισµένες από άλλες γλώσσες προγραµµατισµού όπως οι C, C++ [5], Eiffel και SmallTalk. Γι αυτό και δεν είναι περίεργο το γεγονός ότι η Java µπορεί να χρησιµοποιηθεί σε εφαρµογές ανάλογες µε τις οποίες χρησιµοποιούνται και αυτές οι γλώσσες. Πιο συγκεκριµένα, η Java µπορεί να χρησιµοποιηθεί για την δηµιουργία των εξής τεσσάρων τύπων εφαρµογών: Μικροεφαρµογές (Applets) Εφαρµογές σε γραφικό περιβάλλον (GUI Applications) [23] Εφαρµογές που τρέχουν από γραµµή εντολής (Command Line Applications) Βιβλιοθήκες κλάσεων (Class Libraries) Οι µικροεφαρµογές είναι συνήθως εφαρµογές µικρού µεγέθους που τρέχουν µέσα από ένα εξεταστή ιστοσελίδων που έχει την δυνατότητα χρήσης Java (Java enabled web browser), όπως είναι για παράδειγµα ο Netscape Navigator, o Internet Explorer και ο Hotjava. Στη δεύτερη περίπτωση µιλάµε για τις τυπικές εφαρµογές σε γραφικό περιβάλλον όπως το Notepad των Windows. Οι εφαρµογές της τρίτης περίπτωσης είναι οι εφαρµογές 25

26 που τρέχουν από την γραµµή εντολής του MS-DOS ή από την γραµµή εντολής του UNIX, όπως ακριβώς η εντολή copy του MS-DOS ή η εντολή ls του UNIX. Java. Μία γλώσσα που τρέχει παντού. Ένα από τα βασικά γνωρίσµατα της Java είναι ότι είναι µία γλώσσα στην οποία συνδυάζονται οι αρχές της µεταγλώττισης (compilation) και της µετάφρασης (interpretation). Για την ακρίβεια περίπου ένα 80% του κώδικα ενός προγράµµατος µεταγλωττίζεται, ενώ ένα 20% περίπου µεταφράζεται από τον εξεταστή ιστοσελίδων ή από οποιοδήποτε άλλο περιβάλλον µέσα στο οποίο θα τρέξει τελικά η εφαρµογή. Αλλά αυτό το 20% της µετάφρασης του κώδικα που αποµένει για το τέλος και γίνεται τοπικά (στον υπολογιστή του χρήστη), είναι ο λόγος που δίνει στην Java ένα από τα χαρακτηριστικά της που την κάνουν να ξεχωρίζει. ηλαδή η δυνατότητα της να µεταγλωττίζεται µόνο µία φορά και να τρέχει σε οποιαδήποτε πλατφόρµα. Αυτό που κάνει ένας µεταγλωττιστής C++ είναι ότι παίρνει κώδικα C++ υψηλού επιπέδου και τον µεταγλωττίζει σε εντολές που µπορεί να αντιληφθεί ένας µικροεπεξεργαστής. Αυτό σηµαίνει ότι κάθε διαφορετικός τύπος υπολογιστή χρειάζεται µία διαφορετική µεταγλώττιση του ίδιου C++ προγράµµατος για να µπορεί να το εκτελέσει, γεγονός το οποίο δεν είναι µία εύκολη διαδικασία. Αυτό είναι ένα σηµαντικό πρόβληµα αν σκεφτούµε την ποικιλία τύπων 26

27 υπολογιστών (διαφορετικών ειδών πλατφόρµας) που υπάρχει στις µέρες µας. Το περιβάλλον της Java υπερνικά αυτό το πρόβληµα χρησιµοποιώντας ένα µεσάζοντα ανάµεσα στον µεταγλωττιστή και τον υπολογιστή. Αυτός ο µεσάζοντας καλείται εικονική µηχανή της Java (Java Virtual Machine, JVM). Αντί να γίνεται µεταγλώττιση χωριστά για τον κάθε τύπο υπολογιστή, ο µεταγλωττιστής της Java παίρνει τον πηγαίο κώδικα υψηλού επιπέδου που είναι γραµµένος σε Java, σε ένα αρχείο τύπου κειµένου, και το µεταγλωττίζει σε χαµηλού επιπέδου Java κώδικα από bytes (bytecode), τον οποίο αντιλαµβάνεται η εικονική µηχανή της Java. Αυτή είναι στη συνέχεια υπεύθυνη για τη µετάφραση του κώδικα των bytes, έτσι ώστε να µπορεί να εκτελεστεί στον υπολογιστή που βρίσκεται και αυτή. ηλαδή το µόνο πρόγραµµα που πρέπει να τρέχει αποκλειστικά σε κάποια συγκεκριµένη πλατφόρµα είναι η εικονική µηχανή της Java. Στην ουσία αυτό που κάνει ένας προγραµµατιστής που χρησιµοποιεί Java είναι να µεταγλωττίζει τον πηγαίο κώδικα της Java σε κώδικα από bytes χρησιµοποιώντας τον µεταγλωττιστή της Java. Αυτός ο κώδικας από bytes είναι δυαδικός και ανεξάρτητος από την αρχιτεκτονική του υπολογιστή όπου µεταγλωττίστηκε (την πλατφόρµα του υπολογιστή, όπως συνήθως λέγεται). Όµως, αυτός ο κώδικας από bytes δεν είναι πλήρης, παρά µόνο αν µεταφραστεί από ένα περιβάλλον εκτέλεσης Java (Java runtime environment, JRE), 27

28 συνήθως έναν εξεταστή ιστοσελίδων (Σχήµα 3.1). Επειδή το κάθε περιβάλλον εκτέλεσης Java είναι για µία συγκεκριµένη πλατφόρµα, το τελικό προϊόν θα δουλεύει για αυτήν την συγκεκριµένη πλατφόρµα. Αυτό είναι κάτι πραγµατικά χρήσιµο για τους προγραµµατιστές, αφού µπορεί για παράδειγµα κάποιος να φτιάξει µία µικροεφαρµογή σε σύστηµα UNIX, να την ενσωµατώσει στην ιστοσελίδα του και να µπορεί να την δείξει σε οποιονδήποτε έχει έναν εξεταστή ιστοσελίδων που υποστηρίζει Java, ανεξάρτητα από την πλατφόρµα του υπολογιστή του. Βέβαια, κάθε πλεονέκτηµα συνήθως επιφέρει και κάποια µειονεκτήµατα. Στην περίπτωση αυτή γίνεται ανταλλαγή διαπλατφορµικής λειτουργίας µε ταχύτητα εκτέλεσης. Το κύριο µειονέκτηµα αυτού του συστήµατος είναι ότι η µετάφραση του κώδικα είναι πολύ πιο αργή διαδικασία από την εκτέλεση ενός προγράµµατος που έχει φτιαχτεί για να τρέχει αποκλειστικά σε αυτόν τον υπολογιστή. Για κάθε εντολή στον Java κώδικα από bytes η εικονική µηχανή της Java πρέπει να βρει και να εκτελέσει την ισοδύναµη της για το σύστηµα στο οποίο τρέχει η εφαρµογή. Αυτό δηµιουργεί µία επιβράδυνση στην επεξεργασία ενός προγράµµατος Java. Πηγαίος κώδικας Compiler Bytecode Interpreter JRE 28

29 Σχήµα 3.1 Η επεξεργασία του πηγαίου κώδικα µέχρι την εκτέλεση του. Ακριβώς επειδή ο κώδικάς από bytes πρέπει στο τέλος να µεταφραστεί, οι ιστοσελίδες που περιέχουν µικροεφαρµογές συνήθως απαιτούν πολύ περισσότερη ώρα για να φορτωθούν σε σχέση µε τις συνηθισµένες σελίδες. Αυτό συµβαίνει γιατί ο κώδικας από bytes που στο τέλος θα µετατραπεί σε µία µικροεφαρµογή ή σε µία εφαρµογή, περιέχει περισσότερα µεταγλωττισµένα δεδοµένα από ότι στις άλλες περιπτώσεις όπου δεν θα ακολουθήσει µετάφραση. Ο µεταγλωττισµένος κώδικάς φορτώνεται στο σύστηµα του χρήστη ακριβώς όπως και µία ιστοσελίδα µέσω του διαδικτύου. Αυτή η ατέλεια της Java σ ότι αφορά τις επιδόσεις της αντισταθµίστηκε µε τους µεταγλωττιστές JIT (Just-in-Time compilers). Ένας τέτοιος µεταγλωττιστής µεταγλωττίζει τις συναρτήσεις της Java σε τοπικό κώδικα (native code) για την πλατφόρµα που χρησιµοποιείται, ο οποίος στη συνέχεια εκτελείται πολύ γρήγορα. Χωρίς αυτόν τον µεταγλωττιστή οι συναρτήσεις της Java δεν µετατρέπονται σε τοπικό κώδικα, αλλά παραµένουν σε ένα κώδικα από bytes αναγνωρίσιµο από κάθε πλατφόρµα. Αυτός ο κώδικάς από bytes µεταφράζεται στον υπολογιστή του χρήστη από την εικονική µηχανή της Java. Μία εφαρµογή γραµµένη σε Java µπορεί να τρέξει σε οποιαδήποτε πλατφόρµα, αλλά ένας 29

30 µεταγλωττιστής JIT πρέπει να είναι ειδικά φτιαγµένος για µία συγκεκριµένη πλατφόρµα, αφού θα πρέπει να δηµιουργεί τοπικό κώδικα που θα γίνεται αντιληπτός µόνο από αυτήν την πλατφόρµα. Οι εξεταστές ιστοσελίδων (web browsers) της Netscape και της Microsoft παρέχουν µεταγλωττιστές JIT εδώ και µερικά χρόνια. Ακόµη, ο συνδυασµός µεταγλωττιστή και µεταφραστή προσφέρει ασφάλεια και σταθερότητα. Το περιβάλλον εκτέλεσης της Java περιλαµβάνει ένα στοιχείο που λέγεται linker, το οποίο ελέγχει τα εισερχόµενα δεδοµένα για να είναι σίγουρο ότι δεν περιέχουν βλαβερά αρχεία που θα δηµιουργούσαν προβλήµατα στην λειτουργία του υπολογιστή. Ακόµη, η διαδικασία της µετάφρασης που υφίσταται ο κώδικας από bytes δίνει την δυνατότητα ενσωµάτωσης δεδοµένων κατά την διάρκεια της εκτέλεσης, γεγονός που αποτελεί ένα από τα θεµέλια της δυναµικής συµπεριφοράς της Java. Ο κώδικας Java µεταγλωττίζεται σε διαπλατφορµικούς κώδικες από bytes, οι οποίοι απαιτούν έναν µεταφραστή για να εκτελεστούν. Σ ότι αφορά τις µικροεφαρµογές η δουλειά αυτή γίνεται από τους εξεταστές ιστοσελίδων. Για τις εφαρµογές σε γραφικό περιβάλλον ή τις εφαρµογές που τρέχουν από γραµµή εντολής, απαιτείται ένας µεταφραστής Java για να εκτελεστούν. Αυτόµατη συλλογή απορριµµάτων (automatic garbage collection) 30

31 Στην C και την C++ o προγραµµατιστής είναι ο αποκλειστικά υπεύθυνος για την δέσµευση και την αποδέσµευση της απαιτούµενης µνήµης για να λειτουργήσει ένα πρόγραµµα. Ακόµη ο χειρισµός των δεικτών (pointers), πράγµα που αναπόφευκτα χρειάζεται να γίνει σε περιπτώσεις λειτουργιών που σχετίζονται µε την µνήµη, είναι µία πραγµατικά επίπονη διαδικασία και δυστυχώς µία πολλή συνηθισµένη πηγή λαθών. Η Java αντίθετα, εξαλείφει τους pointers καθώς και την υποχρέωση του προγραµµατιστή να είναι αποκλειστικά υπεύθυνος για την διαχείριση της µνήµης. Η δέσµευση και η αποδέσµευση της µνήµης γίνονται αυτόµατα και µε ασφάλεια. Η Java χρησιµοποιεί την λεγόµενη «συλλογή απορριµµάτων» αντί της αποδέσµευσης της µνήµης µε ευθύνη του προγραµµατιστή. Η συλλογή απορριµµάτων εξαλείφει σφάλµατα σχετιζόµενα µε την διαχείριση της µνήµης καθώς και πιθανά κενά σχετικά µε την ασφάλεια του συστήµατος, αφού η κατά βούληση δέσµευση και αποδέσµευση της µνήµης επιτρέπει την χωρίς άδεια αντιγραφή και κλωνοποίηση αντικείµένων τα οποία έχουν την εµπιστοσύνη του συστήµατος (έχουν δηλαδή αυξηµένα δικαιώµατα), καθώς και επιθέσεις κατά της συνοχής των δεδοµένων. Μικροεφαρµογές και ιστοσελίδες 31

32 Όπως αναφέρθηκε και προηγουµένως, οι µικροεφαρµογές Java [3, 8] τρέχουν µέσα από εξεταστή ιστοσελίδων µε δυνατότητα χρήσης Java (Java enabled web browser). Επειδή οι εξεταστές ιστοσελίδων αναπτύχθηκαν αρχικά για την παρουσίαση HTML εγγράφων, η ενσωµάτωση µικροεφαρµογών της Java σε ένα εξεταστή ιστοσελίδων απαιτεί την προσθήκη κάποιας ειδικής ετικέτας στο HTML έγγραφο, ώστε να ξεκινήσει η µικροεφαρµογή. Αυτή η ετικέτα είναι η <APPLET>, µία συνήθης χρήση της οποίας δίνεται παρακάτω <APPLET CODE=TextEdit.class WIDTH=575 HEIGHT=350> </APPLET> Το προηγούµενο παράδειγµα παρουσιάζει την βασική δοµή µιας ετικέτας <APPLET>. Αυτή περιλαµβάνει τρία πεδία τα οποία πρέπει οπωσδήποτε να υπάρχουν σε µία ετικέτα. Τα CODE, WIDTH, και HEIGHT. Μία ετικέτα <APPLET> µπορεί να περιλαµβάνει αρκετά ακόµα πεδία ώστε να µπορεί ο εξεταστής ιστοσελίδων (web browser) να προσδιορίσει πως ακριβώς πρέπει να παρουσιαστεί η µικροεφαρµογή στον χρήστη. Μία ετικέτα <APPLET> που χρησιµοποιεί όλα τα δυνατά πεδία δίνεται παρακάτω <APPLET CODEBASE=url CODE=appletClassFile WIDTH=n HEIGHT=n ALT=alternateText NAME=appletInstanceName ALIGN=alignment VSPACE=n HSPACE=n> <PARAM NAME=parameter1 VALUE=value1> <PARAM NAME=parameter2 VALUE=value2> 32

33 .. <PARAM NAME=parameterN VALUE=valueN> Alternate HTML </APPLET> Τα πεδία αυτά και οι τιµές που µπορούν να πάρουν δίνονται στον πίνακα που ακολουθεί: Πίνακας 3.1 Τα πεδία της ετικέτας <APPLET> και οι έγκυρες τιµές τους. Απαραίτητα Πεδία CODE WIDTH HEIGHT Προαιρετικά Πεδία CODEBASE Έγκυρες Τιµές Το όνοµα ενός µεταγλωττισµένου αρχείου της Java, αρχείο κλάσης (class file) Το πλάτος της µικροεφαρµογής σε pixel όταν αυτή παρουσιάζεται στον εξεταστή ιστοσελίδων Το ύψος της µικροεφαρµογής σε pixel όταν αυτή παρουσιάζεται στον εξεταστή ιστοσελίδων Παρέχει µία διαδροµή προς ένα κατάλογο που περιέχει αρχεία κλάσεων. Μπορεί να είναι είτε µία διεύθυνση στο διαδίκτυο, είτε µία διαδροµή προς ένα κατάλογο του σκληρού δίσκου του χρήστη. ALT Καθορίζει ένα εναλλακτικό κείµενο για εµφάνιση από εξεταστές ιστοσελίδων που δεν υποστηρίζουν Java συνεπώς δεν 33

34 µπορούν να εκτελέσουν την µικροεφαρµογή. NAME Αντιστοιχεί ένα συµβολικό όνοµα σε µία µικροεφαρµογή. Άλλες µικροεφαρµογές στην ίδια σελίδα µπορούν να χρησιµοποιήσουν το ίδιο όνοµα ALIGN Χρησιµοποιείται για την τοποθέτηση µίας µικροεφαρµογής Java σε κάποια συγκεκριµένη θέση µέσα στο χώρο που διατίθεται για την µικροεφαρµογή στην ιστοσελίδα. Οι δυνατότητες που υπάρχουν είναι οι: LEFT, RIGHT, TOP, MIDDLE, BOTTOM καθώς και TEXTTOP, BASELINE, ABSMIDDLE και ABSBOTTOM. Αν χρησιµοποιηθούν οι επιλογές LEFT ή RIGHT, το κείµενο της ιστοσελίδας θα ρέει γύρω από τον χώρο που αντιστοιχίστηκέ στην µικροεφρµογή. VSPACE Χρησιµοποιείται µόνο εφόσον υπάρχουν οι τιµές ALIGN= LEFT ή ALIGN= RIGHT και επιτρέπει να καθοριστεί ο κατακόρυφος χώρος που θα µείνει κενός γύρω από την µικροεφαρµογή. HSPACE Χρηςιµοποιείται µόνο εφόσον υπάρχουν οι τιµές ALIGN= LEFT ή ALIGN= RIGHT και επιτρέπει να καθοριστεί ο οριζόντιος χώρος που θα µείνει κενός γύρω από την µικροεφαρµογή. PARAM Παράµετροι που θα περαστούν στην µικροεφαρµογή. 34

35 ιαδικασία που ακολουθείται για να φορτωθεί µία µικροεφαρµογή Οι µικροεφαρµογές που εκτελούνται συνήθως είναι µικροεφαρµογές που βρίσκονται σε ιστοσελίδες. Όπως οι ιστοσελίδες αυτές είναι αποθηκευµένες στον εξυπηρετητή τον οποίο προσπελαύνουµε, έτσι είναι και το αρχείο κλάσης της µικροεφαρµογής που είναι ενσωµατωµένη στην ιστοσελίδα. Έτσι, µόλις τελειώσει η µετάδοση του HTML αρχείου προς τον χρήστη, αρχίζει πλέον ο υπολογιστής του χρήστη να το διαβάζει. Μόλις ο εξεταστής ιστοσελίδων συναντήσει την ετικέτα <APPLET> αναζητά το αρχείο κλάσης που περιέχει τον µεταγλωττισµένο κώδικα της µικροεφαρµογής. Το αρχείο αυτό, το οποίο δεν το έχει, το λαµβάνει από τον εξυπηρετητή και στην συνέχεια αυτό εκτελείται, οπότε τρέχει η µικροεφαρµογή. Αν η εκτέλεση του απαιτεί και την ύπαρξη συµπληρωµατικών αρχείων κλάσεων, τότε η εκτέλεση της µικροεφαρµογής αρχίζει αφού µεταδοθούν και αυτά. Η εκτέλεση της ξεκινάει µε την κλήση της συνάρτησης init() και της start(). Η διαδικασία που περιγράφηκε δίνεται σχηµατικά στο σχήµα

36 Σχήµα 3.2 ιαδικασία που ακολουθείται για να φορτωθεί µία µικροεφαρµογή. Νήµατα (Threads) Μία µοναδική ιδιότητα της Java είναι η ενσωµατωµένη υποστήριξη της για νήµατα (threads). Τα νήµατα επιτρέπουν σε ένα πρόγραµµα να εκτελεί πολλές λειτουργίες ταυτόχρονα. Για να γίνει αντιληπτό πόσο σηµαντική είναι αυτή η ιδιότητα της Java αρκεί να φανταστούµε πόσο περιορισµένος θα αισθανόταν ένας άνθρωπος, ο οποίος δεν θα είχε τη δυνατότητα να 36

37 κουνήσει το ένα πόδι και το ένα χέρι του ταυτόχρονα. Τα νήµατα είναι η απάντηση της Java στο αντίστοιχο πρόβληµα των υπολογιστών. Βέβαια αυτό που γίνεται δεν είναι ακριβώς µία παράλληλη επεξεργασία όλων των νηµάτων, γιατί οι συνήθεις υπολογιστές έχουν µόνο ένα επεξεργαστή. Αυτό που συµβαίνει στην πραγµατικότητα είναι µία συνεχής εναλλαγή της χρήσης της επεξεργαστικής ισχύος του υπολογιστή από εφαρµογή σε εφαρµογή, αν µιλάµε για ένα σύστηµα που υποστηρίζει την πολυδιεργασία (multitasking), ή από νήµα σε νήµα, αν µιλάµε για µία πολυνηµατική εφαρµογή (multithreading). Όλα αυτά όµως γίνονται τόσο γρήγορα που ο χρήστης έχει την εντύπωση πως όλα γίνονται ταυτόχρονα. Βέβαια ένας προγραµµατιστής θα µπορούσε να αναρωτηθεί γιατί θα πρέπει να νοιάζεται για τον τρόπο λειτουργίας του επεξεργαστή, από τη στιγµή που τα προγράµµατά του δουλεύουν. Η απάντηση σχετίζεται µε το είδος της εφαρµογής. Αν για παράδειγµα το πρόγραµµα είναι ένας κειµενογράφος, τότε µας ενδιαφέρει να µπορούµε να γράφουµε σε αυτόν ενώ αυτός τυπώνει το κείµενο. Η εκτύπωση του κειµένου είναι ένα νήµα που εκτελείται στο παρασκήνιο (background) παράλληλα µε την εγγραφή νέων χαρακτήρων στον κειµενογράφο. Ένα άλλο παράδειγµα είναι η λειτουργία ενός εξυπηρετητή (server). Ένα από τα καθήκοντα ενός server είναι η ικανοποίηση όσο το δυνατόν περισσότερων αιτήσεων 37

38 ταυτόχρονα, ώστε να µπορούν όλοι οι πελάτες να ικανοποιούνται ταυτόχρονα, µε αποτέλεσµα τη µείωση του χρόνου αναµονής. Σ ότι αφορά την δηµιουργία κλάσεων και εφαρµογών που τρέχουν σε διαφορετικά νήµατα, στη Java υπάρχουν δύο τρόποι υλοποίησης. Ας υποτεθεί πως θέλουµε η κλάση myclass να µπορεί να εκτελεστεί µε τις ιδιότητες ενός νήµατος. Τότε στον ορισµό της κλάσης θα γράψουµε: public class myclass extends Thread public class myclass implements Runnable Συνήθως χρησιµοποιείται ο δεύτερος τρόπος. Αυτό συµβαίνει γιατί στη Java υπάρχει δυνατότητα µόνο για απλή κληρονοµικότητα. ηλαδή µία κλάση µπορεί να κληρονοµήσει τα χαρακτηριστικά µόνο µιας άλλης αλλά όχι και περισσότερων. Έτσι για παράδειγµα για τη δηµιουργία της βασικής κλάσης µίας µικροεφαρµογή (applet), πρέπει να γραφεί public class myclass extends Applet implements Runnable ώστε να µπορούν να συνδυαστούν τα χαρακτηριστικά µιας κλάσης Thread και µιας κλάσης Applet. Όταν µία κλάση έχει οριστεί κατά τέτοιο τρόπο, τότε πρέπει οπωσδήποτε να περιλαµβάνει µία συνάρτηση µε το όνοµα run ( ). Σε αυτήν τη συνάρτηση τοποθετείται ο 38

39 κώδικας που θέλουµε να εκτελείται από το συγκεκριµένο νήµα. Ένα άλλο θέµα που σχετίζεται µε τα νήµατα είναι η προτεραιότητα που έχει το κάθε νήµα σε περίπτωση που πολλά νήµατα τρέχουν ταυτόχρονα. Η Java δίνει την δυνατότητα να θέσει ο προγραµµατιστής την προτεραιότητα την οποία θα έχουν τα διάφορα νήµατα τα οποία θα τρέχουν ταυτόχρονα. Αυτό γίνεται χρησιµοποιώντας τη συνάρτηση setpriority(int). Αν δύο νήµατα έχουν την ίδια προτεραιότητα τότε ο χρόνος του επεξεργαστή µοιράζεται ανάµεσα στα δύο αυτά νήµατα. Αν όµως ένα νήµα έχει µεγαλύτερη προτεραιότητα από όλα τα άλλα που τρέχουν, τότε αυτό το νήµα θα χρησιµοποιεί αποκλειστικά τον επεξεργαστή έως ότου τελειώσει την λειτουργία του και στην συνέχεια θα µπορέσει να εκτελεστεί κάποιο άλλο νήµα. Αυτό δεν είναι πάντα επιθυµητό, γιατί αν και ένα νήµα µπορεί να έχει µεγαλύτερη προτεραιότητα, αυτό δεν σηµαίνει πως θέλουµε να σταµατήσουµε εντελώς την λειτουργία των άλλων νηµάτων. Η λύση σε αυτό το πρόβληµα είναι να προκαλείται κατά διαστήµατα η παύση του κυρίαρχου νήµατος, έτσι ώστε να δίνεται η δυνατότητα και στα υπόλοιπα νήµατα να εκτελέσουν µερικές εντολές. Αυτό γίνεται χρησιµοποιώντας την συνάρτηση sleep(long). Το όρισµα της συνάρτησης είναι ο αριθµός των milliseconds για τον οποίο το νήµα βρίσκεται σε παύση. 39

40 Ένα άλλο πρόβληµα που είναι πιθανό να προκύψει από την χρήση των νηµάτων είναι η ταυτόχρονη προσπέλαση της ίδιας µεταβλητής από δύο διαφορετικά νήµατα, εκ των οποίων το ένα θέλει να µεταβάλλει την τιµή της µεταβλητής. Αν επιτρεπόταν να γίνει κάτι τέτοιο, οι συνέπειες θα ήταν απρόβλεπτες. Για να αποφύγουµε ένα τέτοιο συµβάν αυτό που θα πρέπει να κάνουµε είναι να δηλώσουµε και τις δύο συναρτήσεις, αυτή που θέτει την µεταβλητή και αυτή που την διαβάζει, ως synchronized. Αυτή η λέξη κλειδί της Java τοποθετεί ένα περιορισµό στις συναρτήσεις που δηλώθηκαν µε αυτό τον τρόπο. Κάθε φορά µόνο ένα νήµα µπορεί να βρίσκεται σε µία οποιαδήποτε synchronized συνάρτηση. Για παράδειγµα ας υποθέσουµε πως έχουµε τις παρακάτω δύο συναρτήσεις: public synchronized void setvar(int x) { myvar=x; } public synchronized int getvar() { return myvar; } Αν κληθεί η setvar(int x) από ένα νήµα, τότε κανένα άλλο νήµα δεν θα µπορεί να καλέσει οποιαδήποτε συνάρτηση που έχει οριστεί ως synchronized, συµπεριλαµβανοµένης και της getvar(), µέχρι που να τελειώσει η εκτέλεση της setvar(int x). Έτσι, κανένα νήµα δεν θα πάρει ποτέ λανθασµένη πληροφορία για την τιµή της µεταβλητής, 40

41 επειδή έτυχε η setvar(int x) να είναι στην µέση του γραψίµατος της τιµής της µεταβλητής. Βέβαια η χρήση synchronized συναρτήσεων πρέπει να γίνεται µόνο όπου χρειάζεται, γιατί αν για παράδειγµα δηλωθούν όλες οι συναρτήσεις ως synchronized, τότε στην ουσία παύουµε να έχουµε πολυνηµατκό κώδικα, αφού κανένα νήµα δεν µπορεί να εκτελεστεί ταυτόχρονα µε ένα άλλο. Τέλος, υπάρχουν µερικές συναρτήσεις του πακέτου java.lang.thread που δίνουν τη δυνατότητα να τεθεί η κατάσταση ενός νήµατος και δίνονται παρακάτω: start() stop() sleep(long), sleep(long,int) suspend() resume() yield() destroy() Η start() και η stop() χρησιµοποιούνται προφανώς για την εκκίνηση και το σταµάτηµα ενός νήµατος. Η συνάρτηση sleep(long) λειτουργεί όπως αναφέρθηκε προηγουµένως. Η συνάρτηση suspend() χρησιµοποιείται για την διακοπή της εκτέλεσης ενός νήµατος µέχρι να εκτελεστεί κάποιο άλλο νήµα, και όταν αυτό τελειώσει µπορεί να συνεχιστεί η εκτέλεση του προηγούµενου νήµατος χρησιµοποιώντας την resume(). Η συνάρτηση yield() χρησιµοποιείται για να δηλώσει στον µεταγλωττιστή (interpreter) την παραχώρηση της 41

42 προτεραιότητας σε οποιοδήποτε άλλο νήµα την χρειάζεται. Το νήµα που διακόπηκε συνεχίζει να εκτελείται όταν όλα τα υπόλοιπα νήµατα έχουν τελειώσει την εκτέλεση τους. Η συνάρτηση destroy() απλά καταστρέφει ένα νήµα. Η χρήση της δεν συνιστάται γιατί τερµατίζει βίαια ένα νήµα και ισοδυναµεί µε το κλείσιµο ενός προγράµµατος ενώ αυτό λειτουργεί. Πρίζες (sockets) Οι πρίζες (sockets) αναπτύχθηκαν αρχικά στο πανεπιστήµιο του Berkeley στην California, ως ένα εργαλείο για τον ευκολότερο προγραµµατισµό δικτυακών εφαρµογών. Ενώ αρχικά ήταν µέρος µόνο των λειτουργικών συστηµάτων UNIX, η αρχή των πριζών ενσωµατώθηκε σε πολλά περιβάλλοντα εργασίας, συµπεριλαµβανοµένου και αυτού της Java. Μία πρίζα χειρίζεται την σύνδεση µέσω δικτύου µε µία άλλη εφαρµογή, η οποία εκτελείται σε κάποιο αποµακρυσµένο σηµείο. Μία πρίζα τύπου TCP [1, 3] είναι µία πρίζα που χρησιµοποιεί το πρωτόκολλο TCP ως πρωτόκολλο µεταφοράς. Οι πληροφορίες που χρειάζονται για να δηµιουργηθεί µία πρίζα TCP είναι: Η IP διεύθυνση του τοπικού συστήµατος Ο αριθµός της TCP θύρας που χρησιµοποιεί η τοπική εφαρµογή 42

43 Η IP διεύθυνση του αποµακρυσµένου συστήµατος Ο αριθµός της TCP θύρας στην οποία αποκρίνεται η αποµακρυσµένη εφαρµογή Οι πρίζες χρησιµοποιούνται πολύ συχνά σε εφαρµογές πελάτη-εξυπηρετητή (Client- Server). Ένας κεντρικός υπολογιστής (εξυπηρετητής) περιµένει διάφορους αποµακρυσµένους υπολογιστές (πελάτες) να ζητήσουν κάποια υπηρεσία. Για να µπορούν οι πελάτες να επικοινωνήσουν µε τον εξυπηρετητή χρησιµοποιώντας κάποια καθιερωµένα πρωτόκολλα εφαρµογών (όπως FTP, Telnet και HTTP), συγκεκριµένες θύρες αντιστοιχίζονται σε καθένα από αυτά. Μερικές από αυτές δίνονται στον παρακάτω πίνακα. Πίνακας 3.2 Οι θύρες στις οποίες προσφέρει συγκεκριµένες υπηρεσίες ένας Server Θύρα Υπηρεσία 21 FTP 23 Telnet 25 SMTP(Internet Mail Transfer) 79 Finger 80 HTTP Γενικά οι διαθέσιµοι αριθµοί θυρών είναι από 0 έως Επειδή όµως στο UNIX οι αριθµοί θυρών µέχρι το 1024 χρησιµοποιούνται από εφαρµογές µε προνόµια super user (root), οι απλές εφαρµογές χρησιµοποιούν κατά σύµβαση θύρες µε αριθµό µεγαλύτερο του

44 Αυτά αφορούν τον εξυπηρετητή, στον οποίο µία εφαρµογή καταλαµβάνει µόνιµα µία θύρα, αφού περιµένει συνεχώς οποιονδήποτε πελάτη ζητήσει κάποια από τις υπηρεσίες που προσφέρει. Στον πελάτη οι θύρες συνήθως επιλέγονται και πάλι στην περιοχή από το 1024 και πάνω για τους ίδιους λόγους, όµως η επιλογή τους γίνεται δυναµικά. ηλαδή τη στιγµή που ξεκινάει η εφαρµογή επιλέγεται µία από τις ελεύθερες θύρες πάνω από τη 1024 και εκχωρείται σ αυτήν. Από τα παραπάνω φαίνεται πως µία πρίζα καθορίζει µε µοναδικό τρόπο µία σύνδεση, αφού δεν µπορεί να εκχωρηθεί η ίδια θύρα σε δύο διαφορετικές εφαρµογές που εκτελούνται στον ίδιο υπολογιστή ταυτόχρονα. Βέβαια ένας εξυπηρετητής µπορεί να απαντάει ταυτόχρονα σε δύο πελάτες στην ίδια θύρα, χωρίς να παραβιάζεται µε αυτό τον τρόπο η µοναδικότητα των χαρακτηριστικών της σύνδεσης, αφού οι πελάτες θα είναι σε διαφορετικά συστήµατα και/ή σε διαφορετικές θύρες. Η λογική αυτή παρουσιάζεται στο παρακάτω σχήµα. Στο Σχήµα 1 φαίνεται ένας εξυπηρετητής ο οποίος αποκρίνεται ταυτόχρονα σε τρεις πρίζες µέσα από την ίδια θύρα Κάθε πρίζα έχει κάποιο ιδιαίτερο χαρακτηριστικό (αριθµός θύρας ή IP διεύθυνση του υπολογιστή) που την κάνει να ξεχωρίζει από τις υπόλοιπες και να είναι µοναδική. 44

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

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

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

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

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

Γραφικά με Υπολογιστές. Κίνηση - Αλληλεπίδραση

Γραφικά με Υπολογιστές. Κίνηση - Αλληλεπίδραση Γραφικά με Υπολογιστές Κίνηση - Αλληλεπίδραση Κίνηση στη VRML Η VRML δεν είναι μια στατική γλώσσα. Είναι μια κινούμενη, αλληλεπιδραστική γλώσσα, η οποία μπορεί να λάβει μηνύματα και να προκαλέσει διαφορετικά

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

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

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

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

Γραφικά με Υπολογιστές. Εισαγωγή στη VRML

Γραφικά με Υπολογιστές. Εισαγωγή στη VRML Γραφικά με Υπολογιστές Εισαγωγή στη VRML Εισαγωγή στη VRML Η VRML (Virtual Reality Modeling Language) αποτελεί ένα διεθνές πρότυπο για περιγραφή τρισδιάστατων αντικειμένων και διαδραστικών κόσμων στον

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

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

HelloApplet. Παύλος Εφραιμίδης Java Applets 1 HelloApplet Παύλος Εφραιμίδης pefraimi@ee.duth.gr Java Applets 1 Applets Τα Applets είναι προγράμματα Java που μπορούν να εκτελεστούν μέσα στο περιβάλλον ενός Browser (Firefox, Internet Explorer, Netscape,

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

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

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

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

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

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία Γραφικά µε Υπολογιστές Μετασχηµατισµοί Σύνθετη Γεωµετρία Σύστηµα Συντεταγµένων Κάθε VRML κόσµος έχει το δικό του σύστηµα συντεταγµένων, το οποίο είναι ένα τρισδιάστατο καρτεσιανό σύστηµα, µε τηθετική πλευρά

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

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

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

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

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

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

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

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

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

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

ηµιουργία ιαλογικών Προγραµµάτων για το Web

ηµιουργία ιαλογικών Προγραµµάτων για το Web ηµιουργία ιαλογικών Προγραµµάτων για το Web Βοηθητικές Εφαρµογές (). Οι βασικές µέθοδοι των Βοηθητικών Εφαρµογών. Η µέθοδος init(). Οι µέθοδοι start() και stop(). Η µέθοδος paint(). Η µέθοδος destroy().

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

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ 1Τι είναι ο Παγκόσµιος Ιστός; Λόγω της µεγάλης απήχησης του Παγκόσµιου Ιστού πολλές φορές ταυτίζουµε τον Παγκόσµιο Ιστό µε το Διαδίκτυο. Στην πραγµατικότητα αυτή η αντίληψη

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

Οδηγίες σχεδίασης στο περιβάλλον Blender

Οδηγίες σχεδίασης στο περιβάλλον Blender Οδηγίες σχεδίασης στο περιβάλλον Blender Στον πραγματικό κόσμο, αντιλαμβανόμαστε τα αντικείμενα σε τρεις κατευθύνσεις ή διαστάσεις. Τυπικά λέμε ότι διαθέτουν ύψος, πλάτος και βάθος. Όταν θέλουμε να αναπαραστήσουμε

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

Points, Lines, Polygons

Points, Lines, Polygons Points, Lines, Polygons Color and ColorRGBA nodes Coordinate and CoordinateDouble nodes PointSet node IndexedLineSet node LineSet node IndexedFaceSet ElevationGrid Extrusion Common Fields for Geometry

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

ΙΑ ΡΑΣΤΙΚΟΤΗΤΑ Σε ΤΡΙΣ ΙΑΣΤΑΤΟΥΣ ΕΙΚΟΝΙΚΟΥΣ ΚΟΣΜΟΥΣ ΕΠΕΚΤΑΣΕΙΣ ΓΛΩΣΣΑΣ STEDEL

ΙΑ ΡΑΣΤΙΚΟΤΗΤΑ Σε ΤΡΙΣ ΙΑΣΤΑΤΟΥΣ ΕΙΚΟΝΙΚΟΥΣ ΚΟΣΜΟΥΣ ΕΠΕΚΤΑΣΕΙΣ ΓΛΩΣΣΑΣ STEDEL ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΖΩΓΡΑΦΟΥ 157 73, ΑΘΗΝΑ ΕΒΓ - ΙΠΛ- 2001-14 Νοέµβριος 2001 ΙΑ ΡΑΣΤΙΚΟΤΗΤΑ

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

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

7.11 Πρωτόκολλα εφαρµογής

7.11 Πρωτόκολλα εφαρµογής 7.11 Πρωτόκολλα εφαρµογής Ερωτήσεις 1. Ποιος ο ρόλος των πρωτοκόλλων εφαρµογής και πώς χειρίζονται τις συνδέσεις δικτύου; 2. Γιατί κάθε πρωτόκολλο εφαρµογής ορίζει συγκεκριµένο τρόπο παρουσίασης των δεδοµένων;

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

Σχεδίαση και Ανάπτυξη Ιστότοπων

Σχεδίαση και Ανάπτυξη Ιστότοπων Σχεδίαση και Ανάπτυξη Ιστότοπων Ιστορική Εξέλιξη του Παγκόσμιου Ιστού Παρουσίαση 1 η 1 Βελώνης Γεώργιος Καθηγητής Περιεχόμενα Τι είναι το Διαδίκτυο Βασικές Υπηρεσίες Διαδικτύου Προηγμένες Υπηρεσίες Διαδικτύου

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

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

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

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

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

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

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

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

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

User Interactivity Nodes

User Interactivity Nodes User Interactivity Nodes Abstract node types X3DSensorNode type Additional field definitions Nodes TouchSensor PlaneSensor CylinderSensor SphereSensor KeySensor StringSensor Bearing Bearing (διόπτευση)

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

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.11 Πρωτόκολλα Εφαρµογής 104. Αναφέρετε ονοµαστικά τις πιο χαρακτηριστικές εφαρµογές που υποστηρίζει η τεχνολογία TCP/IP οι οποίες είναι διαθέσιµες στο ιαδίκτυο 1. Ηλεκτρονικό

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

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

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

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

7.2 Τεχνολογία TCP/IP

7.2 Τεχνολογία TCP/IP 7.2 Τεχνολογία TCP/IP Ερωτήσεις 1. Πώς χρησιµοποιείται σήµερα ο όρος TCP/IP; ε ποια πρωτόκολλα αναφέρεται και γιατί έχει επικρατήσει αυτή η ονοµασία; 2. Ποια ανάγκη οδήγησε στην επικράτηση της τεχνολογίας

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

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

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

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

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

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

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

ΠΟΛΥΜΕΣΑ ΣΤΟ ΙΑ ΙΚΤΥΟ

ΠΟΛΥΜΕΣΑ ΣΤΟ ΙΑ ΙΚΤΥΟ ΠΟΛΥΜΕΣΑ ΣΤΟ ΙΑ ΙΚΤΥΟ 1. Εισαγωγή Μετά τη ραγδαία εξάπλωση του ιαδικτύου (Internet) σε όλο τον κόσµο, δηµιουργήθηκε η ανάγκη παροχής πολυµεσικών υπηρεσιών µέσω του ιαδικτύου. Οι βασικές πολυµεσικές υπηρεσίες

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

ΚΕΦΑΛΑΙΟ Web Services

ΚΕΦΑΛΑΙΟ Web Services ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή

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

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών World Wide Web (WWW) Θέματα Επεξεργασία δεδομένων στο Web Δημιουργία απλών σελίδων HTML Περιγραφή κάποιων XHTML στοιχείων (tags) Εξέλιξης του WWW Το WWW

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

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol)

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol) Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας-Βιβλιοθηκονοµίας Κέρκυρα ίκτυα - Internet 2 Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) ΜηχανέςΑναζήτησηςστοWeb Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία

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

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

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

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

Γενικά (για τις γραπτές εξετάσεις)

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης Κεφάλαιο 7 1. Σε τι διαφέρει ο Η/Υ από τις υπόλοιπες ηλεκτρικές και ηλεκτρονικές συσκευές; Που οφείλεται η δυνατότητά του να κάνει τόσο διαφορετικές

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

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000. PIRCH 32 v0.92b

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000. PIRCH 32 v0.92b PIRCH 32 v0.92b A.S. DRIGAS Applied Technologies Department NCSR DEMOKRITOS Ag. Paraskevi GREECE dr@imm.demokritos.gr http://imm.demokritos.gr Το Pirch 32 είναι ένα από τα καλύτερα προγράµµατα επικοινωνίας

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

Σύστηµα µετάδοσης µετεωρολογικών δεδοµένων σε πραγµατικό χρόνο µέσω του Internet

Σύστηµα µετάδοσης µετεωρολογικών δεδοµένων σε πραγµατικό χρόνο µέσω του Internet Βασίλης Βλάχος Σύστηµα µετάδοσης µετεωρολογικών δεδοµένων σε πραγµατικό χρόνο µέσω του Internet Αναπλ. Καθηγητής κ. Κ.Καλαϊτζάκης Καθηγητής κ. Ν.Βούλγαρης Καθηγητής κ. Μ.Πατεράκης RES-ADMIN On Line Data

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

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

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

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

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών Περιεχόµενα World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών Εισαγωγή Ιστορική Αναδροµή Το ιαδίκτυο και το WWW Υπερκείµενο Εντοπισµός πληροφοριών στο WWW Search Engines Portals Unicode Java Plug-Ins 1 2

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

WIRELESS SENSOR NETWORKS (WSN)

WIRELESS SENSOR NETWORKS (WSN) WIRELESS SENSOR NETWORKS (WSN) Δρ. Ιωάννης Παναγόπουλος Εργαστήριο Υπολογιστικών Συστημάτων Καθ. Γεώργιος Παπακωνσταντίνου Αθήνα 2008 ΕΙΣΑΓΩΓΗ ΣΤΑ WSN Σε συγκεκριμένες εφαρμογές, επιθυμείται η μέτρηση

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

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

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

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας µέσω της τεχνολογίας των ιαδοχικών Φύλλων Στυλ (cascading

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

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

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

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

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

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

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

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

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

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Β5.1.2 Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Τι θα μάθουμε σήμερα: Να ορίζουμε τι είναι πρωτόκολλο επικοινωνίας Να εξηγούμε τη χρησιμότητα των πρωτοκόλλων επικοινωνίας Να ονομάζουμε τα σημαντικότερα

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

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Μάθημα 0.2: Το Λογισμικό (Software) Δίκτυα υπολογιστών Αντώνης Χατζηνούσκας 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήματος

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2018-19 Λειτουργικό Σύστημα: διαχείριση πόρων Εισαγωγή Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Επικοινωνία με χρήστη

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

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

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου 1. Τι ονομάζουμε κόμβο και τι σύνδεσμο σε μια μη γραμμικά διαρθρωμένη ύλη; Με την έννοια σύνδεσμος (link) σε μια μη γραμμικά διαρθρωμένη

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

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

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

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

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

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

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

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

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

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

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ Ερωτήσεις 7.3 Πρωτόκολλο TCP 1. Τι είναι το τµήµα (segment) στο πρωτόκολλο TCP; Από ποια µέρη αποτελείται; 2. Για ποιο σκοπό χρησιµοποιείται ο Αριθµός ειράς στην επικεφαλίδα ενός segment TCP; 3. την περίπτωση

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

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ ΣΕΝΑΡΙΟ ΠΑΙΧΝΙ ΙΟΥ Το παιχνίδι θα αποτελείται από δυο παίκτες, οι οποίοι θα βρίσκονται αντικριστά στις άκρες ενός γηπέδου δεξιά και αριστερά, και µια µπάλα.

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

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το του Υπολογιστή 1. Τι ονομάζεται Πρόγραμμα; Είναι οι οδηγίες που δίνονται στον υπολογιστή για να εξηγήσουμε πώς γίνεται μια εργασία (δηλαδή η

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ. ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ 2016 Γ Τάξη Ε.Π.Α.Λ. ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις και δίπλα το γράµµα Σ, αν είναι σωστή, ή το γράµµα

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

Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης

Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης Σπουδαστές: Μιχαήλ Μιχάλης ΑΜ:5089 Αναγνωστόπουλος Σπύρος ΑΜ:3692 Υπεύθυνος καθηγητής: Αναλυτή Κατερίνα Άρτα 2006 E- learning

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

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1 Διαχείριση Πληροφοριών στο Διαδίκτυο Εργαστήριο 1 Τεχνολογικό Εκπαιδευτικό Ίδρυμα Καβάλας Σχολή Διοίκησης & Οικονομίας Τμήμα Διαχείρισης Πληροφοριών Διδάσκων Μαρδύρης Βασίλειος, Διπλ. Ηλ. Μηχανικός & Μηχ.

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1 Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων Octave - Διαδικασία ανάπτυξης προγραμμάτων MATLAB - Απλά

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

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

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

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

ΛΟΓΙΣΜΙΚΟ (software)

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

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

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

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

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

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

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

Συνεχής ροή πολυµέσων

Συνεχής ροή πολυµέσων Συνεχής ροή πολυµέσων Εισαγωγή ικτυακά πρωτόκολλα Πολυµέσα και δίκτυα Συνεχής ροή Ροή από εξυπηρετητές ιστοσελίδων Ροή από εξυπηρετητές µέσων Πρωτόκολλο RTSP Πρωτόκολλο RTP οµή πακέτων RTP Πρωτόκολλο RTCP

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

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

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

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

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

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

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

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

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

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

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

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

ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΑ ΠΕΡΙΓΡΑΦΗΣ ΕΦΑΡΜΟΓΩΝ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ ΕΒΓΔ-ΔΙΠΛ-99-03 ΙΟΥΛΙΟΣ 1999 ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΑ ΠΕΡΙΓΡΑΦΗΣ ΕΦΑΡΜΟΓΩΝ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ ΙΩΣΗΦ ΛΑΖΑΡΙΔΗΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΤΙΜΟΣ ΣΕΛΛΗΣ ΕΡΓΑΣΤΗΡΙΟ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ΓΝΩΣΕΩΝ ΚΑΙ ΔΕΔΟΜΕΝΩΝ

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

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη Πώς βλέπουμε τις ιδιότητες των αντικειμένων που έχουμε δημιουργήσει; Ανοίγουμε το σενάριο CarWorld και δημιουργούμε μερικά αντικείμενα των κλάσεων

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