[jsr294-modularity-eg] 294 EG conf call, 2009-03-18

Alex Buckley Alex.Buckley at Sun.COM
Fri Mar 20 14:47:00 EDT 2009


// EG members, feel free to add/edit points I haven't noted correctly.


* Attendees

Alex Buckley, Bryan Atsatt, Richard Hall,
  BJ Hargrave, Peter Kriens, Michal Cierniak
Apologies: Daniel Leuck


* Mapping modules to classloaders

The bulk of the discussion was the pros and cons of these options:

1) a runtime module can span classloaders, so multiple deployment 
modules (JARs) can contribute to the same runtime module and each 
classloader-worth of a runtime module can have its own lifecycle;  or

2) a runtime module cannot span classloaders, but the VM consults a 
runtime module object to discover who its friends are (various codenames 
for "friend" are used: group access, multi-module access, module group).

BJ stated the benefits of (1) as independent lifecycles for deployment 
modules in the same layer, and that it helps a module system to be able 
to incrementally load a layer's classes without worrying about the 
content of existing classloaders. Peter stated that this model works for 
'hello world' apps and also large enterprise apps, which is desirable.

Bryan stated the problems of (1) as classes in the same runtime module 
but different classloaders (due to different OSGi bundles) not seeing 
the same metadata (except for name and version). "Implied visibility" 
within a module is broken. This complicates an API which exposes details 
of a runtime module (needs to be indexed by defining classloader) and 
ultimately allows a runtime module to have multiple types with the same 
name and different definitions simultaneously.

In OSGi, 'module' would be a new concept and bundles would have an n:1 
relationship to modules. Bryan feels it would be awkward not to have a 
1:1 relationship between deployment modules and runtime modules. BJ 
points out that fragments already have n:1 relationship between 
deployment artifacts (bundles) and the runtime artifact (classloader).

BJ stated that one concept:
   runtime module (across classloaders)
is more lightweight than two:
   runtime module (within a classloader) + module group

Bryan proposed disallowing a runtime module to span classloaders, but 
allowing nesting of runtime modules within a classloader, via a 
hasModuleAccess(Module) callback to the module system from the VM.


* Face-to-face meeting before EclipseCon in March

Monday 23 March, 9am-evening, at Sun's Santa Clara campus.

- Requirements for sharing, accessibility, and visibility
- Module:classloader mapping
- Module-system-specific dependencies / opaque dependencies in source
- Compile-time use of a module system

Alex


More information about the jsr294-modularity-eg mailing list