[jsr294-modularity-eg] Static compilation
Glyn Normington
glyn_normington at uk.ibm.com
Sat May 5 12:44:48 EDT 2007
"Michal Cierniak" <cierniak at google.com> wrote on 04/05/2007 20:57:14:
> JSR-277 already has a sealing assumption that would probably make my
> example not work although I must say that I haven't thought about this
> detail very much yet. It's great that Rob's comments started this
> discussion and we can think of this issue in terms of JSR-294. And
> yeah, if there are no problems with this, we should design in some way
> to seal module membership at the JSR-294 level to make writing static
> compilers easier.
Ok.
>
> Glyn,
> I assume that OSGi provides mechanisms that make Rob and Vitaly happy?
Unfortunately, no. OSGi is essentially a (highly sophisticated) custom
class loader network so is not sufficient.
Glyn
>
> Michal
>
> On 5/4/07, Glyn Normington <glyn_normington at uk.ibm.com> wrote:
> >
> > "Michal Cierniak" <cierniak at google.com> on 02/05/2007 17:52:32:
> >
> >
> > > On 5/2/07, Glyn Normington <glyn_normington at uk.ibm.com> wrote:
> > > > "Michal Cierniak" <cierniak at google.com> wrote on 01/05/2007
18:33:07:
> > > >
> > > > > We haven't talked about such details but my
> > > > > assumption was that it should be possible to dynamically load
a
> > class
> > > > > that extends any non-final class including those classes that
are
> > not
> > > > > exported.
> > > >
> > > > My expectation is different, as you may have guessed.
> > >
> > > Glyn,
> > >
> > > I think that your expectation is completely reasonable but I think
> > > that we would need more mechanisms to enforce this problem because
the
> > > JSR-277 APIs as presented in the EDR allow you to arrive at the
> > > problem described by me. Here's some pseudocode that shows my
> > > scenario (it's pseudo in the sense that I didn't look up carefully
the
> > > APIs or tried to compile it, so that are probably some typos
there):
> > >
> > > class A {
> > > // class is in a module M and is not exported
> > > public void F() {
> > > ClassLoader cl = A.class.getClassLoader(); // M's classloader
> > > byte[] b = getBytes(); // bytes defining a class that
subclasses A
> > > Class b = cl.defineClass("B", b, 0, b.length);
> > > }
> > > byte[] getBytes() { ...}
> > > }
> > >
> > > In this example, I use A's classloader to create class B which is a
> > > subclass of A.
> > >
> > > Dealing with classloaders is always tricky, so I may be missing
> > > something here. What do you think about my example?
> >
> > Thanks for the example as it makes discussion easier.
> >
> > I agree that more mechanisms would be required to enable static
compilation,
> > but I would have thought any static compilation system would constrain
the
> > contents of modules it was compiling pretty strongly to prevent the
contents
> > (classes in this example) changing at runtime. I probably see things
> > differently to Rob Yates, but I wouldn't expect JSR 294 to provide a
"free
> > ride" for a static compilation system - just give it the constructs to
hang
> > off. I'd expect static compilation to check its own constraints of
modules
> > it was compiling and also use some kind of sealing mechanism to
preserve the
> > integrity of the compiled output.
> >
> > Glyn
> >
> >
> >
> > ________________________________
> >
> >
> >
> >
> > 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
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > 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/20070505/eb62c22d/attachment.html
More information about the jsr294-modularity-eg
mailing list