JADE is absolutely neutral in respect to a definition of an agent. The interested reader should refer to more appropriate scientific sources. JADE conceptualizes an agent as an independent and autonomous process that has an identity, possibly persistent, and that requires communication (e.g. collaboration or competition) with other agents in order to fulfill its tasks. This communication is implemented through asynchronous message passing and by using an Agent Communication Language with a well-defined and commonly agreed semantics.
From the implementation point of view a JADE agent is an instance of the jade.core.Agent class and each agent embeds a Thread of execution.
Posted in: General Questions about Jade