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]