However, their basic concepts are largely equivalent. AOP starts with user-written components that cleanly encapsulate some application function in code. AOP components can be methods, classes, etc. AOP then applies one or more aspects to these components to perform large-scale refinements. Aspects implement design features that may modify or cross-cut multiple components.
All modifications take place at predefined join points .
Join points may be as generic as constructs in the host programming language or as specific as code markers unique to an application. GenVoca, on the other hand, defines standardized interfaces called realm s which may contain multiple classes and their methods. GenVoca components are modules that export a realm interface and encapsulate the implementation of a single design feature. GenVoca components may also import realm interfaces allowing components to be parameterized by other components. Such compositions are specified in type equations.