Just wanted to contribute my 2 cents -- I'd look at a SCR Karaf for 4.0 -
removing Blueprint dependencies from the core is too major a change to try
to introduce it to 2.3.x or 3.0 at this stage.

--Jamie


On Thu, Dec 5, 2013 at 8:10 AM, Jean-Baptiste Onofré <j...@nanthrax.net>wrote:

> I think we have to distinguish different things:
> - the learn curve and usage "outside" of Karaf for developers. CDI is like
> EJB, and other framework.
> - the usage of CDI "inside" an OSGi application or Karaf itself (or for
> "native" OSGi applications).
>
> The fact that Karaf now supports CDI (via pax-cdi) is as good as
> supporting OpenEJB (in KarafEE), or Spring (in Karaf "natively").
>
> I would not use OpenEJB in Karaf "itself", nor Spring, nor CDI.
>
> If a developer wants to create a "generic" application (that can work in
> both OSGi or non-OSGi containers), CDI is good.
> If a developer want to create a native OSGi application, I would use
> natively OSGi "specific" framework (like blueprint).
>
> My 0.02€
>
> Regards
> JB
>
>
> On 12/05/2013 12:06 PM, Christian Schneider wrote:
>
>> Probably you are right.
>>
>> The reason why I came up with CDI is that it has the potential to be the
>> core of user applications.
>> It is fully featured regarding web and persistence if you include other
>> JavaEE stuff and also defines a standardized extension mechanism.
>> CDI is also well known to JavaEE developers. So my point is/was that CDI
>> may be the only thing a developer needs to learn regarding dependency
>> injection.
>>
>> On the other hand a programmer of user applications running on karaf is
>> quite decoupled from the karaf services and commands.
>> So it is probably not necessary that he uses and understands the karaf
>> internals. So from this perspective minimum footprint counts more than
>> having only one framework. So from this point of view DS really is
>> better than CDI.
>>
>> Another argument supporting this is that while I see most potential in
>> CDI to take over dependency injection in user space it is far from the
>> only solution. So there will always be people who use something else. As
>> karaf needs to support a wide range of frameworks this also speaks for
>> minimum footprint for karaf's internals.
>>
>> Christian
>>
>> On 05.12.2013 11:49, Guillaume Nodet wrote:
>>
>>> 2013/12/5 Christian Schneider <ch...@die-schneider.net>
>>>
>>>  Good idea to look into alternatives to blueprint.
>>>>
>>>> The big advantage I see for DS is that it is very light weight. I am not
>>>> so sure about its long term future though.
>>>> I personally think the future of OSGi dependency injection is CDI like
>>>> pax-cdi + weld or openwebbeans.
>>>> Of course this is not really near term and far from being a sure bet.
>>>> Still I think if we switch the DI framework we should
>>>> also at least experiment with CDI. I am currently working on a karaf
>>>> tutorial for CDI. The service injections already work very well.
>>>> I am now looking into jpa support.
>>>>
>>>>  I disagree.  CDI will have the same problems as blueprint, it's an
>>> application level injection framework, not focused *primarily* on OSGi.
>>> The lifecycle of CDI beans has to be static, so you have to use proxies.
>>>   Blueprint has the exact same problem where the beans lifecycle is
>>> bound to
>>> the lifecycle of the container.    On the opposite, DS has a better
>>> lifecycle mechanism for beans which can naturally handle the OSGi
>>> dynamism.
>>>
>>> And CDI would be even more heavyweight than blueprint, so I'd rather
>>> stick
>>> with blueprint than switching to CDI, even if it were ready.
>>> The real benefit of DS is that it has been designed to handle the OSGi
>>> dynamism, so it does less, but it does it better.
>>>
>>>
>>>  In any case I think switching the DI framework should be considered for
>>>> karaf 4. So in this case we have a bit of time to experiment.
>>>>
>>>> Christian
>>>>
>>>>
>>>> On 04.12.2013 21:41, Ioannis Canellos wrote:
>>>>
>>>>  For anyone curious on how Karaf without Blueprint would look like,
>>>>> here is a karaf branch that is free of blueprint:
>>>>> https://github.com/iocanel/karaf/tree/karaf-light (it's a fork of the
>>>>> karat-2.3.x branch).
>>>>>
>>>>> It is actually a refactored karaf 2.3.x that removes blueprint from
>>>>> all modules (yet still provides blueprint as feaures). Karaf specific
>>>>> blueprint namespace handlers have moved to optional bundles so that
>>>>> they can still be used if needed.
>>>>> Blueprint has been replaced with Felix SCR (including the shell
>>>>> commands). Moreover, misc refactorings on features and startup bundles
>>>>> have been performed in order to reduce the size and the amount of
>>>>> bundles in the minimal distro.
>>>>>
>>>>> The result is a minimal distribution that starts 12 bundles [1] (out
>>>>> of 37 which were part of karaf 2.3.3 minimal distro). 10 of those
>>>>> bundle were blueprint bundles and the rest are extra noise.
>>>>>
>>>>> My motivation behind this refactoring was:
>>>>> i) I like declarative services more than blueprint.
>>>>> ii) I've been working on projects that are packaged inside the karaf
>>>>> minimal distro which would benefit from a smaller size (e.g.
>>>>> jclouds-cli).
>>>>> iii) I wanted to make a karaf distro as flexible as possible.
>>>>>
>>>>> Please note that my main focus was the minimal distribution and also
>>>>> this is not 100% polished.
>>>>>
>>>>> Enjoy!
>>>>>
>>>>>
>>>>> [1]: The bundle list of the minimal distro:
>>>>>
>>>>>      ID   State         Level  Name
>>>>> [   0] [Active     ] [    0] System Bundle (4.0.3)
>>>>> [   1] [Active     ] [    5] OPS4J Pax Url - mvn: (1.3.6)
>>>>> [   2] [Active     ] [    5] OPS4J Pax Url - wrap: (1.3.6)
>>>>> [   3] [Active     ] [    8] OPS4J Pax Logging - API (1.7.1)
>>>>> [   4] [Active     ] [    8] OPS4J Pax Logging - Service (1.7.1)
>>>>> [   5] [Active     ] [   10] Apache Felix Configuration Admin Service
>>>>> (1.6.0)
>>>>> [   6] [Active     ] [   11] Apache Felix File Install (3.2.6)
>>>>> [   7] [Active     ] [   13] Apache Felix Declarative Services (1.6.2)
>>>>> [   8] [Active     ] [   25] Apache Karaf :: Shell :: Console
>>>>> (2.3.4.SNAPSHOT)
>>>>> [   9] [Active     ] [   30] Apache Karaf :: Features :: Core
>>>>> (2.3.4.SNAPSHOT)
>>>>> [  10] [Active     ] [   30] Apache Karaf :: Features :: Command
>>>>> (2.3.4.SNAPSHOT)
>>>>> [  11] [Active     ] [   30] Apache Karaf :: Shell :: Log Commands
>>>>> (2.3.4.SNAPSHOT)
>>>>> [  12] [Active     ] [   30] Apache Karaf :: Shell :: OSGi Commands
>>>>> (2.3.4.SNAPSHOT)
>>>>>
>>>>>
>>>>>  --
>>>> Christian Schneider
>>>> http://www.liquid-reality.de
>>>>
>>>> Open Source Architect
>>>> http://www.talend.com
>>>>
>>>>
>>>>
>>
>>
> --
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Reply via email to