Εισαγωγή στην πλατφόρμα κινητών αντιπροσώπων

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

Remote Method Invocation (RMI)

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

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

«Συνδυασμός τεχνολογιών Υπηρεσιών Διαδικτύου και Κινητών Πρακτόρων στο Σημασιολογικό ιστό»

JADE. Java Agent DEvelopment Framework

Διδάσκων: Παναγιώτης Ανδρέου

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

Αντικειμενοστραφής προγραμματισμός. Κλασικές γλώσσες προγραμματισμού (FORTRAN, C, Pascal) Προσανατολισμός στα δεδομένα

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

άσκηση Hide UI Elements 7.2 Try and Catch

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

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

11β Δομικά πρότυπα σχεδίασης

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

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

Διαχείριση Πολιτισμικών Δεδομένων

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

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

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Δομές Δεδομένων & Αλγόριθμοι

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

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

ΕΠΛ 012. JavaScripts

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Από τη UML στον Κώδικα. Μέρος Β

6. Εξαιρέσεις στη γλώσσα Java

2. JADE Μια Σύντομη Αναφορά

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

Σύστημα Άυλων Τίτλων - Οδηγίες παραμετροποίησης client συστήματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομές ελέγχου ροής προγράμματος

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

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

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Connecto. Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Άγγελος Σφακιανάκης. Επιφάνεια Άμεσης Σύνδεσης

Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Σύστηµα Java RMI. Κατανεµηµένα Συστήµατα 17-1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

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

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Εισαγωγή στα Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

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

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

(C) 2010 Pearson Education, Inc. All rights reserved.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

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

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

3 Αλληλεπίδραση Αντικειμένων

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

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

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Δρομολόγηση (Routing)

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

"Ανάπτυξη προηγμένης εφαρμογής απεικόνισης και ενσωμάτωσης Υπηρεσιών Καταλόγου (LDAP) με τη χρήση των τεχνολογιών Web 2.0"

Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

Είδη Groupware. Λογισμικό Συνεργασίας Ομάδων (Groupware) Λογισμικό Groupware. Υπάρχουν διάφορα είδη groupware ανάλογα με το αν οι χρήστες εργάζονται:

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Παρουσίαση της λύσης Dnet Mobile Terminal

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ιαδικτυακές Εφαρµογές

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

Transcript:

Εισαγωγή στην πλατφόρμα κινητών αντιπροσώπων Grasshopper Δημήτρης Καρτέρης dkart@di.uoa.gr

Τι είναι ένας Κινητός Αντιπρόσωπος; Οι κινητοί αντιπρόσωποι (mobile agents) είναι προγράμματα τα οποία μπορούν να μεταναστεύουν από ένα υπολογιστή σε έναν άλλο μέσα σε ένα δίκτυο, σε χρονικές στιγμές και τοποθεσίες της επιλογής τους 2

Τι είναι η Μετανάστευση; Η διαδικασία κατά την οποία η κατάσταση του εκτελούμενου προγράμματος αποθηκεύεται, μεταφέρεται σε ένα νέο υπολογιστή και ανακατασκευάζεται δίνοντας την δυνατότητα στο πρόγραμμα να συνεχίσει την εκτέλεσή του από το σημείο όπου αυτή διακόπηκε 3

Κινητός Κώδικας εναντίον Κινητών Αντιπροσώπων ο παραδοσιακός κινητός κώδικας υποστηρίζει απομακρυσμένη εκτέλεση (remote execution) οι κινητοί αντιπρόσωποι υποστηρίζουν μετανάστευση (migration) 4

Ισχυρή και Αδύναμη Μετανάστευση Ισχυρή Μετανάστευση ο αντιπρόσωπος μεταναστεύει με όλη την κατάσταση εκτέλεσής του Αδύναμη Μετανάστευση ο αντιπρόσωπος μεταναστεύει διατηρώντας μόνο την κατάσταση δεδομένων του 5

