Placing API and implementation in two different bundles but in the same package
is an interesting approach to modularity. Though it achieves a certain amount
of independence and substitutability, and thus some kind of modularity, you
will end up fighting OSGi all the way for no obvious gain. There is a very
strong assumption in OSGi that a package is atomic. If you read the Java
Language Specification you will see that packages were intended to be Java's
modules. Modules are by their nature not splittable. In Java it is even worse,
when you're in the same package you have extra privileges, this will allow an
API to see private implementation code and vice versa. Resolving your bundles
would become significantly harder.
To make this scheme work in OSGi you would have to create a facade bundle that
requires your API and implementation, this would just add an unnecessary bundle
to the list. If you have many impls/APIs this adds up quickly.
So, though the idea might seem attractive because you separate API and impl you
will be fighting OSGi all the time. I would advise to keep it simple and spent
your time on something more useful. Just keep API and impl in separate packages.
Kind regards,
Peter Kriens
On 6 mei 2010, at 14:34, Tom Kesling wrote:
> I'm trying to understand the rules/best practices for working with
> split packages.
>
> I have a bundle that depends on a package that exists in two separate bundles.
> The package in one bundle contains interfaces and the package in the
> other bundle contains implementation of those interfaces.
>
> Is this a bad pattern to follow?
> Will this create class loader issues?
> Should split packages be avoided?
>
> Any advice/best practices would be appreciated.
>
> Thanks,
> T
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev