PicoContainer is a highly embeddable full service Inversion of Control (IoC) container for components honour the Dependency Injection pattern.
You could use it as a lightweight alternative to Sun's J2EE patterns for web applications or general solutions.
What is Dependency Injection? Martin Fowler has a good article from 2003, but here is another view: It is a good design pattern that, for large enterprise applications, facilitates:
Dependency Injection is quite often, but not exclusively, used by Agile practicioners. It counters the situation where the enterprise application:
Despite it being very compact in size (the core is ~128K and it has no mandatory dependencies outside the JDK), PicoContainer supports different dependency injection types (Constructor, Setter, Annotated Field and Method) and offers multiple lifecycle and monitoring strategies.
PicoContainer has originally been implemented in Java but is also available for other platforms and languages. These are detailed here.
Take a look at the introduction.
NanoContainer builds on top of PicoContainer the support for several scripting meta-languages (XML, Groovy, Bsh, Jython and Rhyno), AOP, Web frameworks (Struts and WebWork), Persistence (Hibernate) SOAP, JMX, and much more.