Πλεονεκτήματα της Τεχνολογίας των Κινητών Αντιπροσώπων υποστήριξη λειτουργίας χωρίς σύνδεση μειωμένος φόρτος δικτύου μειωμένη καθυστέρηση δυναμική προσαρμογή βελτιωμένη ευρωστία και ανοχή σε σφάλματα αυξημένη ευλυγισία (flexibility) ενθυλάκωση πρωτοκόλλων ανεξαρτησία από πλατφόρμες 6

Εφαρμογές της τεχνολογίας των κινητών αντιπροσώπων ηλεκτρονικό εμπόριο κατανεμημένη ανάκτηση πληροφοριών τηλεπικοινωνιακές υπηρεσίες εφαρμογές ροής εργασιών (workflow apps) παρακολούθηση και γνωστοποίηση διασπορά πληροφορίας παράλληλη επεξεργασία 7

Πλατφόρμες Κινητών Αντιπροσώπων Aglets D Agents (πρώην Agent Tcl) Voyager Odyssey Grasshopper 8

Γενικές πληροφορίες για το Grasshopper πλατφόρμα ανάπτυξης και εκτέλεσης κινητών αντιπροσώπων αναπτύχθηκε από τις GMD FOKUS και IKV++ GmbH μη εμπορική χρήση χωρίς χρέωση Τρέχουσα έκδοση: 2.2.4 web site: www.grasshopper.de 9

Γενικές πληροφορίες για το Grasshopper έχει χτιστεί πάνω από ένα κατανεμημένο αντικειμενοστραφές ενδιάμεσο λογισμικό ενοποίηση της τεχνολογίας των κινητών αντιπροσώπων και του μοντέλου client/server υλοποίηση σε Java συμμορφώνεται: στο πρότυπο MASIF (Mobile Agent System Interoperability Facility) στις προδιαγραφές του FIPA (Foundation for Intelligent Physical Agents) 10

Το Grasshopper είναι ένα......κατανεμημένο Περιβάλλον Αντιπροσώπων (Distributed Agent Environment) Αποτελείται από: Agents Agencies Places Regions 11

Agent Ένας αντιπρόσωπος μπορεί να αποτελείται από μία ή περισσότερες κλάσεις Δύο είδη αντιπροσώπων: Κινητοί (Mobile) Στάσιμοι (Stationary) Καταστάσεις αντιπροσώπου: Ενεργός (Active) Σε αναστολή (Suspended) Αποθηκευμένος (Flushed) 12

Agency παρέχει το περιβάλλον εκτέλεσης των κινητών αντιπροσώπων οι κινητοί αντιπρόσωποι μεταναστεύουν από μία agency σε μία άλλη αποτελείται από: το Core Agency ένα ή περισσότερα Places 13

Places σε αυτά «διαμένουν» ένας ή περισσότεροι αντιπρόσωποι παρέχουν λογική ομαδοποίηση λειτουργικότητας που παρέχεται από ένα Agency 14

Core Agency αντιπροσωπεύει την ελάχιστη λειτουργικότητα η οποία απαιτείται από ένα agency για την υποστήριξη της εκτέλεσης αντιπροσώπων παρέχει τις εξής υπηρεσίες: Communication Service Registration Service Management Service Transport Service Security Service Persistence Service 15

Region διευκολύνει την διαχείριση των agencies, places και agents περιλαμβάνει έναν αριθμό από agencies και μία region registry Τα places και οι agents ενός agency συσχετίζονται αυτόματα με την region στην οποία ανήκει το agency 16

Region Registry παρέχει μία βάση δεδομένων με πληροφορίες για τα agencies, places και τους agents μιας region περιέχει την τρέχουσα τοποθεσία κάθε αντικειμένου το οποίο είναι εγγεγραμμένο στην αντίστοιχη region λειτουργεί ως directory service παρέχοντας λειτουργίες αναζήτησης με χρήση κριτηρίων 17

