– Firstly, JADE is completely based upon the FIPA spec-
ifications, so much so that, given also its history, it is
often identi fied with the FIPA specifications itself.
– Then, JADE provides a proper set of functionalities to
simplify development of multi-agent systems but it puts
very few restrictions on the user code without, in partic-
ular, imposing any specific agent architecture. That
means users do no need either to understand or use
any BDI architecture, architecture which exists in litera-
ture in hundreds of flavours and that has not yet gained
acceptance in the software engineering community.
Users must simply use and write Java code without need
to learn any new special construct.
– Finally, JADE can be deployed both on JEE, JSE, and
JME devices and its runtime provides a homogeneous
set of APIs that is independent of the underlying net-
work and Java technol ogy.
This paper is organized as follows. Section 2 describes
the JADE agent architecture and its main features. Section
3 shows how JADE enables agents to adapt to mobile envi-
ronment characteristics and to devices with limited mem-
ory and processing power. Section 4 discusses the
integration of agents with other technologies, in particular
Web Services an d reasoning systems. Section 5 discusses,
with an historical perspective, the possible and likely rea-
sons for the widespread usage of JAD E; particu lar care is
devoted to those non-technical aspects which might repre-
sent lessons learned of general usefulness to other projects.
Section 6 gives an overview of an industrial application in
the field of ne twork management, and it presents some of
the reasons that led to the selection of JADE as develop-
ment framework for that system. Finally, Section 7 con-
cludes the paper and outlines some future work.
2. JADE software architecture
The JADE architecture is firmly rooted in peer-to-peer
ideas and communication patterns [2]. The intelligence,
the initiative, the information, the resources and the con-
trol can be fully distributed across a group of heteroge-
neous hosts, including mobile terminals and PDAs, both
in the wireless and in the wired network. The environment
can evolve dynamically with peers, i.e. agents, which can
appear and disappear in the system according to applica-
tion needs and requirements. Communication between
the peers, regardless of whether they are running in the
wireless or wired network, is completely symmetric, each
peer being able to play both the initiator and the responder
role.
The JADE component model organizes applications as
structured ensembles of software components, which
belong to two categories:
– Agents – These are the peers mentioned above, exhibit-
ing autonomy and communicating through asynchro-
nous message passing.
– Services – These are non-autonomous components,
which can run on a single node or cooperatively on mul-
tiple nodes, and whose operations can be triggered by
agents.
JADE is fully developed in Java and, from a software
engineering standpoint, values highly, among others, the
following driving principles:
– Interoperability – JADE is compliant with the FIPA
specifications [14]. As a consequence, JADE agents
can interoperate with other agents, pro vided that they
comply with the same standard.
– Uniformity and portability – JADE provides a homoge-
neous set of APIs that are independent from the under-
lying network and Java version. More in details, the
JADE run-time provides the same APIs both for the
JEE, JSE and JME environment. In theory, application
developers could decide at deploy-time which Java run-
time environment to use.
– Easy to use – The complex ity of the middleware is hid-
den behind a simple and intuitive set of APIs.
– Pay-as-you-go philosophy – Programmers do not need to
use all the features provided by the middleware. Fea-
tures that are not used do not require programmers to
know anything about them, neither they add any com-
putational overhead.
JADE includes both the libraries (i.e. the Java classes)
required to develop application agents, and the run-time
environment that provides the basic services and that
must be active on the device before agents can be exe-
cuted. Each instance of the JADE run-time is called con-
tainer (since it ‘‘contains’’ agents). The set of all
containers is called platform and provides a homoge-
neous layer that hides to agents (and to application
developers as well) the complexity and the diversity of
the underlying tiers (hardware, operating system, type
of network, JVM). Fig. 2 draws the architecture of a
JADE agent system deployed on a set of heterogeneous
computing nodes.
The JADE design choice (in particular not to commit
too strongly to specific agen t architectures) and its modular
architecture allowed JADE to fit the constraints of envi-
ronments with limited resources. JADE has however also
been integrated into complex server-side infrastructures
such as .NET ([18], see FAQ section on the Web Site)
and JEE [10] where JADE becomes a service to execute
multi-party proactive applications. The limited memory
footprint allows installing JADE on all mobile phones pro-
vided that they are Java-enabled. The JADE run-time
memory footprint, in a MIDP1.0 environment, is around
120 KB, but can be further reduced to 50 KB by using
the ROMizing technique ([4,5]), i.e. by compiling JADE
together with the JVM. Analyses and a benchmark of sca-
lability and performance of the JADE Message Transport
System can be found in [9,23].
12 F. Bellifemine et al. / Information and Software Technology 50 (2008) 10–21