2009/2/4 Richard S. Hall <[email protected]>

> Stuart McCulloch wrote:
>
>> 2009/2/3 Rob Walker <[email protected]>
>>
>>
>>> The servicebinder model has served us very well and still does. I note
>>> though that there are perhaps newer approaches such as Declarative
>>> Services
>>> and iPojo. Very interested in views on:
>>>
>>>  * benefits of moving from servicebinder (especially any real
>>>    experiences from others who have done this)
>>>  * pros and cons of either DS or iPojo as the model to move to
>>>
>>
>> interesting, Karl and I were just chatting about this...
>>
>> iPOJO provides a really comprehensive component model, where you
>> can add almost any sort of behaviour using handlers - the downside in
>> my opinion is that it requires you to instrument your bundles in the build
>> phase - these bundles cannot then be used without iPOJO
>>
>> however, as Karl rightly pointed out, when you instrument your bundle
>> you basically make it very extendable and adaptable, so the runtime
>> dependency on iPOJO is not that big a deal (iPOJO core is small)
>>
>> of course if iPOJO provided runtime instrumentation that would totally
>> eliminate this downside (not sure if that's in the works, but it should be
>> feasible and would be really cool, hint-hint!)
>>
>
> The reason for this decision build-time instrumentation is because it will
> work across all OSGi framework impls without requiring an containerisms. For
> example, since there is no standard way to hook into OSGi class loading, it
> is difficult to property set the protection domain of classes instrumented
> at run time. We know this, because iPOJO started life using run-time
> instrumentation. :-) Once a standard hook is available, then run-time
> instrumentation is possible without any difficulty.
>

no problem, perhaps there's a way to make the Import-Package
constraints introduced by iPOJO optional - it sounds like they're
actually optional dependencies from what Clement says...

FWIW, here is the Import-Package from one of the examples:

  Import-Package: org.osgi.service.log;version=1.3, org.apache.felix.ipo
   jo.architecture;version= 1.2.0, ipojo.example.hello, org.apache.felix
   .ipojo;version= 1.2.0, org.osgi.service.cm;version=1.2

the original source didn't have any iPOJO, log or cm references


>  another question is how well iPOJO integrates with other DI frameworks
>> - unfortunately I haven't had time to look into this, but again it should
>> be
>> possible (at the very least it can interoperate via the service registry)
>>
>>
>
> I am not sure what this really means, since I think pretty much all OSGi DI
> frameworks integrate through the service registry. What else you are
> thinking about?
>

it's more about "non-service" integration, for example Guice has
an integration module that can use Spring beans - it sounds like
something like this could be done using handlers that delegate
to Spring / Guice / whatever's needed to provide a dependency


>
>  the benefit of DS is that it's a standard that's been around the block,
>> but the Spring DM / blueprint spec seems to have had more focus
>> going forward. This of course doesn't mean DS is going away any
>> time soon, as for example Eclipse/PDE is adding support for DS:
>>
>>   http://wiki.eclipse.org/PDE/Incubator/DS
>>
>> you can also use the Bnd Tool or the maven-scr-plugin to generate
>> DS metadata, minimizing the amount of XML you have to deal with.
>>
>> personal summary: DS is a safe choice, iPOJO requires a bit more
>> effort to begin with but opens up a lot more possibilities in the future
>>
>
> DS would certainly be easier coming from SB, since there is lineage between
> the two.
>
> Obviously, I am biased for iPOJO. It is written specifically for OSGi and
> can offer more OSGi-specific stuff as a result, e.g., minimal metadata via
> byte code inspection, automatic concurrency handling for service
> dependencies, component participation in provided service lifecycle, dynamic
> service properties for provided services, service scoping through
> hierarchical composition, etc. Still, in iPOJO we strive to keep the simple
> case simple. (See the presentation on our wiki for some simple examples.)
>
> However, I imagine the best way to figure it out is to create some examples
> in the various technologies.
>

yep, preferably open-source so everyone can benefit ;)


> -> richard
>
>  the most important thing to realize is that all these frameworks can
>> co-operate via the OSGi service registry, so you can mix-n-match
>> them and see which approach suits your application best. Most of
>> them try not to intrude too much on component internals.
>>
>> will round things off with a couple of plugs:
>>
>>  EclipseCon 2009 has a tutorial about OSGi component models
>>  ( http://www.eclipsecon.org/2009/sessions?id=245 )
>>
>>  Kai has a presentation of a Swing app using DS/iPOJO/etc...
>>  ( http://www.toedter.com/blog/?p=44 )
>>
>> also feel free to take a peek at http://code.google.com/p/peaberry/
>> While it's not a component model per-se (that is being looked into)
>> it does provide a fluent Java 5 API for injecting dynamic services.
>>
>> it also abstracts the registry, so in the very near future you'll be able
>> to inject both services and Eclipse extensions (as well as your own
>> registry if you happen to have one lying around) .. the downside of
>> peaberry is that it requires you to use Java5 and Guice
>>
>> FWIW I've heard people mention they've been doing comparisons
>> between the various component models on the Guice-OSGi group,
>> but afaik none of these comparisons are ready for publication...
>>
>> HTH
>>
>> Any thoughts welcomed
>>
>>
>>> Regards
>>>
>>> -- Rob
>>>
>>> Ascert - Taking systems to the Edge
>>> [email protected]
>>> +44 (0)20 7488 3470
>>> www.ascert.com
>>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
-- 
Cheers, Stuart

Reply via email to