On 5/18/11 19:12, Marcel Offermans wrote:
Hello Marian,

On 18 May 2011, at 22:15 , marian grigoras wrote:

I would like to understand the relation between DependencyManager and iPOJO.
I see that both are apache projects, both under active development - is
there any difference in the problem they try to solve?
They solve the same problem: managing dependencies. They just solve it in 
slightly different ways.

Let me get back in time to explain their origins.

In the early days of OSGi, the only solution for managing dependencies (besides 
doing it yourself using ServiceTrackers) was a project called service binder. 
It's seen by many as the predecessor of what is now called Declarative 
Services. It used an XML file to declare dependencies. Around that time I was 
doing a fairly big OSGi project and we needed a solution to manage 
dependencies. We evaluated service binder, but had a need to more dynamically 
declare dependencies. None of us were big fans of XML either. That's why we 
came up with the Dependency Manager. We tried to make it as easy to use as 
possible, with POJOs as implementations, and as little extra code as possible 
(which is why we can inject dependencies directly into instance members so you 
don't need to provide bind/unbind methods for example).

Once finished, we decided to share this implementation with the community, 
which led to a whitepaper and a presentation about the topic at the OSGi world 
congress in Paris (as listed on http://felix.apache.org/site/presentations.html 
where you can still download the slides). When the Felix project was started at 
Apache, the code was donated as part of this project and I've been basically 
extending it ever since. More recently, Pierre and Arjun have contributed 
various pieces of code as well and very recently the 3.0 version was released.

iPOJO in the mean time was started by Clement to build a more advanced solution 
than the service binder or declarative services as well. It makes some 
different design and implementation choices, but in the end you can do very 
similar things with it. I'm sure Clement can more vividly explain its history 
than I can. :)

I'm currently using DependencyManager and appreciate defining components
(and their dependencies) at runtime. For example, to create components from
dynamic configurations: new config file for a configuration factory is
loaded by FileInstall and a new component can be created with the given
config. Thus I can control the number of similar components with different
configurations by adding/removing configuration files in the directory
monitored by FileInstall. Could I cover this scenario with iPOJO too?
I'll leave that one for Clement to answer.

I'm pretty sure everything you can do with DM is also possible with iPOJO.

Sorry if this sounds trivial, but I was not able to find any resources
relating the 2 projects to each other.
It's no trivial question as far as I'm concerned. It is interesting to see 
there are many different solutions, and in good OSGi spirit they can all be 
used together if you want. Obviously I'm biased here, but I think everybody 
should try for themselves and decide which one they like best.

Originally, I had hoped we could merge DM and iPOJO. iPOJO even introduced an API-based approach based on the DM API, so you can use iPOJO with XML descriptors, annotations, or directly via API. In the end, the merging didn't/hasn't come to pass, but this is a volunteer effort, which is a lot like herding cats. ;-)

-> richard


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to