Guaranį provides a powerful and secure mechanism to combine meta-objects into dynamically modifiable, elaborate meta-configurations.
In addition to enforcing a clear separation between the reflective levels of an application, the MOP of Guaranį improves reuse of meta-level code by defining a meta-object interface that eases flexible composition. Furthermore, it suggests a separation between meta-objects that implement meta-level behavior from ones that define policies of composition and organization.
Security is another advantage of the MOP of Guaranį. The hierarchy of composition can be used to limit the ability of a meta-object to affect a base-level object. For example, a composer may decide not to present an operation to a meta-object, or to ignore results or replacement operations it produces. The composer can withhold a message to a component, reject a meta-object produced by a component at a reconfiguration or propagation request, or provide restrictive operation factories to its components, thus limiting their ability to create operations. Furthermore, since the identity of the primary meta-object of an object is not exposed, the hierarchy cannot be subverted.
MOLDS [8], a library of reusable and combinable meta-level components useful for distributed applications, is currently being developed atop of our Java-based implementation of Guaranį. Meta-level functionalities, such as persistence, distribution, replication and atomicity, will be provided transparently, from the point of view of the base-level application programmer.