Loose coupling is one of the critical elements in object-oriented software development. It allows you to change the implementations of two related objects without affecting the other object. Inversion of Control (IoC) is one approach you can use to achieve loose coupling between several interacting components in an application.
Popular Java IOC/DI Containers:
- Spring Framework : A substantially large framework which offers a number of other capabilities apart from Dependency Injection.
- PicoContainer : A fairly small tightly focused DI container framework.
- HiveMind : Another DI container framework.
- XWork : Primarily a command pattern framework which very effectively leverages Dependency Injection. While it is an independent framework in its own right, it is often used in conjunction with Webwork
Popular .Net IOC/DI Containers:
- Castle Windsor - Licensed under Apache 2(based on the Castle MicroKernel )
- StructureMap - Licensed under Apache 2
- Spring.NET - Licensed under Apache 2
- Autofac - Licensed under MIT
- PicoContainer.NET - Port of Java's PicoContainer
- LinFu - Licensed under Lesser GPL
ref:
Inversion of Control Containers and the Dependency Injection pattern(Martin Fowler) - http://martinfowler.com/articles/injection.html
Dependency Injection - http://msdn.microsoft.com/en-us/magazine/cc163739.aspx
Beginners Guide to DI - http://www.theserverside.com/news/1321158/A-beginners-guide-to-Dependency-Injection
.Net IOC Containers - http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx
IOC(dotnet_tricks) - http://www.abhisheksur.com/2011/02/inversion-of-control-practical-usage-of.html
Inversion Of Control(Java Boutique) - http://javaboutique.internet.com/tutorials/loose/