From:
equinox-dev-bounces@xxxxxxxxxxx [mailto:equinox-dev-bounces@xxxxxxxxxxx] On Behalf Of Thomas Watson
Sent: Thursday, February 01, 2007
12:36 PM
To: Equinox development mailing
list
Subject: RE: [equinox-dev] Bundle
Granularity?
> equinox-dev-bounces@xxxxxxxxxxx
wrote on 02/01/2007 01:22:27 PM:
>>
Hi Tom,
>>
>> Please refer to my
responses below.
>>
>> Rick Litton
>>
There are a few reasons we package the core org.osgi classes in the
>>
framework implementation (org.eclipse.osgi)
>>
>>
1) Packaging convenience. Having all the org.osgi.* classes
>>
packaged directly in the framework implementation reduces the amount
>>
jars you need to find and place on the classpath of the framework.
>>
-> I was assuming that the osgi bundles will be auto-started and
>>
that the required packages are exported which can then be imported
>>
by org.eclipse.osgi. I haven’t actually done this but I think it
should work.
> The OSGi framework is not
loaded with an OSGi classloader. It has no
> ability to reach out into a
bundle to load classes via Import-Package.
> Especially core classes in
the org.osgi.framework package that are needed
> to implement the Framework
itself.
Which is true. It’s the
chicken and egg scenario and causes problems with a mixed framework
(e.g. mixing Equinox and Felix)
scenario. I was actually looking for a mix and match solution if it was
all
possible.
>>
2) Technically we need to modify some of the classes provided by the
>>
OSGi Alliance to hook into our implementation. For example,
>>
FrameworkUtil, AdminPermission and BundleSignerCondition.
>> -> Can we get away
with just extending the osgi interfaces? I guess
>>
I find changing someone else’s framework classes/interfaces unappealing.
> The OSGi specification states
that implementations are free to modify
> the OSGi classes to hook in
to their implementation. We cannot
> simply extend classes like
FrameworkUtil because that is the class
> that other bundles will
reference, not our extending class. That
> would create a containerism.
It’s actually the focus of another
project I’m currently working on (outside of work). Creating a
container
that allows for a “shell-like”
environment that encapsulates components from different
frameworks seems to be a possible solution.
> Felix project is also
packing the org.osgi packages in the felix
> framework for the same
reason.
Yes, again this is true.
Classloading is a major problem with OSGi framework
Implementations and I wonder if what you
mentioned as an “OSGi classloader”
is a feasible approach. Has anyone
ventured into this?
>>
>>
3) Working on future reference implementations for the OSGi
>>
Alliance.
We need the ability to modify the API with enhancements
>>
that will become available in future public OSGi specifications.
>>
For example, we are currently working on the Reference
>>
Implementation for OSGi R4.1 which introduces a small number new methods.
>> -> Personally, I
think that this is even an important consideration.
>>
Switching OSGi R4 bundles with OSGi R4.1 ones will be a “snap”
>>
(hopefully) when they become available. Like everyone else, I
>>
suppose OSGi will also provide maintenance or versioned releases to
>>
fix defects, etc. It would be expedient to simply switch to those
>>
versioned ones without having to release an Equinox distro in
>>
response. In this sense, tight coupling has its disadvantages in my view.
>>
> We cannot treat these core
classes as a real bundle, I can see some value
> in having the jar separate
from the org.eclipse.osgi jar but it adds
> complication when launching
the framework because you need to find an
> osgi.jar that is compatible
with the framework implementation.
This certainly is a problem especially
since OSGi allows for modifying core classes. But
we are putting our thinking hats on to
possibly get around this (we hope).
> Tom
Thanks for the info.
Rick Litton