1. A computer-readable, non-transitory storage medium comprising program instructions executable by a computer to implement an application component container configured to: detect that an application component managed by the application component container is dependent on an interface to a module managed by a module container that is distinct from the application component container such that different runtime containers manage the application component and the module during runtime of the application component and the module, wherein the module container provides runtime deployment and discovery support for the module; and inject the interface to the module managed by the module container into the dependent application component managed by the application component container, wherein the injection is performed by a dependency injection framework that manages the dependency between the module in the module container and the application component in the application component container in a type-safe manner, and wherein to inject the interface the application component container is further configured to either: in response to detecting that the component is dependent on the interface, create an in-memory object corresponding to the dependency, invoke the in-memory object to obtain a reference to the interface, and inject the interface into the application component; or inject a proxy to the interface, wherein the proxy is configured to handle a dynamic service event of the interface, such that the dynamic service event is made transparent to the component.