In recent times, it has become clear that traditional IT systems are not suited to interacting with dynamic environments. Implementing the interaction has proven to be time consuming and error prone. It is particularly problematic where there are many external entities that must be controlled, serviced or modelled. In the past, implementing such systems has entailed explicitly programming the interaction with each external entity. If this is more than a simple client/server interaction, then the application will be difficult to implement, maintain or change.
In contrast, JACK™ Intelligent Agents has proven to be well suited to applications requiring complex interactions with an ever-changing environment. Each JACK agent is an autonomous computational entity. Autonomy, coupled with the ability to take input from the environment and communicate with other agents, provides system builders with a very powerful form of encapsulation. A given agent can be defined in terms of its goals, knowledge and social capability, and then left to perform its function autonomously within the environment it was designed to function in.
This is a very effective way of building distributed applications; each agent is responsible for pursuing its own goals, reacting to events and communicating with other agents in the system. There is no need to explicitly program the communication, rather, the interactions emerge as a by-product of the individual goals and capabilities of the constituent agents.