Yan Container mandates no contract between container and your components. Design your IoC components at will and forget about what's so called "container". Yan is able to manage java component designed in any fashion (be it Java Bean, Constructor, Static Factory, Abstract Factory, Singleton, Object Pool or any combination.) _declaratively_. All features in Yan are provided with no intrusion needed. You will never end up being locked up in Yan as you might be with the funny BlahBlahAware interfaces. And there will be nothing that you can do in Java but can't in Yan.
The scope of the NanoContainer project is to complement the PicoContainer project, providing it with additional functionality. The project comprises of several components which can either be adaptions in various guises of PicoContainer (eg composition by-class-name rather than by-class), or adaptations to external components bringing them closer to the Dependency Injection ideal - particularly Constructor Injection
PicoContainer is a lightweight and highly embeddable container for components that honour Dependency Injection. Dependency Injection is a type of Inversion of Control.
The Plexus project provides a full software stack for creating and executing software projects. Founded on the Plexus container, applications can utilise component-oriented programming to build modular, reusable components that can easily be assembled and reused.
Cargo is a thin wrapper around existing containers (e.g. J2EE containers). It provides different APIs to easily manipulate containers. Cargo provides a Java API to start/stop/configure Java Containers and deploy modules into them. It also offers Ant tasks, Maven 2/Maven 3, Intellij IDEA and Netbeans plugins. There's also a Java API to parse/create/merge J2EE Modules and deployment descriptors.
Jetty provides an HTTP server, HTTP client, and javax.servlet container. These components are open source and available for commercial use and distribution.