!--a11y-->
Pluggable Components 
The pluggable components build the second level of the system. Built on top of the runtime and being able to communicate and use each other, these components form the complete system infrastructure to run both J2EE and SAP proprietary applications.
You can develop and deploy your own components to extend your existing SAP J2EE Engine system. You have to observe the SAP proprietary specification of the components life cycle and references between them when developing your own interfaces, libraries, or services. Read more about those requirements, as well as description of the SAP J2EE Engine Framework APIs in the Developing Services documentation.
SAP J2EE Engine defines three types of pluggable components:
· Interfaces – you can think of them as “contracts” that define how different components of the system work together. Those components do not provide any runtime functions. At runtime, they provide the system with their name and classes (no objects). They are used by services components that provide their implementation. Interface components can also be implemented directly by applications.
· Libraries – they provide name, classes and objects to the system. These objects are created by the system when it loads the library, or when an object is first requested. Other library components or services components usually access them using static methods.
· Services – they are more powerful than the previous two components. They provide the system with the name, classes and runtime objects. The runtime objects are registered on the system once the components classes have been loaded. Service components can access and utilize functions of the runtime through the Framework API.
Three types of references describe the dependencies between different components of the system – notify, weak and strong. Read more about each type in Components References.
