In a few (and seemingly growing number
of) places we have bundles that need to compile against say J2SE 1.4 but
in practice we want them to run against Foundation. This is cool
because it allows us to run in small places but take advantage of function
when it is available. We currently have a mixed approach to this
however. For example in org.eclipse.osgi we have a set of JARs that
contain shell apis for the OSGi ee.minimum 1.1 and we compile against these.
We also have a set of "exception" (extra) jars that similarly
just contain class signatures for us during compilation. In other
bundles we do things like
This uses an intentional quirk of PDE
that uses the first EE on the list as the compilation base for the project.
That's pretty cool and useful for getting going but it has some downsides:
- it muddies the waters by confusing
- it allows people to use any 1.4 classes/methods
thus opening the doors to mistakes
So I wonder if we should apply the first
technique more broadly and seek to eliminate instances of the second in
our bundle set? It seems that we just need a mechanism for easily
creating/managing these shell jars and then we can have very detailed control
over what we use in our bundles.