In the recent years, mobile agents (MAs) have arised as a promising paradigm to build distributed applications. They provide a range of advantages, specially in pervasive and mobile environments. Thus, autonomy, load balancing, performance and flexibility are some of the benefits inherently associated to the use of mobile agents. However, we have found that most of these platforms do not perform efficiently nor reliably in environments with highly mobile and cooperative agents, specially when the number of agents increases. Thus, the development of a new MA platform is strongly motivated by needs detected in our research projects, where we frequently use mobile agent technology to build distributed applications. Thus, we propose SPRINGS (Scalable PlatfoRm for movINg Software), a novel MA platform featuring location transparency, automatic update of proxies, and scalability. Besides, livelock problems are minimized. The API of this platform is available here (updated on January 13, 2006). Our experimental study has proven the interest and usefulness of SPRINGS.
This project started with a Master Thesis number 42 by Alejandro Espín (firstname.lastname@example.org), who developed a platform of mobile agents called Sping (finished on August 30, 2004). Although we have used some of the ideas of this initial project, we have re-implemented and re-design it completely from scratch. As a reference, we keep the API of Sping here, and more details about this seminal project can be obtained from the author. Among many other important changes, our new architecture and implementation simplifies the process of launching a new context, adds a mechanism for the remote loading of classes, deals with livelock problems, implement an efficient proxy update mechanism, and removes the use of LDAP (which was proved to be a bottleneck) and hash functions to assign trackers to agents. Also, we provide true location transparency: the programmer can survive without URLs and port numbers! Some features of Sping (such as persistency) are missing in the current project and will be the subject of future work. On the contrary, the new architecture is much more reliable.
- April, 2008: SPRINGS tested in wireless environments, paper published at DS2ME@ICDE'08.
- June, 2007: We publish a survey on mobile agent platforms (ICAS'07).
- February-May, 2007: SPRINGS used in the lab for the course "Semantic Web", within the "Master of Web Services and Electronic Commerce" at the University of Zaragoza (Spain).
- October 10, 2006: We finished a first manual about how to use the platform.
- February 28, 2006: SPRINGS paper accepted at the 4th International Workshop on Mobile Distributed Computing (MDC'06), held in conjunction with the 7th IEEE International Symposium on A World of Wireless, Mobile and Multimedia Networks (WoWMoM 2006)
- January 19-20, 2006: SPRINGS has been presented in a crash course on Artificial Intelligence, Semantic Web and Intelligent Agents (20 hours) at the R+D Center of the Vodafone Group at the Technological Park Walqa
in Huesca. The students played with SPRINGS during two 2-hour sessions, realizing their benefits.
- December 2, 2005: We have finished our implementation of LOQOMOTION
on top of SPRINGS. There is a promising big leap in performance and scalability!
- August 18, 2005: First stable version of SPRINGS (after quite a lot of debugging and optimizing code). This is nice... and we outperform Voyager, Grasshopper, Tryllian, and Aglets in our hard "move-and-call" crazy test.
- May 19, 2005: We changed the architecture of SPRINGS: hash functions are removed and we aim at a more fault-tolerant system (e.g., now there are k contexts tracking a given agent instead of only one, where k is the tracking factor). Introduction of the idea of Region Name Server. Place names are stored to provide more location transparency. The use of agent references is made transparently: the programmer cannot access them directly
- May 3, 2005: First beta version of SPRINGS
- April 29, 2005: The implementation is changed because we realise that sending agents as Object parameters through RMI is slightly more efficient than sending them as streams of bytes (i.e. performing the serialization by ourselves). As a consequence, the mechanism for remote loading of classes becomes somewhat obsolete: we now rely on the capabilities of RMI but we keep some of the old code for historic purposes.
- April 28, 2005: We get our logo character (developed by José Ilarri)
- March 10, 2005: SPRINGS takes off
- November 25, 2004: Motivated by the limitations of existing platforms in environments with large numbers of highly mobile agents, Eduardo Mena and Sergio Ilarri decide to undertake the project again
SOME DETAILED NOTES
- The constructor of a SpringsAgent_RMIImpl must capture RemoteException (because a SPRINGS agent is a remote RMI object and, therefore, its constructor can throw that exception).
- Class AgentReference refers to the classical concept of proxy used in some MA platforms.
- The programmer is responsible for terminating the agent's thread after a moveTo, as it is the case in other MA platforms.
If you would like to try it, please send us an email! .