libanjuta defines a component-based plugin framework for Anjuta. In its core is the shell (AnjutaShell) in which all plugins are loaded. Plugins can also merge their UI and preferences in AnjutaUI and AnjutaPreferences, respectively.
Following diagram illustrates the architecture more clearly.
Plugins are components which are loaded in shell at run time. libanjuta framework provides a very generic communication framework for plugins to interact and therefore it is upto the plugins to device their own communication protocols. Essentially, it means defining clear interfaces for the plugins. Plugins can also control other plugins, like load, activate, deactivate or unload.