2APL (pronounced as double-a-p-l) is an agent-oriented programming language that facilitates the implementation of multi-agent systems. At the multi-agent level, it provides programming constructs to specify a multi-agent system in terms of a set of individual agents and a set of environments in which they can perform actions. At the individual agent level, it provides programming constructs to implement cognitive agents based on the BDI architecture. In particular, it provides programming constructs to implement an agent’s beliefs, goals, plans, actions (such as belief updates, external actions, or communication actions), events, and a set of rules through which the agent can decide which actions to perform. 2APL is a modular programming language allowing the encapsulation of cognitive components in modules. 2APL supports the implementation of both reactive and pro-active agents.
The 2APL programming language comes in two versions following different programming styles: one is based on a specially designed hybrid programming language combining imperative and declarative styles, and the second is based on a purely imperative programming style. The first version comes with a corresponding execution platform and an Eclipse plug-in editor. The execution platform provides a graphical interface through which a user can load, execute, and debug 2APL multi-agent programs using different execution modes and several debugging/observation tools. The second version of 2APL comes as a Java library with specialised classes to support the development of multi-agent systems using Java development tools. This version can exploit all programming facilities that are developed to support programming in Java.