{"id":21566501,"url":"https://github.com/iulianoroberto/java_mobile_agents","last_synced_at":"2025-03-18T05:21:56.748Z","repository":{"id":216468465,"uuid":"741415036","full_name":"iulianoroberto/Java_mobile_agents","owner":"iulianoroberto","description":"Implementation of simple container of mobile agents based on Java RMI.","archived":false,"fork":false,"pushed_at":"2024-01-10T11:26:09.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T12:12:27.512Z","etag":null,"topics":["java","mobile-agents","mobile-code","rmi","rmiregistry"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iulianoroberto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-10T10:52:06.000Z","updated_at":"2024-01-10T10:53:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"25e5efc9-b8ef-4d77-ba77-c037c8c7fa5f","html_url":"https://github.com/iulianoroberto/Java_mobile_agents","commit_stats":null,"previous_names":["iulianoroberto/java_mobile_agents"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iulianoroberto%2FJava_mobile_agents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iulianoroberto%2FJava_mobile_agents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iulianoroberto%2FJava_mobile_agents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iulianoroberto%2FJava_mobile_agents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iulianoroberto","download_url":"https://codeload.github.com/iulianoroberto/Java_mobile_agents/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244160528,"owners_count":20408116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mobile-agents","mobile-code","rmi","rmiregistry"],"created_at":"2024-11-24T10:25:20.574Z","updated_at":"2025-03-18T05:21:56.720Z","avatar_url":"https://github.com/iulianoroberto.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java_mobile_agents\nImplementation of simple container of mobile agents based on Java RMI.\n\nImplement a simple container of mobile agents based on Java RMI. The container should be able to host a mobile agent and to run it. A specific primitive supported by the container should enable the migration from a container instance to another one. Implement weak mobility (the agent starts the execution from the first statement whenever it arrives onto a new node/container). With this approach, mobility transparency is not ensured.\n\nWrite and test a simple application that creates an agent and moves it across at least two other container nodes. On each node, the agent asks for the name of the user and, when it reaches the last node to visit, it shows the complete list of contacted users.\n\n## Spiegazione in italiano\nIn questo esercizio è stato implementato un semplice container di agenti mobili tramite Java RMI. Il container è in grado di ospitare l'agente mobile ed eseguirlo. Il container prevede una specifica primita che permette il trasferimento dell'agente da un container all'altro. \n\nJava RMI è un middleware che consente di implementare applicazioni con architettura client server. Tuttavia, in questo caso è stato sfruttato per implementare il paradigma ad agenti mobili. Il paradigma ad agenti mobili è un paradigma diverso rispetto a quello client server. \n\nGli elementi fondamentali dell'applicazione sono:\n- Container.\n- Agenti.\n- Il processo server che ospita i container.\n- Il main.\n  \n### Container\nIl container concettualmente è un ambiente che ospita gli agenti mobili e ne gestisce l'esecuzione. In termini programmatici lo stesso si configura, in questo caso, come un oggetto remoto. Quindi, un container viene creato istanziando un oggetto remoto. A tal fine è stata prevista l'interfaccia AgentContainer e la classe AgentContainerImpl.\n\n### Agenti mobili\nGli agenti mobili rappresentano le entità che si spostano nei diversi container. A differenza della mobilità del codice con un agente si sposta anche lo stato, non solo il codice. In questo caso un agente mobile si concretizza in un ogetto di tipo MyAgent. La classe MyAgent estende la classe AbstarctAgent, che a sua volta implementa l'interfaccia Agent. Un oggetto di tipo MyAgent è serializzabile. Tramite la serializzazione un oggetto \"MyAgent\" viene linearizzato e trasferito nel container di destinazione.\n\n### Processo Server\nAll'avvio del processo server vengono creati dei container. Degli oggetti di tipo Container. Gli stessi sono registrati sul rmiregistry tramite un'operazione di rebind.\n\n### Main\nPrima di avviare l'applicazione è necessario: avviare il binder rmiregistry, costruire i container tramite il server. Lanciando il main viene definito il percorso che l'agente dovrà seguire (i container che dovrà attraversare). Di default è previsto che l'agente attraversi tre container (container0, container1 e container2). Quindi viene ecreato e avviato un agente a cui si affida il tour.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiulianoroberto%2Fjava_mobile_agents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiulianoroberto%2Fjava_mobile_agents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiulianoroberto%2Fjava_mobile_agents/lists"}