JACOMMA - Java Communicating Agents


  • Overview
  • Download
  • Design
  • Examples
  • Development
  • Related Publications
  • What is Jacomma

    Jacomma is an agent development platform/framework for developing distributed, mobile, and reactive information agents with heterogeneous communication capabilities, in Java and JPython.

    Jacomma provides a development framework and an execution environment, which sits on top of the Inter-Agent Communication Model infrastructure. The ICM defines a communication protocol, a store and forward messaging architecture, and low level communication infrastructure for message exchange. Communication is truly asynchronous, based on TCP sockets.

    What you can do with Jacomma

    Jacomma agents should be viewed as simple, computational elements, for developing complex distributed applications. Jacomma applications are loosely structured as collections of simple agents, located in arbitrary and not-stationary network locations. Agents interact by exchanging structured messages, in an Agent Communication Language. The behavior of the overall distributed application emerges in terms of component interactions.

    Clearly, the basic parameter for such distributed applications, is the capabilities of the computational elements. In short, with Jacomma. you can easily develop or script mobile agents that:

    • Communicate asynchronously with local and remote agents and agents written in different programming languages (for example C/C++ or April), in a totally transparent manner.
    • Be intermittently connected to the network, without losing any messages.
    • Are composed by simple delegate objects, which abstract the behavior of an agent as reaction rules to message conditions. Message conditions are expressed as message patterns, activated in parallel, and are transparently demultiplexed and dispatched by the jacomma engine..
    • Exhibit dynamically extensible behavior. Agents can plug new reactor delegates and message patterns during their lifetime.
    • Migrate to remote hosts. Although the platform offers only weak migration, the component-ized design of the agents, allows the private state and behavior of an agent to be transportable.
    • Arrange for automatic message forwarding to remote agents.
    • Monitor and be asynchronously notified on conditions related to the lifetime of remote agents.
    • Be interactively developed, tested, and debugged using JPython. The design of the framework allows for piecemal agent development, where each component (reactor objects and message patterns) can be separately debugged and developed.

    What is next

    In order to obtain and use Jacomma, you should take the following steps:

    • Download Jacomma and related software.
    • Read the design notes, in order to obtain a broad understanding of how the jacomma engine works, and how to design custom agents.
    • See some example agents and some example applications based on Jacomma.
    • Check publications related to jacomma.

    Original Author and Availability

    Jacomma was originally developed by Dimitris Vyzovitis as part of his MSc thesis, at the Department of Computing, Imperial College of Science, Technology, and Medicine, at London, UK. It is freely availably under the terms of the GNU Library (or Lesser) General Public License. The latest version of Jacomma and this document is available through the project's homepage. Access to the project's CVS repository and related information is provided here.


    Comments to
    Dimitris Vyzovitis
    Last modified: Mon Oct 2 06:33:32 GMT 2000