Κατανεμημένο περιβάλλον αντιπροσώπων 18

Communication Service υπεύθυνη για όλες τις απομακρυσμένες αλληλεπιδράσεις μεταξύ των συστατικών του Grasshopper επικοινωνία με διαφάνεια τοποθεσίας μεταφορά αντιπροσώπων υποστήριξη πολλαπλών πρωτοκόλλων CORBA IIOP MAF IIOP RMI (δυνατότητα χρήσης SSL) Plain sockets (δυνατότητα χρήσης SSL) 19

Communication Service (CS) 20

Διαφάνεια τοποθεσίας ο αντιπρόσωπος δεν γνωρίζει την ακριβή τοποθεσία της οντότητας με την οποία επικοινωνεί επιτυγχάνεται με την χρήση των πληρεξούσιων αντικειμένων (proxy objects) oι απομακρυσμένες επικλήσεις μεθόδων μοιάζουν με τοπικές επικλήσεις σε αντικείμενα της ίδιας JVM υποστηρίζεται μόνο στα πλαίσια μιας region και απαιτεί registry 21

Διαφάνεια τοποθεσίας 22

Τρόποι επικοινωνίας synchronous asynchronous blocking polling call back dynamic multicast 23

Grasshopper URL για άμεση επικοινωνία με ένα αντικείμενο χωρίς διαφάνεια τοποθεσίας, η τοποθεσία-στόχος περιγράφεται με μία URL σύνταξη <protocol>://<host>:<port>/<agency>/<place> 24

Registration Service καταχωρεί όλες τις οντότητες (places, agents) που φιλοξενεί το αντίστοιχο agency και παρέχει πληροφορίες για αυτές είναι συνδεδεμένη με την region registry της region στην οποία ανήκει το αντίστοιχο agency 25

Management Service επιτρέπει την διαχείριση των agents και των places ενός agency από εξωτερικούς χρήστες υποστηρίζει: δημιουργία, αναστολή, απαλοιφή και επανασύνδεση agents και places ανάκτηση λίστας agents και places που φιλοξενούνται σε μία agency ανάκτηση πληροφοριών για agents και places που φιλοξενούνται σε μία agency 26

Transport Service υποστηρίζει την μετανάστευση ενός αντιπροσώπου από ένα agency σε ένα άλλο αναλαμβάνει τον συντονισμό της μεταφοράς του αντιπροσώπου η οποία πραγματοποιείται μέσω της communication service 27

Security Service Εξωτερική ασφάλεια: προστασία απομακρυσμένων αλληλεπιδράσεων μεταξύ κατανεμημένων συστατικών του Grasshopper Χρήση πιστοποιητικών X.509 και πρωτοκόλλου SSL Εσωτερική ασφάλεια: προστασία πόρων των agencies από μη εξουσιοδοτημένους αντιπροσώπους προστασία ενός αντιπροσώπου από τον άλλο χρησιμοποιεί τους μηχανισμούς ασφάλειας της Java 28

Persistence Service παρέχει την δυνατότητα αποθήκευσης των agents και των places ενός agency σε ένα διαρκές μέσο (persistent medium) οπότε, είναι δυνατή η ανάκτηση ενός agent ή ενός place (π.χ. μετά από κατάρρευση του συστήματος) 29

Η Δομή του Αντιπροσώπου αποτελείται από μία ή περισσότερες κλάσεις έχει ακριβώς μία agent class η οποία είναι υποκλάση μιας εκ των κλάσεων: MobileAgent StationaryAgent PersistentMobileAgent PersistentStationaryAgent 30

