Our own experience in developing agents and multi-agent systems painfully taught us that there are no instruments to support the implementation of such systems. A thorough literature study confirms the fact that implementation issues, which are definitely non-trivial but clearly underestimated, are mostly achieved in an ad hoc fashion. This obviously results in people reinventing solutions for common problems. In this paper, we propose agent implementation patterns as an instrument to describe problems and generic solutions for implementing agents and multi-agent systems. Agent implementation patterns contrast with other proposals of agent patterns in that the latter typically deal with architectural and conceptual models, and not with the actual implementation of agent characteristics. If we eventually want to come to a best practice for the development and implementation of agent systems, system developers should share their knowledge and experience gained during the implementation of their systems. Agent implementation patterns can contribute to formalize and share such knowledge.
In this paper, we propose to design a mobile agent execution environment, based on the bare coordination media. To do this, we discuss two ways to enhance a coordination medium. First, we introduce a way to add system specific non-functional behaviour (such as performance, security) to the medium, in order to add dynamism to the otherwise fixed coordination laws. Our current research focuses on reprogrammable coordination media by means of a reflexive architecture. Second, we discuss ways to add mobility to the coordination medium by introducing the concept of federation. We use federation and normal OO referencing to distinguish different kinds of mobility in coordination media. After clarifying our view on coordination media, we describe and discuss a Meta-Object Protocol (MOP) that fulfils a set of requirements for making these coordination media reprogrammable. Next, we show how the different “flavours” of mobility can be introduced. We implemented all this on our object space prototype, COPS .
In this paper, we present a mechanism to capture and reestablish the state of Java threads. We achieve this by extracting a thread’s execution state from the application code that is executing in this thread. This thread serialization mechanism is implemented by instrumenting the original application code at the byte code level, without modifying the Java Virtual Machine. We describe this thread serialization technique in the context of middleware support for mobile agent technology. We present a simple execution model for agents that guarantees correct thread migration semantics when moving an agent to another location. Our thread serialization mechanism is however generally applicable in other domains as well, such as load balancing and checkpointing.
We have developed a portable mechanism for transparent thread migration in Java. This thread migration mechanism is implemented by instrumenting the original application code through a bytecode transformer without modifying the Java Virtual Machine. In this paper we examine how this thread state capturing mechanism can be extended such that JVM thread semantics can be maintained in mobile object systems.
Our own experience in developing agents and multiagent systems painfully taught us that there are no instruments to support the implementation of such systems. A thorough literature study confirms the fact that implementation issues, which are definitely non-trivial but clearly underestimated, are mostly achieved in an ad hoc fashion. This obviously results in people reinventing solutions for common problems. In this paper, we propose agent implementation patterns as an instrument to describe problems and generic solutions for implementing agents and multiagent systems. Agent implementation patterns contrast with other proposals of agent patterns in that the latter typically deal with architectural and conceptual models, and not with the actual implementation of agent characteristics. If we eventually want to come to a best practice for the development and implementation of agent systems, system developers should share their knowledge and experience gained during the implementation of their systems. Agent implementation patterns can contribute to formalize and share such knowledge.