AboutDownloadDocumentationPublications
 

Agent Developing Framework

Overview

ADF is a J2EE-based open source agent developing platform with a focus on agent collaboration. The purpose of ADF is to build an interoperable, flexible, scalable and extensible framework that will allow real-world multi-agent systems to be developed with less effort.

ADF is implemented as a Java 2 Platform, Enterprise Edition (J2EE) application, and makes extensive use of many proved technologies, services and standard APIs provided by the J2EE environment, such as: JNDI, JMS, SAAJ, JMX, and other. ADF was implemented and tested using JBoss 4, an open source J2EE 1.4 certified application server.

Goals

Interoperability. We intend ADF agents to be able to easily communicate and interact with entities in other systems (even with those that were not foreseen during the original development), whether they are agents themselves, or more traditional applications. In our view, using open standards is the only possible way to achieve true interoperability in a large-scale, thus heterogeneous, distributed environment.

Flexibility and Extensibility. We aim to make it easy for developers to add new features, or reimplement existing ones using different technologies, without impacting the operation of the system as a whole. When designing ADF, evolution was regarded as something positive and inevitable, that was planed for in advance. Programming to standard interfaces and not to implementations, separating policy from mechanism, orthogonality and loose coupling between the interacting modules were only several of the mechanisms we used to ensure the flexibility and extensibility of the framework.

Scalability. The number of ADF agents the multi-agent system can accommodate, while maintaining an acceptable performance, should not be limited by centralization, whether we refer to centralized data, services or algorithms. Additionally, agents that are very far from one another, should still be able to interact efficiently by using asynchronous communication.

Platform independence. We decided to make ADF independent of the particular hardware configuration, operating system or application server and to model all the dependencies to third-party components through standard interfaces. Therefore we save a great amount of developing time, while having excellent portability for the framework.

Easy to use. No matter how complex the internals of ADF are, this complexity is hidden from the users behind a simple and intuitive API. Programmers are able to build simple agents easily, even if they do not have much knowledge about the characteristics of framework, and then they are able to evolve their skills gradually, as they use new and more advanced features.

Pragmatism. While the theoretical foundations of ADF are surely important, even more important for us is the practical applicability of the theoretical methods in the actual implementation. Because we want our framework to be really useful, we always try to ensure everything works well by writing tests. And although simple test cases are a good start, the actual implementation of real-world scenarios is even better. Another aspect we find very important, is reusing mature existing technologies and synthesizing existing research, which is more effective and more honorable than reinventing the "wheel", or worse, "a flat tire". Only when the existing "wheels" were missing or broken, did we invent new ones, making the platform become greater than the sum of its parts.

Disclaimer

This framework is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation.

This framework is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.