Η Δομή του Αντιπροσώπου σημαντικότερες μέθοδοι που κληρονομεί η agent class: init(): καλείται αυτόματα από την agency κατά την δημιουργία του αντιπροσώπου live(): η υλοποίησή της πραγματοποιεί την αυτόνομη συμπεριφορά του αντιπροσώπου. πρέπει οπωσδήποτε να γίνει override όταν αυτή τερματιστεί, ο αντιπρόσωπος δεν απαλείφεται αλλά παραμένει ως παθητικό αντικείμενο στην agency move(): χρησιμοποιείται για την μετανάστευση του αντιπροσώπου από μία agency σε μία άλλη 31

Παράδειγμα 1 (1/4) αντιπρόσωπος μεταναστεύει σε μία agency και μετά επιστρέφει στην αρχική τοποθεσία του public class BoomerangAgent extends MobileAgent { int state; // A little data state. public void init(object[] creationargs) { state = 0; } public String getname() { return "BoomerangAgent"; } 32

Παράδειγμα 1 (2/4) public void live() { String location; switch(state) { case 0: location = //...είσοδος από Dialog... if (location!= null) { state = 1; try { move(new GrasshopperAddress(location)); } catch(exception e) { log("migration failed: ); } // reached only if migration failed state = 0; } 33

Παράδειγμα 1 (3/4)... case 1: log("arrived at destination!"); JOptionPane.showMessageDialog( null, "Let me go home!"); state = 0; try { move(getinfo().gethome()); } catch (Exception e) { log("return trip failed: ", e); } break; } log("terminating my life."); 34

Παράδειγμα 1 (4/4) 35

Παράδειγμα 2 (1/7) Σενάριο απλής επικοινωνίας ServerAgent: αντιπρόσωπος που παρέχει μία μέθοδο στην CS, μέσω της οποίας, ένας client μπορεί να του δώσει εντολή να μεταναστεύσει σε μία άλλη τοποθεσία. IServerAgent: η διεπαφή που περιέχει την εν λόγω μέθοδο ClientAgent: ο αντιπρόσωπος που καλεί την εν λόγω μέθοδο 36

Παράδειγμα 2 (2/7) // ΙServerAgent.java public interface IServerAgent { public void go(string location); } 37

Παράδειγμα 2 (3/7) // ServerAgent.java... /* This method is exported and accessible via the communication service by other agents. */ public void go(string location) { // notify the agent's thread this.location = location; synchronized(lock) { lock.notify(); } }... 38

Παράδειγμα 2 (4/7)... public void live() { while (true) { synchronized(lock) { try { lock.wait(5 * 60 * 1000); }... } if (location == null) { log("timeout"); break; } else { log("notification received - moving..."); try { move(new GrasshopperAddress(location)); } catch (MigrationFailedException e) { log("migration failed: " + e.getmessage()); } 39

Παράδειγμα 2 (5/7) // ClientAgent.java... // Get proxy of local agency. agencyproxy = getagentsystem();... // Create the server agent. try { serverinfo = agencyproxy.createagent("serveragent", getinfo().getcodebase(), getinfo().getlocation().getplace(), null); } catch (AgentCreationFailedException e) { log("creation of server agent failed."); } 40

Παράδειγμα 2 (6/7)... // create proxy of the server agent. serverproxy = (IServerAgent) ProxyGenerator.newInstance( IServerAgent.class, serverinfo.getidentifier());... public void live() { log("life has just begun"); String location = requestlocation(); while (location!= null) { serverproxy.go(location); location = requestlocation(); } } 41

Παράδειγμα 2 (7/7) 42

Διεπαφή με την πλατφόρμα 43

Διεπαφή με την πλατφόρμα 44

Μερικές Αναφορές Grasshopper Basic and Concepts rel. 2.2, http://www.grasshopper.de Grasshopper Programmer s Guide rel. 2.2, http://www.grasshopper.de G. P. Picco, "Mobile Agents: An Introduction", Journal of Microprocessors and Microsystems, 2001 D.B. Lange and M. Oshima, "Seven Good Reasons for Mobile Agents", Communications of the ACM, 1999 45

Ερωτήσεις; 46