[jsr294-modularity-eg] Nested superpackages
Glyn Normington
glyn_normington at uk.ibm.com
Fri Apr 27 03:16:33 EDT 2007
Of course I agree entirely with Bryan's perspective as that was pretty
much what I was thinking.
Another angle is that I believe nested superpackages should be omitted
from JSR 294 for Java 7 and added later if there is "customer" demand.
KISS and YAGNI. ;-)
Glyn
Bryan Atsatt <bryan.atsatt at oracle.com> wrote on 27/04/2007 03:09:47:
> My intuition is that the complexity is not worth the benefit.
>
> I've consulted with hundreds of Java developers throughout both Oracle
> and our customer base, primarily regarding class
> loading/visibility/accessibility issues, and I strongly suspect that
> very few would even consider using nested superpackages. Any use of them
> forces most/all participants on that "large" team to understand the
> implications, and this feature is just a bit too subtle for many
> developers, IMO.
>
> With the C++ friend, the relationship between the classes is very direct
> and obvious (but far more restrictive, of course). With superpackages,
> it will no longer be obvious just from looking at a public class just
> who can access it. To me, the extra cognitive load is worth it for
> defining external contracts, but not for internal ones.
>
> I certainly see how I *might* use this feature in our (very large)
> system, but the sad truth is that the fear of the internal fallout more
> than offsets the perceived benefit.
>
> <historical-but-maybe-relevant>
>
> I was part of a 400 person team back in the early 90's creating a new OS
> from the metal up. It was entirely OO, unicode based, made heavy use of
> advanced language features, and pushed the state of the art in OO API
> and framework design. While *we* all "got it", five years, 1000's of
> APIs and 100s of frameworks later we ultimately learned that many
> "average" developers just could not understand it, or see how wonderful
> it all was :^). And really, it was. But it was a lesson I've taken to
> heart...
>
> </historical-but-maybe-relevant>
>
> Whenever possible, KISS.
>
> // Bryan
>
> Michal Cierniak wrote:
> > I agree with the points made by Andreas below. If some code is made
> > to be reused multiple times, it should be considered a unit of
> > deployment and modularized appropriately.
> >
> > OTOH, the ability to structure things within a module in a relatively
> > lightweight manner but with better semantics than those of Java
> > packages is a good thing in my opinion, so I support the notion of
> > nested superpackages.
> >
> > At the same I must admit that Glyn's argument that the benefit must
> > outweigh the cost of extra complexity should be taken by us seriously.
> > I have struggled with the same argument and I am very sympathetic
> > with his point of view. However after thinking about it for a while,
> > I concluded that for me the benefits are significant enough that we
> > should have this feature.
> >
> > I think that we all go here a bit by our intuition and it will be hard
> > for anyone to provide hard evidence one way or the other until
> > developers start to use superpackages.
> >
> > Michal
> >
> > On 4/26/07, Andreas Sterbenz <Andreas.Sterbenz at sun.com> wrote:
> >> Eugene Vigdorchik wrote:
> >>> Nice explanation, Andreas. Still what happens if a superpackage is
> >>> nested in more than one enclosing superpackage? As far as I
understand,
> >>> several deployment units may exist that will each include the
classes
> >>> from nested superpackage.While Strawman says: "it is expected that a
> >>> superpackage and all its nested superpackages will form one
deployment
> >>> unit", it could be more specific to say that classes from nested
> >>> superpackages could be included in other deployment units as well or
> >>> form a separate deployment unit by themselves.
> >> A superpackage cannot be nested in more than one enclosing
superpackage.
> >> Let me explain.
> >>
> >> It is useful to think of a top level superpackage as one unit.
Although it
> >> is internally structured into packages and/or nested superpackages,
they
> >> are not meant to be detached from the enclosing superpackage.
> >>
> >> As a bad analogy, think of a nested class and its enclosing class.
The
> >> nested class cannot live on its own. The same goes for a nested
> >> superpackage, which is nested within one particular superpackage. It
> >> should not be moved elsewhere or distributed on its own.
> >>
> >> What you seem to suggest is that you would like some piece of code X
to be
> >> be a reusable component that can referenced from several different
places.
> >> If that is the case, X is a use case for deployment modules (i.e. JSR
277,
> >> OSGi, etc.) and well addressed by those solutions. In other words, X
would
> >> become a top level superpackage packaged using the appropriate
deployment
> >> solution, and then referenced as a dependency by other deployment
modules.
> >>
> >> Nested superpackage have a different goal, which is information
hiding
> >> between subsystems within a project.
> >>
> >> Andreas.
> >>
> >> _______________________________________________
> >> jsr294-modularity-eg mailing list
> >> jsr294-modularity-eg at cs.oswego.edu
> >> http://cs.oswego.edu/mailman/listinfo/jsr294-modularity-eg
> >>
> > _______________________________________________
> > jsr294-modularity-eg mailing list
> > jsr294-modularity-eg at cs.oswego.edu
> > http://cs.oswego.edu/mailman/listinfo/jsr294-modularity-eg
> _______________________________________________
> jsr294-modularity-eg mailing list
> jsr294-modularity-eg at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/jsr294-modularity-eg
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/attachments/20070427/a45df0ef/attachment.html
More information about the jsr294-modularity-eg
mailing list