This conceptual model is expressed in the Correlate language. In a second phase, and completely orthogonal to it, physical distribution aspects are taken into account and the appliciation is physically distributed over a distributed system and additional aspects like reliability and security are taken into account. In this physical model, the application programmer adds a set of metalevels that use the Correlate metaobject protocol to implement these non-functional requirements. This iterative process of experimenting with real-world applications has been driving the continuous improvement of Correlate. Correlate provides the application programmer with a model of active objects .
Active objects control the synchronization of concurrent requests.
In the Correlate object model an object can exhibit autonomous behaviour . At the level of a class definition, the language's syntax makes a distinction between autonomous operations and interface operations. Interface operations represent the reactive behaviour and are conceptually the same as public operations in object-oriented languages like Java or Smalltalk. Autonomous operations are invoked as soon as the object has been created and they are re-invoked when the execution of the operation is terminated. Correlate supports both synchronous and asynchronous message passing.