Keith Clark, Nikolaus Skarmeas, Imperial College, United Kingdom and Frank McCabe Fijitsu Laboratories Ltd., Japan
In this paper we introduce a distributed object oriented programming language and we illustrate its use for building Internet wide agent based applications. The language, AprilQ++, is a macro implemented extension of the distributed symbolic programming language April. The ++ signifies that it is an OO extension of April bearing the same relationship to April as C++ does to C. The "Q" indicates an additional feature. The objects in AprilQ++ can have knowledge bases comprising sets of facts and recursive definitions of relations which can be queried, both locally and remotely, using Prolog style queries. AprilQ++ has one other significant feature. Using the higher order features of the underlying April, objects can be cloned, with the current state of the object encapsulated in a procedure closure. The clone can then migrate to be forked as a new active object running on a new host. This features enables us to implement mobile agents.