JACK® applications consist of a collection of autonomous agents that take input from the environment and communicate with other agents. This provides system builders with a very powerful form of encapsulation. Each agent is defined in terms of its goals, knowledge and social capability, and is then left to perform its function autonomously within the environment it is embedded in.
This is a very effective way of building applications for dynamic and complex environments – 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 interactions of the whole application, rather, the interactions emerge as a by-product of the individual goals and capabilities of the constituent agents.
JACK is a mature, cross-platform environment for building, running and integrating commercial-grade multi-agent systems. It is built on a sound logical foundation: BDI (Beliefs/Desires/Intentions). BDI is an intuitive and powerful abstraction that allows developers to manage the complexity of the problem. In JACK, agents are defined in terms of their beliefs (what they know and what they know how to do), their desires (what goals they would like to achieve), and their intentions (the goals they are currently committed to achieving).
Entirely written in Java™, JACK is highly portable and runs on anything from PDAs to high-end, multi-CPU servers. Its Java foundation means that JACK can run with multiple threads across multiple CPUs, has platform-independent GUIs, and is easily integrated with third-party libraries.