Agent Programming
The term agent has been widely used by business and academia to describe the active
elements of a complex system.
In software engineering, agents have been described and implemented for many different
types of applications, performing dedicated tasks as part of a larger formalized process.
Simple agents work alone and are very much like traditional applications
that perform a dedicated task. Agents like these run as often as needed and may run continuously.
They are oblivious to the presence of other agents and are often run standalone to avoid conflict.
Large applications that are built in this manner are called monolithic and can quickly grow in size and complexity as features evolve.
Some agents work in groups dividing up a large task between themselves
for processing in parallel.This is sometimes called pooling and is a common technique that allow systems to scale when processing capacity and resources are limited. Agents like these can easily take advantage of multithreaded environments in order to complete a job faster and more efficiently.
Parallel designs encourage the use of simpler application architectures and often exploit
polymorphic features of object oriented environments like Java.
Some agents are cooperatve by offering specialized services to other agents through
a formalized interface. Improving the performance of any specific agent in a cooperative
environment benefits every agent in the system. In addition, new features can be integrated by adding new agents to the system,or by replacing older agents with alternate implementations.
Some agents are autonomous and are able to perform tasks independently from user
interaction. These agents are essentially setup once, and continue to function without
further intervention. They are most useful in server applications, or in any situation
where user-interaction is not a requirement.
Some agents are mobile and are able to move freely, or with some restrictions, between
different agent servers. Sometimes only their data is moved, and in other cases their complete state and byte-code are moved. In some applications, mobility is the primary feature necessary to realize the benefits of agent programming.
Anatomy of an Agent Application
The Comet Way Agent Kernel provides a mature foundation for the implementation of these agent types, and provides a versitile environment for supporting the needs of a typical agent. All types of agents running under the Comet Way Agent Kernel can peacefully co-exist with each other, sharing the full benefits of these and other agent types as necessary. Rarely does one specific approach satisfy the needs of all applications.
The Comet Way Agent Kernel supports a methodology known as agent programming which provides a context for componentizing application functionality through the use of agents. Individual agents are dedicated to the performance of a specific task or domain, and provide the basic building block necessary for creating increasingly sophisticated and complex applications. Agent programming is a simple and effective approach for writing component software.
Modularity and reusability is one of the most promised, yet rarely achived, benefits of
the Java language. The Comet Way Agent Kernel makes good on this promise by providing a
consistent model for writing component software as agents. By taking advantage of proven APIs and
platforms, these agents can quickly to extend their effective reach while providing a level
of stability and compatibility across various Java technologies.
Description: Some background on agent programming tools and methodology.
Updated: Mon May 19 06:24:17 EDT 2008