Aaron Siri wrote:
Why oh why would you even bring up the jar vs. package debate? For better or
worse .jar is the standard "packaging" mechanism and packages have been
regulated to namespace duty. ;) As long as code is delivered via .jars why
don't we keep it in that format? I don't want to second guess why things are
packaged as they are. We are just trying to keep our bundles neat and
organized. :P
Well, the OSGi framework works in terms of packages, not JARs.
-> richard
-Aaron
-----Original Message-----
From: Niclas Hedhman on behalf of Niclas Hedhman
Sent: Wed 12/6/2006 8:53 PM
To: felix-dev@incubator.apache.org
Subject: Re: Bundling interfaces and implementations (was: Bundle plugin:
Importing packages from non-bundles)
On Thursday 07 December 2006 00:54, Aaron Siri wrote:
What if we did away with <Private-Package> (or detect a special value) and
just assume that all maven jar dependencies are required by the bundle
packages with packaging of the jars honoring the dependency definitions
(i.e. compile, provided, etc.)? The classpath is added to the manifest.
You can Export-Package/Import-Package as done today. Could this work?
I have not yet taken a proper look at bnd, but your suggestions doesn't sound
sound... ;o)
What Peter's tools has done so far, is to traverse the bytecodes and locate
all the packages that are referenced one way or the other. A task not fit for
humans.
Now, it makes a lot sense to me that the tool is *not* authorative in the
normal case, but defaults to something useful for the average idiot like
myself. I assume you are refering to such defaults... That can probably be
achieved, once the principles are agreed upon.
Private-Package sounds like a short-cut to "full review" of the found
packages
and essentially Export-Package vs Private-Package is analogous with "allow"
vs "deny" in Httpd server.
Further, packaging can be done in three ways;
1. embedding - Put the dependent jar file of classes into the Bundle jar.
2. inlining - Put the dependent classes into the Bundle jar
3. external - Reference to the requirement in Import-Package/Require-Bundle
The use-cases for 1 vs 2 are probably quite "weak", but old farts like Peter,
myself, Richard (sorry guys) grew up in days where resources were not
abundant, bark was used as flour and Jack the Ripper was the real reality
show for whores in London, so we get sick in the stomach when we see a 2MB
jar file included in a bundle just because a single 2kB class is referenced.
The point Peter always tries to make is that the Jar is a Java after-thought,
a hack and that Sun actually had it more right from day 1, in that the
package is the natural "container" of classes, and it was only lacking proper
versioning and other annotations from the start. We should be able to ignore
the Jar itself, take it for what it is; A ZIP file for easy transport.
Maven, other build systems, the JVMs classpath and endless other systems
assumes that the jar file carries additional significance, such as being a
unique identifier of its content, or that the content will only reside in jar
files that follows this particular naming conventions and if the classes
resurface elsewhere, then "elsewhere" is raping someone elses work.
Ok, a lot of rambling...<stop/>
Cheers
Niclas