The J2EE Engine 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.
Three types of J2EE Engine components are defined:
? 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.
? Libraries – they provide name, classes and objects to the system. They are used for general bytecode sharing between J2EE Engine components and applications. Libraries are not active components – they have no definite life cycle, do not allocate resources themselves and do not keep any kind of configuration information in the system. It is responsibility of the component that uses the library to initialize it and construct the necessary objects.
? Services – they provide the system with their 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. Services are active components with definite life cycle. They can allocate resources at their startup time and are responsible to release them at shutdown time. Development of service components is mainly supported for internal J2EE Engine infrastructure purposes. For more information, refer to SAP Note 822542.
Two types of references describe the dependencies between different components of the system – weak and strong. For more information, see Components References.