I have struggled to understand what OSGi really means for a long time. It has been around since a very long time but not many people are aware of it. It has been hyped as a very complex technology to understand. Here is my attempt to make it simple for any Java developer.

In short OSGi is a group of specifications that enable the modular assembly of software built with Java technology. It defines the creation and registration (in a OSGi enabled container) of components - services so as to inter-intra communicate. Another benefit of OSGi is that all these services can be installed/un-installed/started/stopped at runtime (i.e. code can be hot deployed at runtime). Similar to Servlet container implementations like Tomcat and EJB containers found in popular J2EE application servers like WebSphere, JBoss, WebLogicOSGi also has some popular container implementations like Equinox (which is the base for Eclipse), Apache Felix …etc

The service oriented approach is one of the strong points in OSGi but I should not forget to mention another one that I feel is very important when you have to deal with an application with tons of dependencies. OSGi solves the problem of “Jar Hell”.

Read more at :

Java Code Geeks: OSGi Using Maven with Equinox