[Isolate-interest] any isolation API in J2SE.next will NOT be N:1 style

Pete Soper psoper@pjs.East.Sun.COM
Thu, 21 Oct 2004 16:05:53 -0400


Hi Sutanu,

You wrote:

> I think most in the community will be happy as long as
> "any" implementation is available in Mustang.

That's encouraging.

> Now in the "simple" implementation you mentioned, will
> there be any classloader (bootstrap,extension,system)
> sharing with the root isolate ?

This is a tricky question that's easy to misunderstand and my answer may
be easy to misunderstand. So let's expect to iterate over this a bit if
I don't get this clear enough or have missed your point.

As we probably all know by now, isolates don't share Java state, period. That 
is, each isolate's object graph and mutable statics, at a minimum, are 
absolutely unreachable by any other isolate (I mean any other isolate 
corresponding to any instance of the Isolate class. For example, given two 
isolates there could be four instances of Isolate corresponding to them: two 
in each isolate).

So I assume you're asking about metadata sharing; that is, sharing of the
immutable data and codebase state and other things like that that can loosely
be called the runtime support for Java program execution.

This is orthogonal to both the JSR-121 architecture and it's implementation, as
are general labels like "performance", "footprint", "startup", etc. 

The way I've explained this in the past is that, although these things are 
orthogonal to isolation, they tend to get discussed and, in some cases, worked 
on at the same time. 

I believe the general label "scalability" will have a correlation with 
isolation, but that will take time to become apparent and it's more about
being able to design large programs that function properly than a belief 
that there will be some reduction in the orthogonality mentioned above. I
think there's an additional way for isolation to drive scalability but 
I'll have to defer discussion of that until my thoughts are completely straight.

Some modest cross-process sharing of metadata (e.g. class info and some 
internal representations of same) is in Tiger already. It's completely
transparent and helps a lot or a little or not at all depending on what classes
your app uses and other overhead factors. And it automatically leverages as 
many JVM instances as are visible to an admin domain, so practically any
JSR-121 impl using Sun's J2SE might benefit from that without the need for 
programmers doing anything to enable the benefit (YMMV). 

There might be more of this cross-process sharing in Mustang, but believe me, 
I don't know the probability or details. 

My advice is to be patient and look for eventual access to the source code to 
know what's getting into Mustang. Communication from a Mustang technical 
spokesperson, when he/she/they are designated will be useful too. 

(I don't mean to imply Java might be going "open source", I mean there might 
be early source access schemes again, like the "CAP" program that was run for 
Tiger.)

-Pete